Я думаю, было бы проще создать пользовательский модуль. Как правило, вы хотите использовать формулу Haversine относительно вашей долготы и широты:
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance
FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
Это от http://code.google.com/apis/maps/articles/phpsqlsearch.html, и делает это:
найдет ближайшие 20 мест, которые находятся в радиусе 25 миль от координаты 37, -122. Он вычисляет расстояние на основе широты / долготы этой строки и целевой широты / долготы, а затем запрашивает только те строки, в которых значение расстояния меньше 25, упорядочивает весь запрос по расстоянию и ограничивает его 20 результатами. Для поиска по километрам вместо миль замените 3959 на 6371.
Я пробовал этот форум с MySQL, и он работает очень хорошо, у меня даже есть полноценный модуль, работающий на него, но, к сожалению, он работает на Drupal 7 и полностью полагается на систему управления данными, поэтому не будет полезен в вашем случае .