найти записи с рельефом и logintude

Возможный дубликат:
Самый быстрый поиск расстояния по широте / долготе?

У меня есть таблица местоположений, которая состоит из всех местоположений с их значениями широты и логарифма. Я получаю конкретные места lat. LOGN. и радиус. Теперь я хочу найти все рекодеры в этом радиусе и для этого, учитывая лат. и долго. значения. Я использую следующий запрос. Но я не уверен, дает ли он мне правильные результаты или нет.

Из данного лата и долго я обнаруживаю lat.min и max as –

$lng_min = $longitude - $radius / abs(cos(deg2rad($latitude)) * 69); $lng_max = $longitude + $radius / abs(cos(deg2rad($latitude)) * 69); $lat_min = $latitude - ($radius / 69); $lat_max = $latitude + ($radius / 69); 

и затем используйте следующий запрос –

 SELECT * FROM merchant_branches,locations where locations."coorX" BETWEEN $lng_min AND $lng_max AND locations."coorY" BETWEEN $lat_min AND $lat_max and merchant_branches.location_id = locations.id 

где идентификатор местоположения является внешним ключом в таблице merchant_brach.

Я смущен результатами, которые я получаю. Плз помоги мне.

Благодарю.

    Вы должны использовать что-то подобное, чтобы получить ближайшие результаты в определенном месте

     $query = sprintf( "SELECT foo, 6371 * ACOS( Cos(RADIANS(lat)) * COS(RADIANS(%f)) * COS(RADIANS(%f) - RADIANS(lng)) + SIN(RADIANS(lat)) * SIN(RADIANS(%f)) ) * 1000 AS distance FROM `%s` ORDER BY distance", $lat, $lag, $lng, $table ); 

    Вы должны установить $lat , $lng и $table соответствии со структурой вашей таблицы и, возможно, установить предел для результата.

    Вы получите подробное объяснение здесь Geo Distance Search с MySQL .