搜索目的地

欧洲经济区 (EEA) 开发者

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”(德克萨斯州达拉斯附近的 Tesco)
有多种解读方式的模糊查询 “充电器送修”
不再使用的历史名称 "Middlesex United Kingdom"
非地理空间元素或意图 “文图拉港有多少艘船?”
非官方名称或虚荣名称 "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”)、没有特定编号的路线路段或 Plus Code 推断出的地点 ID。此外,系统也不支持面积过大的结果(例如“太平洋”)的地点 ID。

将自动补全(新版)与搜索目的地搭配使用

为确保兼容性,请使用自动补全(新版)查找地点 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 支持以下范围,可与 Destinations 方法搭配使用:

  • https://www.googleapis.com/auth/maps-platform.geocode - 与所有 Geocoding API 方法搭配使用。

此外,您还可以对所有 Geocoding API 方法使用常规 https://www.googleapis.com/auth/cloud-platform 范围。该范围在开发期间很有用,但在生产期间没有用,因为它是一个允许访问所有方法的通用范围。

如需了解详情和示例,请参阅使用 OAuth。

“搜索目的地”响应

Search Destinations 响应会提供有关该地点的丰富超本地化背景信息。

Search Destinations 响应中的 PlaceView 对象(例如 primary、containingPlaces 中的项和 landmarks)使用字段来指示地点类型:

  • types:一个字符串数组,用于指示地点的类型。
  • primaryType:一个字符串,表示地点的主要类型。

types 和 primaryType 的可能字符串值均取自“地点类型(新)”页面上的表 A 和表 B。

本部分介绍了关键响应字段。如需详细了解所有响应字段,请参阅 API 参考文档。

primary

请求中的查询所标识的主要地点。

addressComponents

包含适用于该地址的各个组成部分的数组。

每个地址组成部分通常包含以下字段:

  • types[] 是一个数组,表示地址组成部分的类型。请参阅支持的类型列表。
  • longText 是地理编码器返回的地址组成部分的完整文本说明或名称。
  • shortText 是地址组成部分的缩写文本名称(如果有)。例如,阿拉斯加州的地址组成部分可能包含 longText“Alaska”和 shortText“AK”(使用 2 个字母的邮编缩写)。
  • languageCode 是用于设置此组件格式的语言(采用 CLDR 表示法)。

containingPlaces

一个 PlaceView 对象数组,表示包含或涵盖主要目的地的较大空间实体。例如:

  • 如果主要目的地是购物中心内的商店或餐厅,则 containingPlaces 包含购物中心 (structureType: GROUNDS)。
  • 如果主要目的地是单个公寓单元 (subpremise),则 containingPlaces 包含所在的住宅建筑 (structureType: BUILDING),以及更广泛的公寓综合体(如适用)(structureType: GROUNDS)。

containingPlaces 中的每个 PlaceView 都包含自己的 displayName、placeId、location、structureType 和 displayPolygon(如有),以便您在呈现特定单元的同时,还能呈现整个园区或建筑群的轮廓。

subDestinations

一个 PlaceView 对象数组,表示主要目的地内更精细的位置。例如:

  • 查询购物中心、机场或大学校园时,subDestinations 会列出各个商店、航站楼、登机口或校园建筑。
  • 查询多单元住宅或商业建筑时,subDestinations 会列出各个套房或公寓单元。

您可以将 containingPlaces 和 subDestinations 结合使用,构建交互式分层选择器,帮助用户消除复杂到达位置的歧义。

目标层次结构和响应行为

在解读 Destination 响应时,请注意以下结构规则和关系:

  • primary:表示针对您的查询解析出的最具体实体(例如建筑物或子场所)。在大多数正常用例中,此字段都会填充。不过,在农村地区,目的地可能没有主要实体,但仍有导航点或地标。
  • containingPlaces 表示封闭父级(祖先实体):当主要地点在物理上包含在更大的空间结构中时,系统会填充 containingPlaces。对于更精细的地点(例如子场所),它可以列出层次结构中的所有祖先级别。这可能包括封闭式建筑区域、BUILDING 以及园区或住宅区 GROUNDS。如果目的地是独立的建筑或孤立的图钉,containingPlaces 可能为空。
  • subDestinations 表示包含的子级(后代):如果目的地在物理上包含更细粒度的地点,则会填充 subDestinations,并且可以包含不同的后代结构类型,例如校园或场地上的子级 BUILDING,或建筑物内的内部单元、区域和商店。

