Выполните запрос на геокодирование от имени пользователя / гостя, а не от сервера

В настоящее время я создаю небольшое сообщество, где пользователи могут отмечать определенные позиции на карте.

Чтобы сохранить точки карты, мне нужно сохранить широту и долготу в моей базе данных, но пользователь не знает широту и долготу, поэтому мне приходится использовать (обратный) API геокодирования.

Я заглянул на geonames.org, но результаты полнотекстового поиска ... ну, не так хороши. Если я ищу, например, «München», я получаю около 5 результатов с таким же заголовком / именем.

Тестирование того же города в Google Maps Api показало, что результаты намного лучше, поэтому я хочу использовать Google Gecoder.

Единственная оставшаяся проблема заключается в том, что на странице документации указан лимит - максимум 2500 запросов в день.

Что ж, это звучит много, но если мое сообщество станет больше, это не так уж и много ...

Итак, мой вопрос: можно ли выполнить запрос геокодирования к Google Maps Api с использованием IP-адреса гостей, чтобы Google не считал его запросом с моего сервера?

В настоящее время «мой способ» геокодировать что-либо - получить отдельный файл PHP через AJAX (jQuery), передав ему строку поиска. Затем файл PHP получает результаты с помощью «simplexml_load_file» и затем возвращает их в основной документ.

Если вы посмотрите на этот геокодер: http://www.gpsvisualizer.com/geocoder/

Вы можете увидеть в нижнем колонтитуле следующее описание: «Эта форма использует код JavaScript-On-Demand (JSON), который заставляет ваш веб-браузер делать запрос (а не gpsvisualizer.com), что означает, что ваши запросы не учитываются. против лимита моего сервера ".


person Patrick    schedule 14.11.2012    source источник
comment
Вы должны использовать javascript api, если хотите геокодировать с клиента. developers.google.com/maps/documentation/javascript/geocoding   -  person Kevin B    schedule 14.11.2012
comment
Итак, если я использую Javascript Way, Google думает, что запрос выполняется гостем?   -  person Patrick    schedule 14.11.2012
comment
Да, потому что это делает гость.   -  person Kevin B    schedule 14.11.2012
comment
Да, это делает клиент, но это не значит, что он не использует вашу квоту. Посетитель по-прежнему запрашивает ваш URL-адрес, ключ API и т. Д., Поэтому он все еще использует ваше quato. Я не думаю, что для этого есть способ.   -  person Onur Topal    schedule 14.11.2012
comment
@KevinB Похоже, библиотека JavaScript Карт Google создает запрос с токеном подписи, вероятно, на основе ключа API. Вполне возможно, что клиентские JS-запросы учитываются при ограничении вашего домена / ключа, поскольку сильно запутанная библиотека Google Maps знает ваш ключ и домен.   -  person apsillers    schedule 14.11.2012
comment
Но я не понимаю, как gpsvisualizer.com/geocoder это делает? Это бесплатный геокодер, и я никогда не превышал лимит запросов с его помощью! Здесь творится какое-то волшебство :-)   -  person Patrick    schedule 15.11.2012


Ответы (2)


Коротко: нет, извините.

Альтернатива: вы можете использовать javascript geolocationAPI браузеров (если они поддерживаются) для получения координат. Это позволяет использовать, например, api геокодера Google. Некоторая отправная точка может быть здесь: страница поддержки и ссылок

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

person BananaAcid    schedule 14.11.2012
comment
Спасибо за ответ, но как / почему он работает с gpsvisualizer.com/geocoder? Я не понимаю ... геолокация браузера - это не вариант, мне не нужна позиция пользователя, мне нужна позиция, может быть, Париж, Франция, потому что пользователь был там в отпуске. - person Patrick; 15.11.2012
comment
документация google geocoding описывает, как строка используется для получения координат местоположения в первый абзац Что такое геокодирование ?. В следующем разделе показаны обязательные параметры и объясняются ›адреса и координаты координат. - person BananaAcid; 26.11.2012
comment
аналогичная ссылка есть на предоставленном вами gpsvisualizer.com/geocoder/ URL-адресе устаревшего Yahoo! API геокодирования, используемый этим конкретным проектом. Альтернатива: в сети доступны списки координат городов. - person BananaAcid; 26.11.2012
comment
Как было сказано выше, это возможно, это все в джунглях справочных страниц Google, вам просто нужно найти это :) - person Patrick; 03.12.2012

Что ж, я кое-что нашла. Похоже, Кевин Б. был прав.

Посмотрите на это: https://developers.google.com/maps/articles/geocodestrat?hl=de

В соответствии с этим...

Когда использовать геокодирование на стороне клиента

Основной ответ - «почти всегда». Поскольку ограничения геокодирования устанавливаются для каждого сеанса пользователя, нет риска, что ваше приложение достигнет глобального ограничения по мере роста вашей пользовательской базы. Геокодирование на стороне клиента не будет ограничено квотой, если вы не выполните пакет запросов геокодирования в рамках пользовательского сеанса. Поэтому при выполнении геокодирования на стороне клиента обычно не нужно беспокоиться о своей квоте.

... это возможно, просто используя Javascript API!

Пользователь ищет "Париж, Франция", API Google JS возвращает широту и долготу, я сохраняю его в БД (кэширование) и показываю на карте Google, поэтому мне не нужен запрос геокодирования на стороне сервера!

person Patrick    schedule 15.11.2012