Лучший способ найти близлежащие места?


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

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

database

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

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

Author: Jake Bellacera, 2012-02-06

1 answers

Сделайте это в 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

 5
Author: thenetimp, 2012-02-06 21:29:42