A
Destination
是指用户打算到达或导航
前往的特定位置或地点。“Destination”还包括与该位置或地点相关的一系列信息,例如导航点、地标、入口和建筑轮廓。
借助 Geocoding API 的
SearchDestinations
方法,您可以根据不同的输入条件(例如地址、地点 ID 或
经纬度坐标)检索有关各种
目的地的详细信息。
搜索目的地请求
搜索目的地请求是向以下格式的网址发出的 HTTP POST 请求:
https://geocode.googleapis.com/v4/geocode/destinations
在 JSON 请求正文或标头中传递所有参数,作为 POST 请求的一部分。例如:
curl -X POST -d '{
"place": "places/ChIJY8sv5-i2j4AR_S6BlDDR42w"
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: *" \
https://geocode.googleapis.com/v4/geocode/destinations
您可以通过以下 3 种方式之一指定要搜索目的地的位置:
- 地址
- 地点 ID
- 经纬度坐标
按地址搜索目的地
您可以将地址指定为非结构化字符串。地址地理编码不会解析经纬度坐标,也不会解析不代表地址的其他非结构化字符串。系统不支持使用此类字符串的请求,并且可能会导致错误响应或未指定的行为。以下是不受支持的查询示例:
| 查询类型 | 示例 |
|---|---|
| 经纬度坐标。请改用位置查询。 | "37.422131,-122.084801" |
| 概念或限制条件过多,例如在单个查询中包含多个地点、道路或城市的名称 | "Market Street San Francisco San Jose Airport" |
| Google 地图上未显示的邮政地址元素 |
"C/O John Smith 123 Main Street" "P.O. Box 13 San Francisco" |
| 商家、连锁店或类别的名称与这些实体不可用的位置相结合 | "Tesco near Dallas, Texas" |
| 具有多种解读的模糊查询 | "Charger drop-off" |
| 不再使用的历史名称 | "Middlesex United Kingdom" |
| 非地理空间元素或意图 | "How many boats are in Ventura Harbor?" |
| 非官方名称或虚名 |
"The Jenga" "The Helter Skelter" |
| 大型政治实体(城市、州、国家/地区) |
"New York City" "California" "USA" |
| 没有具体地址的路线 |
"1st Ave., NYC, NY" "I-95" |
curl -X POST -d '{
"addressQuery": {
"addressQuery": "601 S Bernardo Ave, Sunnyvale, CA 94087, USA"
}
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: *" \
https://geocode.googleapis.com/v4/geocode/destinations
或作为
postalAddress:
curl -X POST -d '{
"addressQuery": {
"address": {
"addressLines": ["601 S Bernardo Ave"],
"locality": "Sunnyvale",
"postalCode": "94087",
"administrativeArea": "CA",
"regionCode": "US"
}
}
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: *" \
https://geocode.googleapis.com/v4/geocode/destinations
您通常会在处理 HTML 表单中捕获的地址组成部分时使用 postalAddress 格式。
按地点 ID 搜索目的地
您可以通过提供地点 ID来检索目的地:
curl -X POST -d '{
"place": "places/ChIJY8sv5-i2j4AR_S6BlDDR42w"
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: *" \
https://geocode.googleapis.com/v4/geocode/destinations
支持的地点 ID
“搜索目的地”方法最适合用于表示特定可导航目的地的地点 ID。一般支持 establishment、
point_of_interest、premise、street_address 和 subpremise 等类型的地点 ID
。系统不支持 不代表离散位置的地点 ID,例如从地址范围(例如“10-20 Main St”)推断出的地点 ID、没有具体编号的路线路段或 Plus Code。系统也不支持 面积过大的结果的地点 ID(例如“太平洋”)。
将 Places API 自动补全(新)与“搜索目的地”搭配使用
为确保兼容性,请使用 Places API 自动补全
(新)查找要与“搜索目的地”搭配使用的地点
ID。使用自动补全功能时,您应使用
参数按类型过滤
includedPrimaryTypes
结果。“搜索目的地”支持使用以下推荐过滤条件通过自动补全功能返回的地点 ID:
"includedPrimaryTypes": [ "establishment", "point_of_interest", "premise", "street_address", "subpremise" ]
此外,您不应 在自动补全请求中将 include_pure_service_area_businesses
标志设置为 true。
按位置搜索目的地
您可以通过提供经纬度坐标来搜索目的地:
curl -X POST -d '{
"locationQuery": {
"location": {
"latitude": 37.37348780,
"longitude": -122.05678064
}
}
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: *" \
https://geocode.googleapis.com/v4/geocode/destinations
使用 OAuth 发出请求
Geocoding API v4 支持使用 OAuth 2.0 进行身份验证。如需将 OAuth 与 Geocoding API 搭配使用,必须为 OAuth 令牌分配正确的范围。 Geocoding API 支持以下范围,以便与“目的地”方法搭配使用:
https://www.googleapis.com/auth/maps-platform.geocode\- 与所有 Geocoding API 方法搭配使用。
此外,您还可以将通用的 https://www.googleapis.com/auth/cloud-platform 范围用于所有 Geocoding API 方法。该范围在开发期间很有用,但在生产环境中则不然,因为这是一个通用范围,允许访问所有方法。
如需了解更多信息和示例,请参阅使用 OAuth。
搜索目的地响应
“搜索目的地”响应提供了有关位置的丰富超本地化背景信息。
“搜索目的地”响应中的 PlaceView 对象(例如 primary、containingPlaces 中的项和 landmarks)使用字段来指示地点类型:
types:一个字符串数组,用于指示地点的类型。primaryType:一个字符串,用于指示地点的主要类型。
`types` 和 `primaryType` 的可能字符串值均来自 `表 A 和表 B` 在地点类型(新)页面上。
本部分介绍了关键响应字段。如需详细了解所有响应 字段,请参阅API 参考文档。
primary
请求中查询标识的主要地点。
containingPlaces
主要目的地所属的较大实体(例如包含商店的购物中心)。
subDestinations
主要目的地内的更具体位置(例如建筑物中的公寓)。
entrances
entrances[] 数组中的对象具有以下字段:
location一个纬度/经度坐标对,用于定义地点的入口和出口位置。
entrance_tags[]一个入口标记数组,用于描述入口的特征。 支持以下值:
"PREFERRED"
表示此入口可能提供对返回地点的实际访问权限。一个地点可以有多个首选入口。如果某个入口 没有此标记,则表示该入口实际上位于同一 建筑物内,但不一定提供对该地点的访问权限。
例如,如果返回的地点是带状购物中心内的一家餐厅,则
"PREFERRED"入口将是通往餐厅 本身的入口,而其他返回的入口将是建筑物的其他入口,例如通往带状购物中心内其他餐厅的入口。如果返回的地点是建筑物本身,则
"PREFERRED"入口将 是通往建筑物 "主要" 部分的入口。例如,在 购物中心内,"PREFERRED"入口将是允许 访问主要门厅区域的入口,但如果某个入口仅提供对建筑物侧面商店的访问权限,则它不会是"PREFERRED"入口。streetViewThumbnail和streetViewAnnotation街景 Static API 的参数,可让您显示 这些位置的相关图像。详细了解这些 字段。
structureType
此地点代表的结构类型。
POINT点位置。
SECTION建筑物的子部分。
BUILDING建筑物。
GROUNDS通常包含多栋建筑的大片区域,例如大学园区、公寓楼或购物中心。
navigationPoints
Geocoding 响应中的 navigationPoints 字段包含一个点列表,这些点有助于导航到该地点。具体来说,在从该地点出发或到达该地点的道路网络上规划路线时,应将这些点用作起点或终点。
每个导航点都包含以下值:
navigationPointToken是一个令牌,其中包含navigationPoints字段中的背景信息。您可以将此令牌发送到路线和 导航 API,以改善应用中的路线和河流体验。如需了解详情,请参阅 使用导航点 令牌规划路线。location包含导航点的纬度和经度值。 此位置始终非常靠近道路网络,是导航到某个地点或从某个地点出发的理想停靠点或出发地。该点有意与道路中心线略有偏移,以便清楚地标记该地点所在的道路一侧。travelModes是导航点可访问的出行方式列表:"DRIVE"是与行车路线对应的出行方式。"WALK"是与步行路线对应的出行方式。
usages是导航点支持的用途列表。用途可以是:"DROPOFF""PICKUP""PARKING"
对于接送服务,请使用出行方式为 DRIVE 且用途为 PICKUP 或 DROPOFF 的导航点。如果没有可用的上车点或下车点,请使用排名最高的驾车导航点。
streetViewThumbnail和entranceAnnotation为 街景 Static API 提供参数,可让您显示这些位置的相关图像。详细了解这些 字段。
arrivalSummary
依托 AI 技术的分析洞见,可帮助您顺利到达目的地。请参阅依托 AI 技术的 摘要。
landmarks
附近值得注意的地点,可帮助用户了解目的地周围的环境。
parkingOptions
详细的停车信息。
- 实验性:重要提示
parkingOptions功能处于实验阶段。使用/v4alpha/渠道形成 HTTP 请求。详细了解发布 阶段 渠道。
回答格式
SearchDestinations 会返回以下 JSON 格式的
SearchDestinationsResponse
:
{ "destinations": [ { "primary": { "place": "places/ChIJY8sv5-i2j4AR_S6BlDDR42w", "displayName": { "text": "Arby's", "languageCode": "en" }, "primaryType": "fast_food_restaurant", "types": [ "fast_food_restaurant", "sandwich_shop", "deli", "meal_takeaway", "food_delivery", "american_restaurant", "restaurant", "food_store", "store", "food", "point_of_interest", "establishment" ], "formattedAddress": "Arby's, 601 S Bernardo Ave, Sunnyvale, CA 94087, USA", "postalAddress": { "regionCode": "US", "languageCode": "en", "postalCode": "94087", "administrativeArea": "CA", "locality": "Sunnyvale", "addressLines": [ "601 S Bernardo Ave" ] }, "structureType": "BUILDING", "location": { "latitude": 37.3734545, "longitude": -122.05693269999998 }, "displayPolygon": { "type": "Polygon", "coordinates": [ [ [ -122.056930138027, 37.3735253692531 ], [ -122.056960139391, 37.3735372663597 ], [ -122.056994129366, 37.3734828786847 ], [ -122.056969677395, 37.3734731161089 ], [ -122.057061762447, 37.3733261309656 ], [ -122.056979388817, 37.3732935577128 ], [ -122.056798860285, 37.3735818838642 ], [ -122.056875858081, 37.3736121235316 ], [ -122.056930138027, 37.3735253692531 ] ] ] } }, "containingPlaces": [ { "place": "places/ChIJYfdAFum2j4ARIcL2tjME3Sw", "displayName": { "text": "Cherry Chase Shopping Center", "languageCode": "en" }, "primaryType": "shopping_mall", "types": [ "shopping_mall", "point_of_interest", "establishment" ], "formattedAddress": "Cherry Chase Shopping Center, 663 S Bernardo Ave, Sunnyvale, CA 94087, USA", "postalAddress": { "regionCode": "US", "languageCode": "en", "postalCode": "94087-1020", "administrativeArea": "CA", "locality": "Sunnyvale", "addressLines": [ "663 S Bernardo Ave" ] }, "structureType": "GROUNDS", "location": { "latitude": 37.3731231, "longitude": -122.0578211 }, "displayPolygon": { "type": "Polygon", "coordinates": [ [ [ -122.057112227103, 37.3714618008523 ], [ -122.057076849821, 37.3715743611411 ], [ -122.056963607756, 37.3719081793948 ], [ -122.056865279559, 37.3722026053835 ], [ -122.056687872374, 37.3727258358476 ], [ -122.056580005889, 37.3730511370747 ], [ -122.056498845827, 37.3732994782583 ], [ -122.056338259713, 37.3737878663325 ], [ -122.056618678291, 37.373887693582 ], [ -122.056912102521, 37.3740010327191 ], [ -122.057532418159, 37.3742476426462 ], [ -122.057673926626, 37.3742441740031 ], [ -122.057735663106, 37.3742328516943 ], [ -122.057766531332, 37.3742220604378 ], [ -122.057797572967, 37.37420520725 ], [ -122.057828267759, 37.3741852342085 ], [ -122.058060299297, 37.3740060842535 ], [ -122.058199726081, 37.3737861673422 ], [ -122.05836707267, 37.373524542556 ], [ -122.058569622393, 37.3732018598683 ], [ -122.0587638478, 37.3728890198039 ], [ -122.058934661823, 37.3726036257774 ], [ -122.059164956851, 37.3722498383629 ], [ -122.058997784906, 37.3721804442035 ], [ -122.057936479838, 37.3717605636234 ], [ -122.057495827092, 37.3715860151634 ], [ -122.057112227103, 37.3714618008523 ] ] ] } } ], "landmarks": [ { "place": { "place": "places/ChIJXXTe7Oi2j4ARoMTA-D6Hjpg", "displayName": { "text": "Chase Bank", "languageCode": "en" }, "primaryType": "bank", "types": [ "bank", "atm", "finance", "point_of_interest", "establishment" ], "formattedAddress": "Chase Bank, 1234 W El Camino Real, Sunnyvale, CA 94087, USA", "postalAddress": { "regionCode": "US", "languageCode": "en", "postalCode": "94087", "administrativeArea": "CA", "locality": "Sunnyvale", "addressLines": [ "1234 W El Camino Real" ] }, "structureType": "POINT", "location": { "latitude": 37.373579, "longitude": -122.05752700000001 } }, "relationalDescription": { "text": "Near Chase Bank", "languageCode": "en" }, "tags": [ "ARRIVAL", "ADDRESS" ], "straightLineDistanceMeters": 61.182193756103516, "travelDistanceMeters": 63.075645446777344 }, { "place": { "place": "places/ChIJteQ0Fum2j4ARGi3tqK4Zm14", "displayName": { "text": "Safeway", "languageCode": "en" }, "primaryType": "grocery_store", "types": [ "grocery_store", "butcher_shop", "florist", "deli", "supermarket", "bakery", "food_delivery", "market", "manufacturer", "food_store", "store", "food", "service", "point_of_interest", "establishment" ], "formattedAddress": "Safeway, 639 S Bernardo Ave, Sunnyvale, CA 94087, USA", "postalAddress": { "regionCode": "US", "languageCode": "en", "postalCode": "94087", "administrativeArea": "CA", "locality": "Sunnyvale", "addressLines": [ "639 S Bernardo Ave" ] }, "structureType": "POINT", "location": { "latitude": 37.3727912, "longitude": -122.0581172 } }, "relationalDescription": { "text": "Around the corner from Safeway", "languageCode": "en" }, "tags": [ "ARRIVAL", "ADDRESS" ], "straightLineDistanceMeters": 158.65606689453125, "travelDistanceMeters": 131.1669921875 }, { "place": { "place": "places/ChIJu-PSYui2j4ARNiwOwBApGqk", "displayName": { "text": "Oil Changers", "languageCode": "en" }, "types": [ "car_repair", "service", "point_of_interest", "establishment" ], "formattedAddress": "Oil Changers, 1240 W El Camino Real, Sunnyvale, CA 94087, USA", "postalAddress": { "regionCode": "US", "languageCode": "en", "postalCode": "94087", "administrativeArea": "CA", "locality": "Sunnyvale", "addressLines": [ "1240 W El Camino Real" ] }, "structureType": "POINT", "location": { "latitude": 37.3743054, "longitude": -122.0584272 } }, "relationalDescription": { "text": "Down the road from Oil Changers", "languageCode": "en" }, "tags": [ "ARRIVAL" ], "straightLineDistanceMeters": 140.52459716796875, "travelDistanceMeters": 143.24220275878906 }, { "place": { "place": "places/ChIJKRbl5oG3j4ARwuvPGUmtCj0", "displayName": { "text": "Apni Mandi Farmers Market Sunnyvale", "languageCode": "en" }, "primaryType": "grocery_store", "types": [ "grocery_store", "cake_shop", "supermarket", "asian_grocery_store", "indian_restaurant", "meal_takeaway", "bakery", "manufacturer", "wholesaler", "restaurant", "food_store", "store", "food", "point_of_interest", "establishment" ], "formattedAddress": "Apni Mandi Farmers Market Sunnyvale, 1111 W El Camino Real, Sunnyvale, CA 94087, USA", "postalAddress": { "regionCode": "US", "languageCode": "en", "postalCode": "94087-1056", "administrativeArea": "CA", "locality": "Sunnyvale", "addressLines": [ "1111 W El Camino Real" ] }, "structureType": "POINT", "location": { "latitude": 37.3737199, "longitude": -122.0522958 } }, "relationalDescription": { "text": "Near Apni Mandi Farmers Market Sunnyvale", "languageCode": "en" }, "tags": [ "ADDRESS" ], "straightLineDistanceMeters": 410.37435913085938, "travelDistanceMeters": 479.49893188476562 }, { "place": { "place": "places/ChIJ8enMlui2j4AR2xXK5EHDhBs", "displayName": { "text": "Starbird Chicken", "languageCode": "en" }, "primaryType": "chicken_restaurant", "types": [ "chicken_restaurant", "fast_food_restaurant", "restaurant", "food", "point_of_interest", "establishment" ], "formattedAddress": "Starbird Chicken, 1241 W El Camino Real, Sunnyvale, CA 94087, USA", "postalAddress": { "regionCode": "US", "languageCode": "en", "postalCode": "94087-1028", "administrativeArea": "CA", "locality": "Sunnyvale", "addressLines": [ "1241 W El Camino Real" ] }, "structureType": "BUILDING", "location": { "latitude": 37.3746764, "longitude": -122.05708860000001 }, "displayPolygon": { "coordinates": [ [ [ -122.057003840785, 37.3747648209809 ], [ -122.057136852459, 37.3747919153144 ], [ -122.057205005705, 37.3745815131859 ], [ -122.057071994114, 37.3745544186944 ], [ -122.057003840785, 37.3747648209809 ] ] ], "type": "Polygon" } }, "relationalDescription": { "text": "Near Starbird Chicken", "languageCode": "en" }, "tags": [ "ADDRESS" ], "straightLineDistanceMeters": 87.348007202148438, "travelDistanceMeters": 214.08084106445312 } ], "entrances": [ { "location": { "latitude": 37.3735328, "longitude": -122.05694879999999 }, "tags": [ "PREFERRED" ], "place": "places/ChIJY8sv5-i2j4AR_S6BlDDR42w" } ], "navigationPoints": [ { "navigationPointToken": "ChIJeMt61tqvQkARWT2716SDXsASEgljyy_n6LaPgBH9LoGUMNHjbBoSCWPLL-foto-AEf0ugZQw0eNsIhIJhf5y6ei2j4ARz7yBW5KAPI4", "location": { "latitude": 37.3738659, "longitude": -122.05693620000001 }, "travelModes": [ "DRIVE", "WALK" ], "usages": [ "PARKING" ] } ] } ] }
必需参数
- API 请求中必须包含以下 3 个参数之一,用于指定要搜索目的地的地址、地点或位置:
addressQuery- 要搜索的地址。place- 要搜索的地点的地点 ID。locationQuery- 要搜索的位置的经纬度坐标。
FieldMask
通过创建 响应字段掩码,指定要在响应中返回的字段列表。使用网址参数
$fields或fields,或者使用 HTTP 标头X-Goog-FieldMask,将响应字段掩码传递给该方法。例如,以下请求将仅返回 入口、导航点和主要目的地的地点 ID。curl -X POST -d '{"place": "places/ChIJG3kh4hq6j4AR_XuFQnV0_t8"}' \ -H "X-Goog-Api-Key: API_KEY" \ -H "Content-Type: application/json" \ -H "X-Goog-FieldMask: destinations.entrances,destinations.navigationPoints,destinations.primary.place" \ https://geocode.googleapis.com/v4/geocode/destinations响应中没有返回字段的默认列表。如果您省略 字段掩码,该方法会返回错误。将字段掩码设置为
*以返回所有字段。如需了解详情,请参阅 选择要返回的字段 。
可选参数
-
travelModes
指定要返回的
navigationPoints类型。 系统会过滤掉其他出行方式的导航点。如果未设置travelModes,则可以返回所有出行方式的导航点 。 languageCode
返回结果所用的语言。
- 请参阅 支持的语言列表。Google 会经常更新 支持的语言,因此该列表可能并非详尽无遗。
-
如果未提供
languageCode,API 默认使用en。如果您指定了无效的语言代码,API 会返回INVALID_ARGUMENT错误。 - API 会尽力提供用户和当地人都能看懂的街道地址。为实现此目标,API 会以当地语言返回街道 地址,并在必要时根据首选语言将街道地址音译为用户可读的 文字。所有其他 地址均以首选语言返回。地址组成部分均以同一种语言返回,该语言是从第一个组成部分中选择的。
- 如果首选语言中没有名称,API 会使用最接近的匹配项。
- 首选语言对 API 选择返回的结果集以及返回结果的顺序影响不大。地理编码器会根据语言以不同的方式解读缩写, 例如街道类型缩写,或者在一种语言中有效但在另一种语言中无效的同义词。
regionCode
区域代码,采用 双字符 CLDR 代码值。没有默认值。大多数 CLDR 代码都与 ISO 3166-1 代码相同。
对地址进行地理编码时(即正向地理编码),此参数可能会影响但不会 完全限制服务返回指定区域的结果。对位置或地点进行地理编码时(即反向地理编码或地点地理编码),此参数可用于设置地址格式。在所有情况下,此参数都可能会根据适用法律影响结果。
-
placeFilter
可让您过滤
locationQuery搜索的结果,以满足您的要求,例如仅返回建筑物形式的目的地,或仅返回具有明确地址的目的地。按结构粒度过滤
借助
structureType过滤条件,您可以指定查询返回的结构类型:- 隔离建筑物:使用
"structureType": "BUILDING"在地图上显示建筑 轮廓,或获取特定结构的详细信息。 - 了解综合体:使用
"structureType": "GROUNDS"确保 主要结果是整体场地。在查询大学校园或购物中心等 较大区域时,此功能非常有用。 - 专注于单元/部分:使用
"structureType": "SECTION"标识 建筑物内的部分。
确保地址有用
并非所有地点都有明确的街道级地址。借助
addressability过滤条件 ,您可以控制结果中地址的质量:- 需要明确的主要地址:如需确保主要目的地结果
始终具有街道级地址或名称,请使用
"addressability": "PRIMARY"。这对于需要明确地址的导航或显示用途非常有用。 - 允许子目的地中的地址:如果主要地点
可能没有地址,但其中的单元有地址(例如建筑物中的
公寓),
"addressability": "WEAK"可确保至少主要 地点或其某个子目的地有地址。 - 任何结果:如果地址是否存在与您的用例无关,请使用
"addressability": "ANY"。
示例:过滤可寻址的建筑物
curl -X POST -d '{ "locationQuery": { "location": { "latitude": 37.37348780, "longitude": -122.05678064 }, "placeFilter": { "structureType": "BUILDING", "addressability": "PRIMARY" } }, "languageCode": "en" }' \\ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \\ -H "X-Goog-FieldMask: place" \\ https://geocode.googleapis.com/v4/geocode/destinations - 隔离建筑物:使用