Это хитрый пример. Прежде всего вы должны знать, что Geocoding API возвращает в массиве компонентов адреса только те компоненты, которые используются для форматирования адреса. В случае Нью-Йорка форматирование адреса очень специфично. Для форматирования адресов используется sublocality_level_1 вместо locality.
Этот факт упоминается в официальной документации API Карт Google.
Обратите внимание, что вам может потребоваться использовать другой наборкомпонентов для согласования с форматами почтовых адресов, используемыми в некоторых регионах. Например, пример кода выбирает компонент местности, который часто представляет городскую часть адреса. Примеры того, как компоненты могут отличаться, включают:
В Великобритании и Швеции компонент для отображения города - postal_town.
В Японии, компоненты различаются по префектурам.
Бруклин и другие части Нью-Йорка не включают город в качестве части адреса. Вместо этого они используют sublocality_level_1.
source: https://developers -dot-devsite-v2-prod.appspot.com / maps / Documentation / javascript/ examples / place-autocomplete-addressform
Единственный обходной путь, о котором я могу подумать, - это использовать два запроса:
Например
давайте получим координату почтового индекса 11214
https://maps.googleapis.com/maps/api/geocode/json?components=postal_code%3A11214%7Ccountry%3AUS&key=YOUR_API_KEY
, в ответ она вернет координату в виде
"geometry":{
"location":{
"lat":40.6046106,"lng":-73.9982756
},
...
}
Теперь измените геокодирование на координату с результатомвведите locality
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.6046106%2C-73.9982756&result_type=locality&key=YOUR_API_KEY
он вернет Нью-Йорк, поэтому вы можете связать почтовый индекс и город Нью-Йорк
{
"plus_code":{
"compound_code":"J232+RM New York, NY, USA","global_code":"87G8J232+RM"
},
"results":[
{
"address_components":[
{
"long_name":"New York",
"short_name":"New York",
"types":[
"locality","political"
]
},
{
"long_name":"New York",
"short_name":"NY",
"types":[
"administrative_area_level_1","political"
]
},
{
"long_name":"United States",
"short_name":"US",
"types":[
"country","political"
]
}
],
"formatted_address":"New York, NY, USA",
"geometry":{
"bounds":{
"northeast":{
"lat":40.9175771,"lng":-73.70027209999999
},
"southwest":{
"lat":40.4773991,"lng":-74.25908989999999
}
},
"location":{
"lat":40.7127753,"lng":-74.0059728
},
"location_type":"APPROXIMATE",
"viewport":{
"northeast":{
"lat":40.9175771,"lng":-73.70027209999999
},
"southwest":{
"lat":40.4773991,"lng":-74.25908989999999
}
}
},
"place_id":"ChIJOwg_06VPwokRYv534QaPC8g",
"types":[
"locality","political"
]
}
],
"status":"OK"
}
Надеюсь, это поможет!