2014-12-11 4 views
-1

Я пытаюсь выбрать информацию из базы данных mysql на основе расстояния до указанной координаты lat/lon.sql поиск на основе расстояния от координат лат-лона

Все значения в таблице будут иметь столбец lat/lon, поэтому используя текущие lat и lon пользователя, я хочу получить все результаты из таблицы, скажем, в пределах 1-мильной близости от указанной координаты.

Я нашел этот код, но я хотел бы, чтобы кто-то объяснил это в очень простых выражениях, например, где я помещаю значение lat и lon, я хочу быть моим координатором, как определить, насколько большой радиус поиск и каково каждое значение в запросе?

SELECT *, (3959 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos(radians(long) - radians('".$lng."')) + sin(radians('".$lat."')) * 
sin(radians(lat)))) 
AS distance 
FROM carpark WHERE distance < 15 ORDER BY distance 

Я понимаю, это уже задавался, но мне еще нужно, чтобы получить полное понимание, так что я могу impliment его в своем коде большое спасибо заранее за Быстродействие и приносим извинения за inconvinence

ответ

0

$ lat и $ lng - координаты фокуса, 15 - максимальный диапазон (1 в вашем примере). Lat и Long - это имена столбцов в таблице, которые называются «carpark». Я не уверен, на каких единицах рассчитывается расстояние.

Редактировать: выглядит так, что этот расчет находится в милях. Чтобы выполнить поиск километров вместо миль, замените 3959 на 6371

Надеюсь, что это поможет.

+0

Большое спасибо за ваш ответ, это очень помогло, оставив только одну вещь. Знаете ли вы, как я могу определить устройство для используемого расстояния. – user2692997

+0

Я думаю, что это мили при использовании постоянной 3959. Используйте 6371, если вам нужны километры. Вы можете протестировать, установив две координаты на известном расстоянии друг от друга. –

Смежные вопросы