Соответствие long & lat в радиусе - PullRequest
1 голос
/ 13 апреля 2011

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

У меня есть база данных координат - когда я вхожу в пригород, я хочу отобразить все совпадения в пределах заданного радиуса.(то есть поиск в базе данных длинных / широтных координат и возврат всех координат, которые находятся в радиусе x длинного / широты пригорода, в котором искали)

Я не уверен, как этого добиться или с чего начать?

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

Ну, это действительно зависит от того, какую базу данных вы используете. общая техника заключается в использовании функции значения масштабатора, которая использует формулу, такую ​​как:

distance = ACOS(SIN(lat1)*SIN(lat2)+COS(lat1)*COS(lat2)*COS(lon2-lon1))*6371

тогда вы можете написать запрос как:

select * 
from locations 
where mydistancefunction(lat1,lng1,locations.lat,locations.lng) < @radius
0 голосов
/ 20 апреля 2011

Знаете ли вы о mysql пространственных расширениях ? Попробуйте создать пространственный столбец в вашей таблице, т. Е. Укажите и затем используйте функции, которые предлагают пространственные расширения, чтобы не изобретать колесо

...