Лучший способ получить близлежащие места? - PullRequest
4 голосов
/ 06 февраля 2012

В моем приложении мы требуем, чтобы пользователь ввел почтовый индекс для запроса ближайших местоположений.Мы используем объект LatLng почтового индекса, чтобы действовать как источник, и затем мы рисуем воображаемую «ограничивающую рамку», чтобы запросить базу данных для всех местоположений в этом диапазоне.Эти местоположения будут отображаться в виде маркеров на карте, которые пользователь сможет видеть.Мы хотим ограничить результаты до 10-15.

Пример базы данных:

database

Я думал об использовании оператора MySQL BETWEEN для запросав пределах ± 2 градусов по вертикали и горизонтали, а затем LIMIT n этих результатов, ИЛИ Я мог бы вытащить всю базу данных в PHP и затем абстрагировать ее, используя range().

Я не совсем уверен, каков наилучший способподходите к этому, поэтому я был бы признателен, если бы кто-то из вас имел дело с этим сценарием ранее и мог бы дать некоторое представление о том, как его решить.

1 Ответ

6 голосов
/ 06 февраля 2012

Сделай это в sql

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

...