Как подготовить существующую базу данных для поиска с учетом местоположения?

Требование: в настоящее время я работаю над приложением, которое содержит более 30000 записей. Требуется наличие поиска на основе местоположения. Например, в пределах 5 миль от моего текущего местоположения.

Как будет осуществляться доступ к этой службе. Доступ к этой службе будет осуществляться как из Интернета, так и из приложения для iOS.

Платформы разработки:

  • Веб: Cakephp, php и python
  • БД: MySql
  • iOS: цель-c
  • В настоящее время используются внешние библиотеки: Google Maps Javascript Api v3

Поиск на основе местоположения

Я провел некоторое исследование по этому поводу и буду использовать для этого формулу Хаверсина. Но для того, чтобы формула Хаверсина была эффективной, мне нужен обратный гео-код для всех моих записей в моей БД. Единственная служба обратного геокодирования, которую я когда-либо использовал, принадлежит Google, и я точно знаю, что они не позволяют этого, не отображая результаты на своей карте.

Примечание. API геокодирования можно использовать только вместе с картой Google; результаты геокодирования без отображения на карте запрещены.

  1. Существуют ли другие API или службы, которые я могу использовать для обратного геокода всех этих записей?
  2. 30000 - это большое число. Я, очевидно, буду использовать cron для этого в течение определенного периода времени, но, поскольку этот запрос будет с того же IP-адреса, может ли это быть проблемой?

Любая помощь по этому поводу будет принята с благодарностью.

Обновление 1 #

Я нашел этот вопрос SO, который рекомендует OpenStreetMap Nominatim


person Kishor Kundan    schedule 10.03.2013    source источник


Ответы (1)


Вы можете использовать всевозможные услуги геокодирования, но, скорее всего, вам придется заплатить. Ознакомьтесь с Cloudmate. Они могут сработать в вашей ситуации. Если это коммерческое предприятие, возможно, лучше потратить немного денег и убедиться, что вы получаете достоверные данные.

30 000 записей не займут так много времени. Если нет ограничения скорости, это должно быть сделано за 10-20 минут. Я геокодировал 2000 записей по одной странице (100 на каждой странице), и это заняло 5 минут.

Некоторое время назад я создал интерфейс администрирования локаций. Он не закончен, и код не самый лучший, но он может дать вам отправную точку. Он использует Google для геокодирования, но может быть легко заменен на любой другой сервис.

http://galengrover.com/projects/Store-Locator-Admin/

https://github.com/galen/Store-Locator-Admin

person Galen    schedule 10.03.2013