Как использовать Places Service и Geocoding API со стилями границ на основе данных

Выберите платформу: Android iOS JavaScript

Вы можете использовать Places Service и Geocoding API с Maps SDK для Android, чтобы искать регионы и получать дополнительную информацию о местах. Сервис Places и Geocoding API – это мощные и надежные альтернативные решения для получения идентификаторов мест. Если вы уже используете идентификаторы мест, то сможете легко использовать их вместе со стилями на основе данных, чтобы показывать границы.

Добавьте Places Service и Geocoding в приложения для Android с помощью Maps SDK для Android следующими способами:

  • Places SDK для Android – это библиотека Android, содержащая методы для получения информации о местах.
  • Возврат информации о местах по HTTP-запросам с помощью Places API.
  • Класс Geocoder позволяет динамически выполнять геокодирование и обратное геокодирование на основе ввода данных пользователем.
  • Геокодирование известных статических адресов с помощью Geocoding API.

Использование Places Service

Как найти идентификатор места с помощью новой версии текстового поиска

Вы можете использовать REST API нового текстового поиска в Places API, чтобы получить идентификатор места с данными о регионе. Для этого укажите places.id в маске поля. Запрашивать идентификаторы мест с помощью новой версии текстового поиска можно бесплатно. Подробнее…

Например, чтобы получить идентификатор места "Тринидад, штат Калифорния", можно выполнить следующий вызов API:

curl -X POST -d '{
  "textQuery" : "Trinidad, CA"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.id' \
'https://places.googleapis.com/v1/places:searchText'

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

Сервис Places Autocomplete в Places SDK для Android позволяет пользователям искать регионы на карте. Чтобы сервис автозаполнения мест возвращал только регионы, используйте AutocompleteSupportFragment.setTypesFilter(List), чтобы задать для фильтра типов значение PlaceTypes.REGIONS.

Как получить информацию о регионе

Сервис Place Details в Places SDK для Android возвращает данные о регионе, которые могут быть очень полезны. Например, вы можете:

  • идентификаторы граничащих с регионом мест по его названию;
  • область просмотра для увеличения масштаба до границ региона;
  • объекты определенного типа внутри границ (например, locality);
  • форматированный адрес региона США в формате "населенный пункт, штат, страна" (например, "Оттумва, штат Айова, США");
  • фотографии и многое другое.

Geocoding API

Geocoding API позволяет преобразовывать адрес в координаты широты и долготы и идентификатор места, а также координаты широты и долготы или идентификатор места в адрес. Он поддерживает разные варианты использования, которые хорошо сочетаются со стилями на основе данных для границ. Например, вы можете:

  • Получать область просмотра для региона.
  • Получать идентификаторы мест для административных районов уровней 1–4, названия населенных пунктов и индексы – для этого в вызовах Geocoding можно применять фильтры по компонентам.
  • Получать идентификаторы мест по географическим координатам, а также для всех компонентов в том или ином местоположении – это делается с помощью обратного геокодирования.

В следующем примере для отправки запроса к Geocoding API используется адрес (с экранированием URL):

https://maps.googleapis.com/maps/api/geocode/json?address=1600%20Amphitheatre%20Pkwy%20Mountain%20View%20CA&key=YOUR_API_KEY

Получать идентификаторы мест можно с помощью обратного геокодирования. В примере ниже функция сервиса Geocoding возвращает идентификаторы места для всех компонентов адреса в точке с заданными координатами.

https://maps.googleapis.com/maps/api/geocode/json?latlng=41.864182,-87.676930&key=YOUR_API_KEY

Обратное геокодирование можно использовать с фильтром компонентов адреса, чтобы получать только нужные вам компоненты:

  • administrativeArea
  • country
  • locality
  • postalCode

В примере ниже показано, как добавить ограничение при использовании функции обратного геокодирования в сервисе Geocoding, чтобы получить для заданной точки только адресный компонент locality.

https://maps.googleapis.com/maps/api/geocode/json?latlng=41.864182,-87.676930&result_type=locality&key=YOUR_API_KEY