entrances

entrances[] 数组中的对象具有以下字段:

  • displayName

    一个 LocalizedText 对象,其中包含入口的人类可读名称(例如 "South Bernardo Avenue" 或 "5th Avenue"),如果有的话。

  • location

    一对纬度/经度坐标,用于定义地点出入口的位置。

  • entrance_tags[]

    描述入口特征的入口标签数组。 支持以下值:

    • "PREFERRED"

    表示此入口可能提供对返回地点的实际访问权限。一个地点可以有多个首选入口。如果入口没有此标记,则表示该入口在物理上位于同一建筑物内,但不一定能通往该地点。

    例如,如果返回的地点是露天购物中心内的一家餐厅,则 "PREFERRED" 入口将是通往餐厅本身的入口,而返回的其他入口将是建筑物的其他入口,例如通往露天购物中心内其他餐厅的入口。

    如果返回的地点是建筑物本身,则 "PREFERRED" 入口将是通往建筑物“主要”部分的入口。例如,在购物中心,"PREFERRED" 入口是通往主门厅区域的入口,但如果某个入口只能通往建筑物一侧的商店,则它不是 "PREFERRED" 入口。

  • streetViewThumbnail和streetViewAnnotation

    街景 Static API 的参数,可让您显示这些地点的相关图像。详细了解这些字段。

structureType

此地点所代表的结构类型。

  • POINT

    点位置。

  • SECTION

    建筑物的子部分。

  • BUILDING

    一栋建筑。

  • GROUNDS

    通常包含多栋建筑的大型区域,例如大学校园、公寓大楼或购物中心。

Geocoding 响应中的 navigationPoints 字段包含一系列有助于导航到该地点的点。具体而言,在道路网络上规划从某个地点出发或前往某个地点的路线时,应将这些点用作起点或终点。

每个导航点都包含以下值:

  • navigationPointToken 是一个令牌,其中包含 navigationPoints 字段中的上下文信息。您可以将此令牌发送到路线规划和导航 API,以改进应用中的路线规划和驾驶员体验。如需了解详情,请参阅使用导航点令牌规划路线。
  • location 包含导航点的纬度和经度值。此位置始终非常靠近道路网络,是导航到某个地点或从某个地点出发的理想停靠点或起点。该点有意与道路中心线略微偏移,以清楚地标记地点所在的道路一侧。
  • travelModes 是一个出行方式列表,其中列出了可到达导航点的出行方式:
    • "DRIVE" 是与行车路线对应的出行方式。
    • "WALK" 是与步行路线对应的出行方式。
  • usages 是导航点支持的用途列表。用途可以是:
    • "DROPOFF"
    • "PICKUP"
    • "PARKING"

对于接送点,请使用出行方式为 DRIVE 且用途为 PICKUP 或 DROPOFF 的导航点。如果上车点或下车点不可用,请使用顶部驾车导航点。

  • altitude_meters 包含导航点相对于 WGS-84 椭球体的高度(以米为单位)。如果存在垂直堆叠的路段,请使用 altitude_meters 字段为系统选择最佳路段进行导航。

landmarks

由 Landmark 对象组成的数组,表示附近的地点,可帮助用户在到达目的地后辨别方向并找到目的地。此功能取代了旧版 v3 地址描述符功能,并对其进行了扩展。

