MySQL — хранить координаты, чтобы избежать дубликатов

Я пытаюсь создать тег местоположения, как Instagram …

Я выбираю координаты на основе функции Google Api getBounds() как это:

(примечание: swlat, swlng, nwlat, nwlng = a, b, c, d)

  SELECT * FROM table WHERE
(a < c AND lat BETWEEN a AND c) OR (c < a AND lat BETWEEN c AND a)
AND
(b < d AND lng BETWEEN b AND d) OR (d < b AND lng BETWEEN d AND b)

Прежде чем вставлять координаты, я проверяю, присутствуют ли данные в таблице, чтобы избежать дублирования. Однако проблема в том, Google Api а также MapKit вернуть разные координаты при поиске в определенном месте.

Прямо сейчас Я храню местоположение name проверить на наличие дубликатов. Что может сработать, но, может быть, есть лучший способ 🙂

Так что мои вопросы:

  • Как я могу хранить координаты, чтобы избежать как можно меньше дубликатов. Может быть, есть такой идентификатор, как «place_id» (в Google API), который может работать в обоих случаях при использовании Google Api или MapKit
  • мне действительно нужно хранить название местоположения, использует ли Instagram какой-либо API для получения информации о местоположении?

Спасибо 🙂

0

Решение

Решение действительно заключается в том, как вы реализуете свою собственную базу данных — для любой заданной координаты широты и долготы есть только одно местоположение.
Но вы не можете заставить Google или MapKit измениться. поэтому вы всегда будете зацикливаться на этом несоответствии, и поиск возможного текстового значения name = наподобие ‘% placename%’ всегда будет иметь низкую производительность и не будет гарантированно настолько точным, насколько вас справедливо беспокоит.
Поэтому я бы посоветовал вам создать отдельные таблицы «местоположений» для Google и MapKit и попросить пользователя отфильтровать их из графического интерфейса.
Также рекомендуется индексировать столбцы lat и lng для каждого.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]