Я пытаюсь выяснить, как реализовать поиск местоположений в пределах города и в радиусе вокруг города.У меня уже есть таблица с городами:
города таблица:
id: INT
name: VARCHAR(20)
lat: FLOAT
lng: FLOAT
У меня также есть таблица с местоположениями.
местоположения таблица:
id: INT
city_id: INT
name: VARCHAR(30)
lat: FLOAT
lng: FLOAT
Обычно координаты города указаны для его центр .Это нормально, так как, когда у меня есть поиск местоположений для определенного города, я могу использовать city_id в таблице locations
.Однако, когда у меня есть поиск в радиусе вокруг города, результаты не будут достаточно точными.Если город относительно маленький, это не будет проблемой.Однако, если город большой, и поиск ведется на 10 км вокруг города, скорее всего, результаты будут только для самого города.
У меня вопрос, как справиться с этой ситуацией, , чтобы результаты были более точными ?
То, о чем я думал, имеет диаметр длякаждый город (который охватывает территорию города) хранится в таблице cities
.Когда я ищу места вокруг города, я сначала выбираю радиус (назовем его cityRadius
) для целевого города.Затем я бы добавил его в радиус поиска (скажем, searchedRadius = 10
).И тогда я выполню запрос, который будет искать места вокруг центра города, в радиусе cityRadius + searchedRadius
.У меня есть две проблемы с этим:
- Я не могу найти этот тип информации (радиус, охватывающий территорию города, в частности, для городов в Германии).
- Чувствуется себя немного хакером.Я думаю, что есть лучший способ сделать это, но у меня проблема с его поиском.
Мой стек: PHP 7.2, Mysql 5.7.
Заранее спасибо!