Обратное геокодирование преобразует местоположение на карте в удобочитаемый адрес. Местоположение на карте задается координатами широты и долготы.
При обратном геокодировании местоположения в ответе содержатся:
- Идентификатор места для адреса.
- Код Plus Code адреса.
- Сведения об адресе
Этот API возвращает различные типы адресов – от наиболее конкретного адреса до менее конкретных административных единиц, таких как районы, города, области и страны. Обычно самым первым результатом бывает наиболее точный адрес. Если вам нужно сопоставить определенный тип адреса, используйте параметр types.
Запрос обратного геокодирования
Запрос обратного геокодирования – это GET-запрос HTTP. Вы можете указать местоположение в виде неструктурированной строки:
https://geocode.googleapis.com/v4/geocode/location/LATITUDE,LONGITUDE
или в виде структурированного набора координат широты и долготы, представленных параметрами запроса:
https://geocode.googleapis.com/v4/geocode/location?location.latitude=LATITUDE&location.longitude=LONGITUDE
Структурированный формат обычно используется при обработке компонентов адреса, полученных из HTML-формы.
Передавайте все остальные параметры как параметры URL или, например, для ключа API или маски поля, в заголовках в составе GET-запроса. Пример:
Передача неструктурированной строки местоположения
Неструктурированное местоположение – это местоположение, отформатированное как строка с разделенными запятыми координатами широты и долготы:
https://geocode.googleapis.com/v4/geocode/location/37.4225508,-122.0846338?key=API_KEY
или в команде curl:
curl -X GET -H 'Content-Type: application/json' \ -H "X-Goog-Api-Key: API_KEY" \ "https://geocode.googleapis.com/v4/geocode/location/37.4225508,-122.0846338"
Как передать структурированный адрес
Укажите структурированное местоположение с помощью параметра запроса location типа LatLng.
Объект LatLng позволяет указать широту и долготу в виде отдельных параметров запроса:
https://geocode.googleapis.com/v4/geocode/location?location.latitude=37.4225508&location.longitude=-122.0846338 &key=API_KEY
Как отправить запрос с помощью OAuth
Geocoding API версии 4 поддерживает аутентификацию OAuth 2.0. Чтобы использовать OAuth с Geocoding API, токену OAuth должна быть назначена правильная область действия. Geocoding API поддерживает следующие области действия для обратного геокодирования:
https://www.googleapis.com/auth/maps-platform.geocode– используется со всеми методами Geocoding API.https://www.googleapis.com/auth/maps-platform.geocode.location— Используйте только сGeocodeLocationдля обратного геокодирования.
Кроме того, для всех методов Geocoding API можно использовать общий диапазон https://www.googleapis.com/auth/cloud-platform. Эта область действия полезна во время разработки, но не в рабочей среде, поскольку она является общей и разрешает доступ ко всем методам.
Дополнительную информацию и примеры можно найти в разделе Использование OAuth.
Ответ обратного геокодирования
Обратное геокодирование возвращает объект GeocodeLocationResponse, который содержит:
-
Массив
resultsобъектовGeocodeResult, представляющих место.Ответы Geocoding API включают массивы
typesв двух основных местах вGeocodeResult:GeocodeResult.types– массив, указывающий общий тип или типы результата. Возможные значения берутся из типов мест, используемых Places API. Подробнее о таблицах А и Б с типами мест…GeocodeResult.addressComponents[].types– каждый компонент адреса имеет массивtypes, указывающий тип этой конкретной части адреса. Эти значения взяты из таблицы Типы адресов и их компонентов, которая используется в Places API.
Обратное геокодирование возвращает несколько результатов в массиве
results. Результаты поиска – это не только почтовые адреса, но также любые варианты географического наименования места. Например, геокодированная точка в Москве может быть помечена точным адресом, названием города (Москва), области или страны (Россия). Для геокодера все эти элементы являются адресами. Обратное геокодирование возвращает любой из этих типов в качестве действительного результата. -
Поле
plusCodeтипаPlusCodeсодержит код Plus Code, который наиболее точно соответствует широте и долготе в запросе. Кроме того, каждый элемент массиваresultsсодержит плюс-код. Расстояние между декодированным кодом Plus Code и точкой запроса составляет менее 10 метров.Примечание. API не всегда возвращает коды Plus Code.
Полный объект JSON имеет следующий вид:
{ "results": [ { "place": "//places.googleapis.com/places/ChIJV-FZF7i7j4ARo4ZOUoecZFU", "placeId": "ChIJV-FZF7i7j4ARo4ZOUoecZFU", "location": { "latitude": 37.422588300000008, "longitude": -122.0846489 }, "granularity": "ROOFTOP", "viewport": { "low": { "latitude": 37.421239319708512, "longitude": -122.0859978802915 }, "high": { "latitude": 37.423937280291511, "longitude": -122.08329991970851 } }, "formattedAddress": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", "addressComponents": [ { "longText": "1600", "shortText": "1600", "types": [ "street_number" ] }, { "longText": "Amphitheatre Parkway", "shortText": "Amphitheatre Pkwy", "types": [ "route" ], "languageCode": "en" }, { "longText": "Mountain View", "shortText": "Mountain View", "types": [ "locality", "political" ], "languageCode": "en" }, { "longText": "Santa Clara County", "shortText": "Santa Clara County", "types": [ "administrative_area_level_2", "political" ], "languageCode": "en" }, { "longText": "California", "shortText": "CA", "types": [ "administrative_area_level_1", "political" ], "languageCode": "en" }, { "longText": "United States", "shortText": "US", "types": [ "country", "political" ], "languageCode": "en" }, { "longText": "94043", "shortText": "94043", "types": [ "postal_code" ] } ], "types": [ "street_address" ], "plusCode": { "globalCode": "849VCW83+PM", "compoundCode": "CW83+PM Mountain View, CA, USA" } }, { "place": "//places.googleapis.com/places/ChIJj61dQgK6j4AR4GeTYWZsKWw", "placeId": "ChIJj61dQgK6j4AR4GeTYWZsKWw", "location": { "latitude": 37.4220541, "longitude": -122.08532419999999 }, "granularity": "ROOFTOP", "viewport": { "low": { "latitude": 37.4207051197085, "longitude": -122.08667318029148 }, "high": { "latitude": 37.423403080291493, "longitude": -122.08397521970851 } }, "formattedAddress": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", "addressComponents": [ { "longText": "1600", "shortText": "1600", "types": [ "street_number" ] }, { "longText": "Amphitheatre Parkway", "shortText": "Amphitheatre Pkwy", "types": [ "route" ], "languageCode": "en" }, { "longText": "Mountain View", "shortText": "Mountain View", "types": [ "locality", "political" ], "languageCode": "en" }, { "longText": "Santa Clara County", "shortText": "Santa Clara County", "types": [ "administrative_area_level_2", "political" ], "languageCode": "en" }, { "longText": "California", "shortText": "CA", "types": [ "administrative_area_level_1", "political" ], "languageCode": "en" }, { "longText": "United States", "shortText": "US", "types": [ "country", "political" ], "languageCode": "en" }, { "longText": "94043", "shortText": "94043", "types": [ "postal_code" ] } ], "types": [ "establishment", "point_of_interest" ], "plusCode": { "globalCode": "849VCWC7+RV", "compoundCode": "CWC7+RV Mountain View, CA, USA" } }, ... ], "plusCode": { "globalCode": "849VCWF8+24H", "compoundCode": "CWF8+24H Mountain View, CA, USA" } }
Обязательные параметры
местоположение
Координаты широты и долготы, для которых нужно получить ближайший человекочитаемый адрес.
Необязательные параметры
languageCode
Язык, на котором будут возвращены результаты.
- Вы можете ознакомиться со списком поддерживаемых языков. Google часто обновляет список поддерживаемых языков, поэтому он может быть неполным.
-
Если параметр
languageCodeне указан, API по умолчанию использует местный язык и письменность. Если вы укажете недопустимый код языка, API вернет ошибкуINVALID_ARGUMENT. - API старается предоставить почтовый адрес, который будет понятен как пользователю, так и местным жителям. Для этого он возвращает почтовые адреса на местном языке, при необходимости транслитерируя их в систему письма, понятную пользователю, с учетом предпочитаемого языка. Все остальные адреса возвращаются на предпочитаемом языке. Все компоненты адреса возвращаются на одном языке, который выбирается по первому компоненту.
- Если название на выбранном языке недоступно, API использует наиболее близкое соответствие.
- Предпочтительный язык незначительно влияет на набор результатов, возвращаемых API, и порядок их следования. Геокодер интерпретирует сокращения по-разному в зависимости от языка, например сокращения типов улиц или синонимы, которые могут быть действительны на одном языке, но не на другом.
regionCode
Код региона в виде двухсимвольного кода CLDR. Значение по умолчанию не задано. Большинство кодов CLDR совпадают с кодами ISO 3166-1.
При геокодировании адреса (прямом геокодировании) этот параметр может влиять на результаты, возвращаемые сервисом, но не ограничивает их полностью. При геокодировании местоположения или места (обратное геокодирование или геокодирование места) этот параметр можно использовать для форматирования адреса. Во всех случаях этот параметр может влиять на результаты в соответствии с действующим законодательством.
детализация
Один или несколько уровней детализации местоположения, указанные как отдельные параметры запроса, как определено в
Granularity. Если вы укажете несколько параметровgranularity, API вернет все адреса, соответствующие любому из уровней детализации.Параметр
granularityне ограничивает поиск указанными уровнями детализации местоположения.granularity– это фильтр, который применяется к результатам поиска. API получает все результаты для указанногоlocation, а затем отбрасывает те, которые не соответствуют указанным уровням детализации местоположения.Если вы укажете и
types, иgranularity, API вернет только те результаты, которые соответствуют обоим параметрам. Пример:https://geocode.googleapis.com/v4/geocode/location/37.4225508,-122.0846338?granularity=ROOFTOP
&granularity=GEOMETRIC_CENTER &key=API_KEY типы
Один или несколько типов адресов, указанных в виде отдельных параметров запроса. Возможные значения приведены в таблице Типы адресов и их компонентов на странице "Типы мест (новые)". Если вы укажете несколько параметров
types, API вернет все адреса, соответствующие любому из типов.Параметр
typesне ограничивает поиск указанными типами адресов. аtypes– как фильтр после поиска. API получает все результаты для указанного местоположения, а затем отбрасывает те, которые не соответствуют указанным типам адресов.Если вы укажете и
types, иgranularity, API вернет только те результаты, которые соответствуют обоим параметрам. Пример:https://geocode.googleapis.com/v4/geocode/location/37.4225508,-122.0846338?types=administrative_area_level_2
&types=locality &key=API_KEY -
FieldMask
Создайте маску поля ответа, чтобы указать, какие поля должны возвращаться в ответе. Передайте маску поля ответа методу, используя параметр URL
$fieldsилиfieldsлибо заголовок HTTPX-Goog-FieldMask. Например, приведенный ниже запрос вернет только поляplaceID. Ответ:curl -X GET -H 'Content-Type: application/json' \ -H 'X-Goog-FieldMask: results.placeId' \ -H "X-Goog-Api-Key: API_KEY" \ "https://geocode.googleapis.com/v4/geocode/location/37.4225508,-122.0846338"
{ "results": [ { "placeId": "ChIJHRNUiQK6j4ARJ__Hrbt6qsE" }, { "placeId": "ChIJj38IfwK6j4ARNcyPDnEGa9g" }, { "placeId": "ChIJ1yjFJ1-7j4ARG_RVqFD1h7k" }, { "placeId": "ChIJ09H2YwK6j4ARoF7qfCBxhB8" }, ... ] }
Подробнее о том, как выбрать поля для возврата…