Я создаю приложение с возможностью поиска Geo Proximity Search, используя PHP в качестве языка сценариев сервера и MySQL в качестве Databse.
Рассмотрим ситуацию:
Где у нас есть определенный набор объектов, имеющих положения широты и долготы, связанные с соответствующими объектами. Определяя детали местоположения, такие как страна и / или город вместе с диапазоном / радиусом в КМ, мы получаем объекты, лежащие в пределах этого радиуса / диапазона, используя запрос MySQL, например:
SELECT [columns]
FROM [column]
WHERE 1=1
AND 3963.191 *
ACOS(
(SIN(PI() * [latitude] / 180) * SIN(PI() * [column].latitude / 180)) +
(COS(PI() * [latitude] /180) * cos(PI() * [column].latitude / 180) * COS(PI() * [column].longitude / 180 - PI() * [longitude] / 180)) )
<= 10
Приведенные выше расчеты дадут объекты, которые находятся в пределах 10 км от центра страны / города на земле.
Теперь предположим, что у меня есть один объект (с широтой и долготой), который находится не в этой области 10 км, но, например, в 15 км от центра страны / города на земле. Этот объект имеет диапазон обслуживания 10 км (предоставление услуг до 10 км).
Теперь возникает вопрос: если я ищу объекты в диапазоне 10 км от центра страны / города, тогда объект (расстояние 15 км от центра страны / города), имеющий диапазон обслуживания 10 км, также должен быть включен в поиск .
Как я могу сделать это возможным? У меня есть широта / центр города, длинные координаты, диапазон / радиус (в котором мы должны найти объекты) и объект, имеющий радиус доставки (например, 10 км) и соответствующие ему координаты.
Можете ли вы рассказать мне, как это сделать с помощью PHP, MySQL?