Геокодирование – это процесс преобразования адресов (например, почтовых) в географические координаты (широту и долготу), которые можно использовать для размещения маркеров на карте или позиционирования карты. В этом документе рассматриваются особенности геокодирования адресов. В ней описывается, когда лучше использовать Geocoding API, а когда – сервис автозаполнения мест в Places API.
Как правило, Geocoding API используется для геокодирования полных адресов (например, "48 Pirrama Rd, Pyrmont, NSW, Australia"). Используйте сервис автозаполнения мест в Places API для геокодирования неполных адресов или в приложениях, чувствительных к задержкам, например при обработке пользовательского ввода.
Варианты использования и рекомендуемые API
| Варианты использования и рекомендуемые API | |
|---|---|
| Физическое прибытие, расширенный выбор пункта назначения, доставка на последнем этапе, посадка и высадка пассажиров, входы в здания или навигация по кампусу. | Используйте метод Поиск пунктов назначения (SearchDestinations) в Geocoding API версии 4, чтобы получать информацию о входах в здания, точках навигации, контурах зданий и ближайших ориентирах. Подробнее о том, как выбрать метод геокодирования… |
| Отвечать на запросы пользователей в реальном времени (в том числе на запросы с неполными, неправильно отформатированными или написанными с ошибками адресами). | Используйте сервис автозаполнения мест в Places API, чтобы получить идентификатор места, а затем вызовите SearchDestinations (для получения гиперлокальных данных) или GeocodePlace (для получения основных координат). |
| Автоматические системы, обрабатывающие полные и однозначные почтовые адреса (например, "48 Pirrama Rd, Pyrmont, NSW, Australia"). | Используйте веб-сервис Geocoding API версии 4 (SearchDestinations для гиперлокальных данных или GeocodeAddress для поиска координат). |
| Автоматические системы, обрабатывающие неоднозначные запросы (например, неполные, неправильно отформатированные или содержащие ошибки адреса). | Рекомендуйте использовать веб-сервис Geocoding API в автоматических системах. Однако если в автоматизированной системе часто встречаются неоднозначные, неполные или неправильно написанные запросы, полученные от пользователей, может быть полезно добавить интерактивный виджет Place Autocomplete, чтобы пользователи могли выбрать результат и избежать ошибок в адресе. |
| Проблемы с задержкой при использовании Directions API (устаревшая версия) или Distance Matrix API (устаревшая версия), когда пункты отправления, назначения или путевые точки указаны в виде строк адреса. | Чтобы уменьшить задержку геокодирования, используйте сервис Place Autocomplete в Places API для получения идентификаторов мест, а затем передавайте их в Directions API (устаревшая версия) или Distance Matrix API (устаревшая версия). |
Реагировать на действия пользователя.
Приложения, которые реагируют на действия пользователя в реальном времени, имеют две основные особенности, влияющие на выбор API:
- Пользователь обычно вводит адрес постепенно (например, "ул. Ленина, 123"), поэтому возможность геокодирования неполных и неоднозначных адресов позволяет быстрее получить результат.
- Приложения, которые реагируют на ввод данных пользователем, чрезвычайно чувствительны к задержкам.
Эти два фактора делают сервис автозаполнения мест в 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. Рекомендуем попробовать
стратегии оптимизации использования.