2013-05-26 2 views
0

Я начинаю новый проект рельсов, который тесно интегрируется с Google Maps. Когда пользователь ищет город, я пытаюсь решить, нужно ли геокодировать адрес «на лету» (используя API геокодирования Google) или искать город в базе данных, предварительно заполненной lat/long. После того, как у меня будет lat/long, я закрою его на Google Maps.Геокодирование на лету и поиск базы данных

Какой, по вашему мнению, будет работать лучше? При поиске в базе данных таблица должна быть довольно большой, чтобы учитывать все города, в которых я нуждаюсь, и мне пришлось бы отказаться от API геокодирования в любом случае для любых городов, которых у меня нет в моей базе данных.

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

ответ

0

Размер таблицы не представляет проблемы, если вы указали название города.

Производительность индексированных запросов базы данных превысила доступ к API в Интернете.

Другое дело, что у вас есть лучший контроль найденных данных. Например, если вы найдете более одного подходящего города, вы можете предоставить выбор своих записей в БД, в то время как Google иногда сообщает об этом или какой-либо случайный (или, по крайней мере, неожиданный) результат поиска.

Вот почему мне пришлось перейти на первую стратегию поиска БД в одном из моих проектов: Google не разыскивал адреса моих клиентов, а что-то общее (например, небольшие деревни с тем же именем, что и ожидалось больше)

0

Почему бы не сделать так?

Укажите геокодированную информацию в вашей базе данных как «Адресный кэш», а затем вызовите API геокодирования Google Maps, только если этот адрес еще не существует в вашей базе данных. Это тот подход, который я использовал в своих Google Maps для интеграции SugarCRM. Это работает хорошо. BTW, API геокодирования Google Maps впечатляет быстро, поэтому пользователи редко замечают. Тем не менее, по запросу есть ограничение по 2500/сут, и оно также дросселируется примерно до 10 запросов в секунду. Поэтому, учитывая эти ограничения, я думаю, что комбинированный подход к базе данных/геокодированию в конечном итоге намного лучше.

https://github.com/jjwdesign/JJWDesign-Google-Maps

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