每个 Landmark 对象都包含:

  • place:一个描述地标的 PlaceView 对象,包括其 displayName、placeId、location、types 和 displayPolygon。
  • relationalDescription:本地化的人类可读 LocalizedText 字符串,用于描述目的地与地标之间的空间关系(例如 "Near Starbird Chicken"、"Across from Central Park" 或 "Around the corner from the Empire State Building")。
  • straightLineDistanceMeters:从地标到目的地的直线距离(以米为单位)。
  • travelDistanceMeters:地标与目的地之间沿道路或步行网络的预计行程距离(以米为单位)。
  • tags:表示地标相对于目的地的空间角色的上下文标记:
    • "ARRIVAL":紧邻目的地或位于目的地对面的超本地化地标(通常在 50-100 米范围内),最适合用于最后一英里到达指引。
    • "ADDRESS":周边区域(通常在 100-500 米范围内)的本地知名地标,最适合在行程前确定方向和确认地址。
    • 如果地标在当地既醒目又紧邻,则可以同时包含这两个标签。

每个地标都包含以下字段:

  • place 是表示此地标的 PlaceView 对象。
  • relationalDescription 是对目的地与地标之间关系的直观易懂说明,例如“在帝国大厦附近”或“在白宫对面”。
  • tags[] 是一个标记数组,用于描述如何在目的地上下文中利用地标:
    • "ADDRESS":一个在当地较为知名的地点,可用于识别目的地的大致位置。
    • "ARRIVAL":可用于帮助到达目的地的地点,在接近目的地时对导航很有用。
  • straightLineDistanceMeters 是指从该地标到目的地的直线距离(以米为单位)。
  • travelDistanceMeters 是从该地标到目的地的步行距离(以米为单位)。

arrivalSummary

AI 赋能的分析洞见,助力顺利抵达。查看 AI 赋能的摘要。

parkingOptions

详细的停车信息。

回答格式

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": [
        {
          "displayName": {
            "text": "South Bernardo Avenue",
            "languageCode": "en"
          },
          "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 默认使用该地点的本地语言和文字。如果您指定了无效的语言代码,此 API 会返回 INVALID_ARGUMENT 错误。
    • 该 API 会尽力提供用户和当地人都能看懂的街道地址。为实现此目标,它会以本地语言返回街道地址,并在必要时将其音译为用户可读的文字,同时遵循首选语言。所有其他地址均以首选语言返回。地址组成部分均以同一种语言返回,该语言是从第一个组成部分中选择的。
    • 如果首选语言中没有名称,API 会使用最接近的匹配项。
    • 首选语言对 API 选择返回的结果集以及返回顺序有轻微影响。地理编码器会根据语言以不同的方式解读缩写,例如街道类型的缩写,或在一种语言中有效但在另一种语言中无效的同义词。
  • regionCode

    地区代码,采用 双字符 CLDR 代码值。没有默认值。大多数 CLDR 代码都与 ISO 3166-1 代码相同。

    对地址进行地理编码(正向地理编码)时,此参数可以影响(但不能完全限制)服务返回的结果,使其偏向于指定区域。在对位置或地点进行地理编码、反向地理编码或地点地理编码时,此参数可用于设置地址格式。在所有情况下,此参数都可能会根据适用法律影响结果。

  • placeFilter

    让您可以过滤 locationQuery 搜索的结果,以满足您的要求,例如仅返回属于建筑物的目的地或仅返回具有明确地址的目的地。

    按结构化粒度过滤

    借助 structureType 过滤条件,您可以指定查询返回的结构类型:

    • 隔离建筑物:使用 "structureType": "BUILDING" 在地图上显示建筑物轮廓或获取特定建筑物的详细信息。
    • 了解综合体:使用 "structureType": "GROUNDS" 确保主要结果是整体场地。在查询大学校园或购物中心等较大区域时,此功能非常有用。
    • 专注于单元/区域:使用 "structureType": "SECTION" 标识建筑物内的区域。

    确保地址有用

    并非所有地点都有明确的街道级地址。addressability 过滤条件可帮助您控制结果中的地址质量:

    • 需要明确的主要地址:为确保主要目的地结果始终具有街道级地址或名称,请使用 "addressability": "PRIMARY"。这对于需要清晰地址的导航或显示用途非常有用。
    • 允许子目的地有地址:如果主要地点可能没有地址,但其内部单元有地址(例如建筑物中的公寓),"addressability": "WEAK" 可确保至少主要地点或其子目的地之一有地址。
    • Any Result:如果地址是否存在与您的用例无关,请使用 "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