Google 地理编码 API - return 基于邮政编码的任何有效地址
Google Geocoding API - return any valid address based of zip code
我需要 return 邮政编码周围存在的任何(至少一个)有效地址。
国家永远不变
我怎样才能做到这一点?
谢谢,
您可以通过 2 个请求完成此操作,使用第一个请求的输出作为第二个请求的输入。最后概述了一些注意事项。
请求 1
根据邮政编码获取数据:
curl --location --request GET 'https://maps.googleapis.com/maps/api/geocode/json?address=90058&key={{YOUR_API_KEY}}'
根据您的回复,您将需要 results[0].geometry.location
对象。您将在下一个查询中使用 lat
和 lng
值。上面的示例提供了以下内容:
// … more above
"formatted_address" : "Los Angeles, CA 90058, USA",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 34.045639,
"lng" : -118.1685449
},
"southwest" : {
"lat" : 33.979672,
"lng" : -118.2435201
}
},
"location" : {
"lat" : 34.00637469999999,
"lng" : -118.2234229
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 34.045639,
"lng" : -118.1685449
},
"southwest" : {
"lat" : 33.979672,
"lng" : -118.2435201
}
}
},
"place_id" : "ChIJDeH8s8TIwoARYQFWkBcCzFk",
// … more below
请求 2
根据纬度和经度获取数据
curl --location --request GET 'https://maps.googleapis.com/maps/api/geocode/json?latlng=34.00637469999999,-118.2234229&key={{YOUR_API_KEY}}'
注意!查询参数已从 address
更改为 latlng
这可能会 return 很多结果,您必须决定哪种类型满足您的要求,但我建议循环遍历结果数组并查找具有 types
数组的条目包括 street_address
或 premise
并将该条目用作目标结果集。
对于上面的示例,results[1]
将有 "types" : [ "premise" ]
其关联的formatted_address
和完整的父对象如下:
- 请参阅底部关于定位特定类型的注释
"formatted_address" : "2727 E Vernon Ave, Vernon, CA 90058, USA",
// … more above
{
"address_components": [
{
"long_name": "2727",
"short_name": "2727",
"types": [
"street_number"
]
},
{
"long_name": "East Vernon Avenue",
"short_name": "E Vernon Ave",
"types": [
"route"
]
},
{
"long_name": "Vernon",
"short_name": "Vernon",
"types": [
"locality",
"political"
]
},
{
"long_name": "Los Angeles County",
"short_name": "Los Angeles County",
"types": [
"administrative_area_level_2",
"political"
]
},
{
"long_name": "California",
"short_name": "CA",
"types": [
"administrative_area_level_1",
"political"
]
},
{
"long_name": "United States",
"short_name": "US",
"types": [
"country",
"political"
]
},
{
"long_name": "90058",
"short_name": "90058",
"types": [
"postal_code"
]
},
{
"long_name": "1822",
"short_name": "1822",
"types": [
"postal_code_suffix"
]
}
],
"formatted_address": "2727 E Vernon Ave, Vernon, CA 90058, USA",
"geometry": {
"bounds": {
"northeast": {
"lat": 34.0065676,
"lng": -118.2228652
},
"southwest": {
"lat": 34.0057081,
"lng": -118.2245065
}
},
"location": {
"lat": 34.0061691,
"lng": -118.2236056
},
"location_type": "ROOFTOP",
"viewport": {
"northeast": {
"lat": 34.0074868302915,
"lng": -118.2223368697085
},
"southwest": {
"lat": 34.0047888697085,
"lng": -118.2250348302915
}
}
},
"place_id": "ChIJCQv2_sPIwoARZn8W2bF9a9g",
"types": [
"premise"
]
},
// … more below
注意事项
- 我假设你说 "Zip Code" 你指的是美国。我只针对美国进行了测试,如果您需要其他国家/地区的支持,请考虑将国家/地区代码添加到请求 1 中的地址查询参数中。
- 如果您使用此方法以邮政编码开头,您可能会遇到带有
route
或 street_address
的结果,但如果邮政编码代表具有人口密度非常低。我在 "Vernon, California (90058) - population 112" 和 "Freeport City, Kansas (67049) - population 5" 上测试了这个。自由港市 return 没有 premise
. 类型的结果
- 如果您想查询特定类型,而不必搜索大量结果集,您可以将查询参数
&result_type=premise
应用于请求 2。但是,如果没有结果存在给定 lat/lng 与您指定的类型,您将收到 results.status
= ZERO_RESULTS
.
- 可以应用多个
result_type
值,用竖线分隔 (|
)
- 这里有关于反向地理编码的完整文档:https://developers.google.com/maps/documentation/geocoding/intro#ReverseGeocoding
我需要 return 邮政编码周围存在的任何(至少一个)有效地址。 国家永远不变
我怎样才能做到这一点?
谢谢,
您可以通过 2 个请求完成此操作,使用第一个请求的输出作为第二个请求的输入。最后概述了一些注意事项。
请求 1
根据邮政编码获取数据:
curl --location --request GET 'https://maps.googleapis.com/maps/api/geocode/json?address=90058&key={{YOUR_API_KEY}}'
根据您的回复,您将需要 results[0].geometry.location
对象。您将在下一个查询中使用 lat
和 lng
值。上面的示例提供了以下内容:
// … more above
"formatted_address" : "Los Angeles, CA 90058, USA",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 34.045639,
"lng" : -118.1685449
},
"southwest" : {
"lat" : 33.979672,
"lng" : -118.2435201
}
},
"location" : {
"lat" : 34.00637469999999,
"lng" : -118.2234229
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 34.045639,
"lng" : -118.1685449
},
"southwest" : {
"lat" : 33.979672,
"lng" : -118.2435201
}
}
},
"place_id" : "ChIJDeH8s8TIwoARYQFWkBcCzFk",
// … more below
请求 2
根据纬度和经度获取数据
curl --location --request GET 'https://maps.googleapis.com/maps/api/geocode/json?latlng=34.00637469999999,-118.2234229&key={{YOUR_API_KEY}}'
注意!查询参数已从 address
更改为 latlng
这可能会 return 很多结果,您必须决定哪种类型满足您的要求,但我建议循环遍历结果数组并查找具有 types
数组的条目包括 street_address
或 premise
并将该条目用作目标结果集。
对于上面的示例,results[1]
将有 "types" : [ "premise" ]
其关联的formatted_address
和完整的父对象如下:
- 请参阅底部关于定位特定类型的注释
"formatted_address" : "2727 E Vernon Ave, Vernon, CA 90058, USA",
// … more above
{
"address_components": [
{
"long_name": "2727",
"short_name": "2727",
"types": [
"street_number"
]
},
{
"long_name": "East Vernon Avenue",
"short_name": "E Vernon Ave",
"types": [
"route"
]
},
{
"long_name": "Vernon",
"short_name": "Vernon",
"types": [
"locality",
"political"
]
},
{
"long_name": "Los Angeles County",
"short_name": "Los Angeles County",
"types": [
"administrative_area_level_2",
"political"
]
},
{
"long_name": "California",
"short_name": "CA",
"types": [
"administrative_area_level_1",
"political"
]
},
{
"long_name": "United States",
"short_name": "US",
"types": [
"country",
"political"
]
},
{
"long_name": "90058",
"short_name": "90058",
"types": [
"postal_code"
]
},
{
"long_name": "1822",
"short_name": "1822",
"types": [
"postal_code_suffix"
]
}
],
"formatted_address": "2727 E Vernon Ave, Vernon, CA 90058, USA",
"geometry": {
"bounds": {
"northeast": {
"lat": 34.0065676,
"lng": -118.2228652
},
"southwest": {
"lat": 34.0057081,
"lng": -118.2245065
}
},
"location": {
"lat": 34.0061691,
"lng": -118.2236056
},
"location_type": "ROOFTOP",
"viewport": {
"northeast": {
"lat": 34.0074868302915,
"lng": -118.2223368697085
},
"southwest": {
"lat": 34.0047888697085,
"lng": -118.2250348302915
}
}
},
"place_id": "ChIJCQv2_sPIwoARZn8W2bF9a9g",
"types": [
"premise"
]
},
// … more below
注意事项
- 我假设你说 "Zip Code" 你指的是美国。我只针对美国进行了测试,如果您需要其他国家/地区的支持,请考虑将国家/地区代码添加到请求 1 中的地址查询参数中。
- 如果您使用此方法以邮政编码开头,您可能会遇到带有
route
或street_address
的结果,但如果邮政编码代表具有人口密度非常低。我在 "Vernon, California (90058) - population 112" 和 "Freeport City, Kansas (67049) - population 5" 上测试了这个。自由港市 return 没有premise
. 类型的结果
- 如果您想查询特定类型,而不必搜索大量结果集,您可以将查询参数
&result_type=premise
应用于请求 2。但是,如果没有结果存在给定 lat/lng 与您指定的类型,您将收到results.status
=ZERO_RESULTS
. - 可以应用多个
result_type
值,用竖线分隔 (|
) - 这里有关于反向地理编码的完整文档:https://developers.google.com/maps/documentation/geocoding/intro#ReverseGeocoding