Обратное геокодирование преобразует местоположение на карте в понятный человеку адрес. Местоположение на карте определяется координатами широты и долготы.
При обратном геокодировании местоположения ответ содержит:
- Идентификатор места адреса
- Плюс коды адреса
- Адресные данные
Этот API возвращает различные типы адресов: от самых точных уличных адресов до менее точных политических образований, таких как районы, города, округа и штаты. Самый точный адрес обычно оказывается первым результатом. Если вам нужен адрес определённого типа, используйте параметр types .
Запрос обратного геокодирования
Запрос обратного геокодирования — это HTTP-запрос GET. Вы можете указать местоположение в виде неструктурированной строки :
https://geocode.googleapis.com/v4beta/geocode/location/LATITUDE,LONGITUDE
Или как структурированный набор координат широты и долготы, представленный параметрами запроса:
https://geocode.googleapis.com/v4beta/geocode/location?location.latitude=LATITUDE&location.longitude=LONGITUDE
Структурированный формат обычно используется при обработке компонентов местоположения, зафиксированных в HTML-форме.
Все остальные параметры передавайте как параметры URL или, для таких параметров, как ключ API или маска поля, в заголовках в рамках GET-запроса. Например:
Передайте неструктурированную строку местоположения
Неструктурированное местоположение — это местоположение, отформатированное как строка координат широты и долготы, разделенных запятыми:
https://geocode.googleapis.com/v4beta/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/v4beta/geocode/location/37.4225508,-122.0846338"
Пройти структурированное местоположение
Укажите структурированное местоположение, используя параметр запроса location типа LatLng . Объект LatLng позволяет указать широту и долготу как отдельные параметры запроса:
https://geocode.googleapis.com/v4beta/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— Используйте со всеми конечными точками API геокодирования. -
https://www.googleapis.com/auth/maps-platform.geocode.location— Используйте только сGeocodeLocationдля обратного геокодирования.
Кроме того, вы можете использовать общую область действия https://www.googleapis.com/auth/cloud-platform для всех конечных точек Geocoding API. Эта область действия полезна на этапе разработки, но не в процессе эксплуатации, поскольку она предоставляет доступ ко всем конечным точкам.
Дополнительную информацию и примеры см. в разделе Использование OAuth .
Обратный ответ геокодирования
Обратное геокодирование возвращает объект GeocodeLocationResponse , который содержит:
Массив
resultsобъектовGeocodeResult, представляющий место.Обратный геокодер возвращает более одного результата в массиве
results. Результаты представляют собой не только почтовые адреса, но и любые географические обозначения. Например, при геокодировании точки в городе Чикаго геокодируемая точка может быть обозначена как почтовый адрес, как город (Чикаго), как штат (Иллинойс) или как страна (США). Всё это является «адресами» для геокодера. Обратный геокодер возвращает любой из этих типов в качестве допустимых результатов.Поле
plusCodeтипаPlusCodeсодержит Plus Code, который наилучшим образом соответствует широте и долготе в запросе. Кроме того, каждый элемент массиваresultsсодержит Plus Code. Расстояние между декодированным Plus Code и точкой запроса составляет менее 10 метров.
Полный объект 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" } }
Обязательные параметры
расположение
Координаты широты и долготы, указывающие, где находится ближайший, понятный человеку адрес.
Необязательные параметры
код_языка
Язык, на котором будут возвращаться результаты.
- Ознакомьтесь со списком поддерживаемых языков . Google часто обновляет список поддерживаемых языков, поэтому этот список может быть неполным.
- Если
languageCodeне указан, API по умолчанию используетen. Если указан недопустимый код языка, API возвращает ошибкуINVALID_ARGUMENT. - API делает всё возможное, чтобы предоставить адрес, понятный как пользователю, так и местным жителям. Для этого он возвращает адреса на местном языке, при необходимости транслитерируя их в удобный для пользователя язык с учётом выбранного языка. Все остальные адреса возвращаются на выбранном языке. Все компоненты адреса возвращаются на одном языке, выбранном из первого компонента.
- Если имя недоступно на предпочитаемом языке, API использует наиболее близкое совпадение.
- Предпочтительный язык оказывает небольшое влияние на набор результатов, возвращаемых API, и порядок их возврата. Геокодер интерпретирует сокращения по-разному в зависимости от языка, например, сокращения для типов улиц или синонимы, которые могут быть корректны в одном языке, но некорректны в другом.
Код региона
Код региона в виде двухсимвольного кода CLDR . Значение по умолчанию отсутствует. Большинство кодов CLDR идентичны кодам ISO 3166-1.
При геокодировании адреса (прямое геокодирование ) этот параметр может влиять на результаты поиска, относящиеся к указанному региону, но не ограничивать их полностью. При геокодировании местоположения ( обратное геокодирование ) этот параметр может использоваться для форматирования адреса. Во всех случаях этот параметр может влиять на результаты в соответствии с действующим законодательством.
зернистость
Один или несколько уровней детализации местоположения, указанных как отдельные параметры запроса, как определено в
Granularity. Если указать несколько параметровgranularity, API вернет все адреса, соответствующие любому из уровней детализации.Параметр
granularityне ограничивает поиск указаннойgranularityместоположения. Он действует как фильтр после поиска. API извлекает все результаты для указанногоlocation, а затем отбрасывает те, которые не соответствуют указанной гранулярности местоположения.Если указать и
types, иgranularity, API вернёт только те результаты, которые соответствуют обоим критериям. Например:https://geocode.googleapis.com/v4beta/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/v4beta/geocode/location/37.4225508,-122.0846338?types=administrative_area_level_2
&types=locality &key=API_KEY Поддерживаются следующие значения:
Типы адресов и типы компонентов адреса
Массив
typesв телеGeocodeResultответа указывает тип адреса . Примеры типов адреса включают почтовый адрес, страну или политическое образование. Массивtypesв полеAddressComponentsтелаGeocodeResultуказывает тип каждой части адреса. Примеры включают номер дома или страну.Адреса могут иметь несколько типов. Эти типы можно считать «тегами». Например, многие города имеют теги
politicalиlocalityтипов.Следующие типы поддерживаются и возвращаются как в массивах типов адреса, так и в массивах типов компонентов адреса:
Тип адреса Описание street_addressТочный почтовый адрес. routeИменованный маршрут (например, «US 101»). intersectionКрупный перекрёсток, обычно двух крупных дорог. politicalПолитическая единица. Обычно этот тип обозначает полигон какой-либо гражданской администрации. countryНациональная политическая единица, обычно имеющая тип наивысшего порядка, возвращаемый геокодером. administrative_area_level_1Гражданская единица первого порядка, ниже уровня страны. В Соединенных Штатах такими административными уровнями являются штаты. Не во всех странах существуют такие административные уровни. В большинстве случаев краткие названия administrative_area_level_1будут точно соответствовать обозначениям подразделений ISO 3166-2 и другим широко распространенным спискам; однако это не гарантируется, поскольку наши результаты геокодирования основаны на различных сигналах и данных о местоположении.administrative_area_level_2Гражданская единица второго порядка, ниже уровня страны. В Соединённых Штатах такими административными уровнями являются округа. Не во всех странах существуют такие административные уровни. administrative_area_level_3Гражданская единица третьего порядка, ниже уровня страны. Этот тип указывает на незначительное административное деление. Не во всех странах существуют такие административные уровни. administrative_area_level_4Гражданская единица четвёртого порядка, ниже уровня страны. Этот тип указывает на незначительное административное деление. Не во всех странах существуют такие административные уровни. administrative_area_level_5Гражданская единица пятого уровня, ниже уровня страны. Этот тип указывает на незначительное административное деление. Не во всех странах существуют такие административные уровни. administrative_area_level_6Гражданская единица шестого уровня, ниже уровня страны. Этот тип указывает на незначительное административное деление. Не во всех странах существуют такие административные уровни. administrative_area_level_7Гражданская единица седьмого уровня, ниже уровня страны. Этот тип указывает на незначительное административное деление. Не во всех странах существуют такие административные уровни. colloquial_areaОбщеупотребительное альтернативное название сущности. localityИнкорпорированная городская или поселковая политическая единица. sublocalityГражданская единица первого порядка, нижестоящая над населённым пунктом. Для некоторых населённых пунктов может иметь один из дополнительных типов: sublocality_level_1–sublocality_level_5. Каждый уровень населённого пункта является гражданской единицей. Большие числа указывают на меньшую географическую область.neighborhoodРайон с названием. premiseИмеющее название место, обычно здание или группа зданий с общим названием. subpremiseАдресуемая сущность, расположенная ниже уровня помещения, например квартира, блок или апартаменты. plus_codeКод местоположения, полученный из широты и долготы. Плюс-коды могут использоваться для замены уличных адресов в местах, где их нет (где дома не пронумерованы или улицы не имеют названий). Подробнее см. https://plus.codes . postal_codeПочтовый индекс, используемый для адресации почтовых отправлений внутри страны. natural_featureВыдающаяся природная достопримечательность. airportАэропорт. parkПарк с названием. point_of_interestИмеющаяся точка интереса. Обычно такие «точки интереса» представляют собой известные местные объекты, которые сложно отнести к другой категории, например, «Эмпайр-стейт-билдинг» или «Эйфелева башня». Пустой список типов указывает на то, что для конкретного компонента адреса не существует известных типов (например, Lieu-dit во Франции).