2013-05-30 5 views
0

У меня есть таблица базы данных заполнены адресами, таблица составляет более 4000 записей длинныеГеокодирование очень длинный список

мне интересно, лучший способ получить адреса сравнить его с полем поиска и сортировки их по расстоянию от местоположение поля поиска? В документации GoogleAPI говорится, что запросы ограничены примерно 25 000 в день, это означает, что я могу выполнять только 7 запросов в день?

+0

И вы можете использовать Google API только в том случае, если вы показываете карту Google. - В какой стране находятся адреса? – Matt

+0

@Andrew Когда вы определяете расстояние, вы ищете расстояние до улицы или воздушное расстояние или даже прямолинейное расстояние? – Jeffrey

ответ

1

По-моему - да. Google умеет вычислять расстояние между 2 LatLng, потому что дает вам расстояние с помощью улиц и дорог, а не расстояние по прямой между 2 точками (что было бы легко рассчитать в php).

Сохранение LatLng из этих 4000 адресов не принесет вам никакой пользы, потому что вам все равно нужно спросить Google о расстоянии от адреса пользователя до каждого из них. Вы не можете рассчитать это сами, даже если у вас есть все LatLng (вам нужна карта ).

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

...

Хорошо, у меня есть идея:

  1. ли хранить LatLng-х каждого из 4000 мест.
  2. Магазин Расстояние между всего 4000 мест (так что если вы выберете один, вы можете получить список всех остальных, заказанных по расстоянию).
  3. Когда вы получаете адрес от пользователя, конвертируете его в LatLng и используете простую математику, чтобы найти ближайший местоположение в прямо линия.
  4. Используя список расстояний до всех других местоположений из базы данных, попросите Google получить расстояние доступа к этому местоположению и примерно 10-20 ближайших к нему мест; для остальных используют расстояния от ближайшего к базе .

Таким образом, вы получите первые 10-20 точных расстояния до ближайших мест от пользовательского ввода, а остальное будет выведены из базы данных - они фактически было бы расстояние от места ближе к в других местах.

+0

К сожалению, я не могу даже построить массив, потому что, когда я импортирую таблицы или использую xml-версию, я получаю Balloc(), чтобы не выделить память, которую мы размещаем в общем пакете хостинга, эти переменные имеют только адреса.Сначала мне нужно преобразовать их в геокод, и это закончилось не так хорошо. Его для поиска в местах предопределенных мест. –

0

Я считаю, что поскольку адреса не так сильно меняются, вы можете где-то кэшировать широту/долготу и ссылаться на них вместо повторных запросов. Пожалуйста, уточните, если есть другие смягчающие условия, конечно.

+0

Я думаю, что это подходит как ответ. У меня была аналогичная проблема с геокодированием большого списка почтовых индексов, и мне было проще просто геокодировать каждый при сохранении и сохранять результат в БД. – Turnerj

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