Радиус 40 километров с использованием широты и долготы

Возможный дубликат:
Радиус нескольких точек широты/долготы
расчет расстояний в запросах mysql
выберите в пределах 20 километров в зависимости от широты/долготы

У меня есть таблица MyISAM, в которой хранятся данные. Данные включают широту и долготу для Карт Google. То, что я пытаюсь достичь, - это выбрать все объекты в радиусе 40 километров выборки широты и долготы.

Спасибо!

Ответы

Ответ 1

Я использую этот запрос, чтобы получить все точки в пределах $radius вокруг $lat/$lng:

SELECT
    *,
    ( 6371 * acos( cos( radians({$lat}) ) * cos( radians( `lat` ) ) * cos( radians( `lng` ) - radians({$lng}) ) + sin( radians({$lat}) ) * sin( radians( `lat` ) ) ) ) AS distance
FROM `positions`
HAVING distance <= {$radius}
ORDER BY distance ASC

6371 - радиус Земли im km. И я его не изобрел: http://code.google.com/intl/en/apis/maps/articles/phpsqlsearch.html https://developers.google.com/maps/articles/phpsqlsearch_v3#findnearsql (изменить: URL-адрес изменен)