Геокодирование – это процесс преобразования адресов (например, почтовых) в географические координаты (широту и долготу), которые можно использовать для размещения маркеров на карте или указания ее положения. В этом документе рассматриваются вопросы, связанные с геокодированием адресов. В ней описывается, когда лучше использовать Geocoding API, а когда – сервис автозаполнения мест в Places API.
Как правило, Geocoding API используется для геокодирования полных адресов (например, "48 Pirrama Rd, Pyrmont, NSW, Australia"). Используйте сервис автозаполнения мест в Places API, если вам нужно геокодировать неполные адреса или если ваше приложение чувствительно к задержкам, например при обработке пользовательского ввода.
Варианты использования и рекомендуемые API
| Варианты использования и рекомендуемые API | |
|---|---|
| Отвечать в реальном времени на запросы пользователей (в том числе на неполные, неверно написанные или отформатированные адреса, введенные пользователем). | Используйте сервис автозаполнения мест в Places API, чтобы получить идентификатор места, а затем Geocoding API, чтобы преобразовать идентификатор места в координаты. |
| Автоматические системы, обрабатывающие полные и однозначные почтовые адреса (например, "48 Pirrama Rd, Pyrmont, NSW, Australia"). | Используйте веб-сервис Geocoding API. |
| Автоматизированные системы, обрабатывающие неточные запросы (например, неполные, неправильно отформатированные или с ошибками адреса). | Рекомендуем использовать веб-сервис Geocoding API для автоматических систем. Однако автоматические системы с большим количеством неточных, неполных или неправильно написанных запросов, полученных от ввода данных пользователем, могут выиграть от добавления интерактивного виджета автозаполнения мест, который позволяет пользователям выбирать результат и, таким образом, избегать ошибок в адресах. |
| Проблемы с задержкой при использовании Directions API (устаревшая версия) или Distance Matrix API (устаревшая версия), когда пункты отправления, назначения или путевые точки указаны в виде строк адреса. | Чтобы уменьшить задержку геокодирования, используйте сервис Place Autocomplete из Places API для получения идентификаторов мест, а затем передайте эти идентификаторы в Directions API (устаревшая версия) или Distance Matrix API (устаревшая версия). |
Реагировать на действия пользователя.
Приложения, которые реагируют на действия пользователя в реальном времени, должны учитывать два основных фактора, влияющих на выбор API:
- Пользователь обычно вводит адрес постепенно (например, "123 Main Street"), поэтому возможность геокодировать неполные и неоднозначные адреса позволяет ему быстрее получать результаты.
- Приложения, которые реагируют на ввод данных пользователем, чрезвычайно чувствительны к задержкам.
Эти два фактора делают сервис автозаполнения мест в Places API идеальным решением для реагирования на ввод пользователя. Сервис автозаполнения мест предназначен для того, чтобы возвращать несколько возможных вариантов и позволять пользователю выбирать между ними. Places API можно настроить так, чтобы он искал только геокоды или адреса, исключая компании. Кроме того, функцию автозаполнения можно настроить так, чтобы она возвращала результаты, относящиеся к определенному местоположению. Places API возвращает идентификатор места, который можно передать в веб-сервис Geocoding API в качестве однозначно определенного местоположения. В ответ вы получите подробную информацию об адресе и его геокодирование в координаты широты и долготы. Идентификаторы мест также можно передавать в другие API, например в Directions API (устаревшая версия) и Distance Matrix API (устаревшая версия) (см. раздел Как уменьшить задержку).
Геокодирование адресов в Geocoding API имеет гораздо более высокую задержку и дает менее точные результаты для неполных или неоднозначных запросов, поэтому не рекомендуется для приложений, которые должны отвечать на ввод пользователя в реальном времени.
Подробнее о сервисе автозаполнения мест для Android, iOS, JavaScript и Places API…
Автоматические системы
Автоматические системы, обрабатывающие полные и однозначные почтовые адреса. Однозначные запросы, например полные строки почтовых адресов (такие как "48 Pirrama Rd, Pyrmont, NSW, Australia"), лучше всего обрабатываются с помощью веб-сервиса Geocoding API. Серверная часть геокодирования адресов обеспечивает более широкий охват адресов по всему миру и оптимизирована для получения высококачественных результатов по таким полным и однозначным запросам.
Автоматическая система, обрабатывающая неоднозначные запросы. Неоднозначными считаются запросы, содержащие адреса с ошибками, неполные или неправильно отформатированные адреса. Для автоматических систем рекомендуем использовать веб-сервис Geocoding API. Однако Geocoding API не предназначен для обработки неоднозначных запросов и может выдавать менее точные результаты или не выдавать их вовсе. Если ваша автоматическая система обрабатывает большое количество неоднозначных запросов, полученных от ввода данных пользователем, вам может быть полезно добавить в приложение интерактивный элемент, используя сервис автозаполнения мест в Places API. Он предназначен для того, чтобы возвращать несколько возможных вариантов и позволять пользователю выбирать между ними. Places API возвращает идентификатор места, который можно передать в качестве полностью однозначного местоположения в веб-сервис Geocoding API. Тот, в свою очередь, возвращает полные сведения об адресе и геокодирует адрес в широту и долготу. Подробнее о сервисе автозаполнения мест для Android, iOS, JavaScript и Places API…
Как уменьшить задержку для Directions API (устаревшая версия) и Distance Matrix API (устаревшая версия)
Если пункты отправления, назначения или путевые точки указаны в виде строк адреса, Directions API (устаревший) и Distance Matrix API (устаревший) используют тот же сервер, что и Geocoding API, чтобы геокодировать эти адреса перед расчетом маршрутов. Это значительно увеличивает задержку по сравнению с указанием тех же местоположений в виде координат или идентификаторов мест.
Если ваше приложение использует Directions API (устаревшая версия) или Distance Matrix API (устаревшая версия) в ситуациях, требующих минимальной задержки, например при обработке пользовательского ввода, и ваши исходные точки, пункты назначения или промежуточные точки изначально указаны в виде строк адреса, мы рекомендуем вам минимизировать задержку, используя сервис Place Autocomplete из Places API для преобразования строк адреса в идентификаторы мест, а затем передавать эти идентификаторы в Directions API (устаревшая версия) или Distance Matrix API (устаревшая версия). Подробнее о сервисе автозаполнения мест для Android, iOS, JavaScript и Places API… Также ознакомьтесь с примером JavaScript для автозаполнения мест и маршрутов.
Заключение
В зависимости от ситуации вы можете использовать Geocoding API отдельно или в сочетании с сервисом Place Autocomplete. Это позволяет создавать приложения, которые предлагают точные результаты геокодирования и сокращают время ожидания.
Как управлять ошибками и повторными попытками
Если вы получаете ответы UNKNOWN_ERROR, это вызвано временными ошибками. В таком случае лучше всего повторить попытку через некоторое время. Мы рекомендуем использовать
клиентские библиотеки веб-сервисов платформы Google Карт, которые включают логику повторных попыток и поддерживают аутентификацию по плану Premium платформы Google Карт.
Клиент Java, клиент Python, клиент Go и клиент Node.js для сервисов Google Карт – это клиентские библиотеки, поддерживаемые сообществом. Их можно скачать и использовать на GitHub, где также доступны инструкции по установке и примеры кода.
Если вы получаете в ответ на запрос код статуса OVER_QUERY_LIMIT, значит вы превысили лимиты на использование API. Рекомендуем попробовать эти
стратегии оптимизации использования.