Найти все места рядом с моим местоположением GPS - PullRequest
1 голос
/ 01 марта 2011

На самом деле у меня есть миллионы записей о людях в моей базе данных сервера, и я хочу получить данные о тех людях, которые находятся на расстоянии 5 миль от меня (я имею в виду круг с радиусом 5 миль) ...

Я отправляю эти данные на iPhone через веб-сервис ...

Скажите, пожалуйста, как это сделать на моем PHP-сервере ....

Ответы [ 2 ]

7 голосов
/ 01 марта 2011

Вероятно, это может помочь вам

Пусть, например, у вас есть входная широта и долгота 37 и -122 в градусах.И вы хотите искать пользователей в пределах 25 миль от текущей заданной широты и долготы.

SELECT item1, item2, 
    ( 3959 * acos( cos( radians(37) ) 
                   * cos( radians( lat ) ) 
                   * cos( radians( lng ) 
                       - radians(-122) ) 
                   + sin( radians(37) ) 
                   * sin( radians( lat ) ) 
                 )
   ) AS distance 
FROM geocodeTable 
HAVING distance < 25 
ORDER BY distance LIMIT 0 , 20;

Если вы хотите найти расстояние в км.Затем замените 3959 на 6371. В приведенном выше запросе.

Получить ближайшие места на Картах Google, используя пространственные данные MySQL

2 голосов
/ 01 марта 2011

Имея миллионы записей о людях в базе данных вашего сервера (надеюсь, вы придерживаетесь законов о защите данных), вам потребуется уменьшить нагрузку на вычисление всех этих расстояний; в противном случае вам необходимо выполнить расчет для каждой из этих миллионов записей.

Используйте PHP для вычисления "ограничивающего прямоугольника", который можно использовать для выбора подмножества вероятных кандидатов из ваших записей миллионов людей, а затем только для расчета расстояния для этого подмножества записей людей. См. эту статью на веб-сайте с подвижным типом, например, PHP-код, описывающий, как это сделать, и отличное описание того, как этот метод действительно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...