对位置进行反向地理编码

反向地理编码可将地图位置转换为直观易懂的地址。您可以通过相应位置的纬度和经度坐标来表示地图位置。

对某个地点进行逆向地理编码时,响应中会包含以下信息:

此 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 表单中捕获的位置组件时,您通常会使用结构化格式。

将所有其他参数作为网址参数传递;对于 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"

传递结构化位置

使用类型为 LatLnglocation 查询参数指定结构化位置。借助 LatLng 对象,您可以将纬度和经度分别指定为查询参数:

https://geocode.googleapis.com/v4beta/geocode/location?location.latitude=37.4225508&location.longitude=-122.0846338&key=API_KEY

使用 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/maps-platform.geocode.location - 仅可与 GeocodeLocation 搭配使用以进行反向地理编码。

此外,您可以对所有 Geocoding API 端点使用通用 https://www.googleapis.com/auth/cloud-platform 作用域。该作用域在开发期间很有用,但在生产环境中不适用,因为它是一个通用作用域,允许访问所有端点。

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

反向地理编码响应

逆向地理编码会返回一个 GeocodeLocationResponse 对象,其中包含:

  • 表示地点的 GeocodeResult 对象的 results 数组。

    反向地理编码器会在 results 数组中返回多个结果。结果不仅包括邮政地址,还包括对某个位置进行的任何地理位置上的命名。例如,对芝加哥市的某个点进行地理编码时,经过地理编码的点可以表示为街道地址、城市(芝加哥)、所在州(伊利诺伊州)或国家/地区(美国)。这些对地理编码器来说都是“地址”。反向地理编码器会将任何此类地点作为有效结果返回。

  • 类型为 PlusCodeplusCode 字段包含最接近请求中经纬度的 Plus 代码。此外,results 数组的每个元素都包含一个 Plus Code。解码后的 Plus 代码与请求点之间的距离不超过 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"
  }
}

必需参数

  • 地理位置

    纬度和经度坐标,用于指定您要获取距离最近的直观易懂的地址的位置。

可选参数

  • languageCode

    返回结果时所用的语言。

    • 请参阅支持的语言列表。Google 会经常更新支持的语言,因此该列表可能并非详尽无遗。
    • 如果未提供 languageCode,则 API 默认为 en。如果您指定的语言代码无效,则 API 会返回 INVALID_ARGUMENT 错误。
    • 该 API 会尽力提供对用户和当地人而言都易于读取的街道地址。为实现此目标,它会以当地语言返回街道地址,并根据首选语言,视需要转写为用户可读的脚本。系统会以首选语言返回所有其他地址。地址组成部分均以相同的语言返回,该语言从第一个组成部分中选择。
    • 如果名称不以首选语言提供,API 会使用最接近的匹配项。
    • 首选语言对 API 选择返回的结果集和返回结果的顺序有一定影响。地理编码器会根据语言以不同的方式解读缩写,例如街道类型的缩写,或者在一种语言中有效但在另一种语言中无效的同义词。
  • regionCode

    地区代码,以 两个字符的 CLDR 代码值表示。没有默认值。大多数 CLDR 代码与 ISO 3166-1 代码完全一致。

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

  • 粒度

    一个或多个营业地点精确度,以单独的查询参数的形式指定,如 Granularity 所定义。 如果您指定多个 granularity 参数,该 API 会返回与任何精细程度匹配的所有地址。

    granularity 参数不会将搜索限制为指定的地理位置精确度。而是充当搜索后的过滤条件。granularity该 API 会提取指定 location 的所有结果,然后舍弃与指定位置精确度不匹配的结果。

    如果您同时指定 typesgranularity,则 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 会提取指定地理位置的所有结果,然后舍弃与指定地址类型不匹配的结果。

    如果您同时指定 typesgranularity,则 API 只会返回与这两个字段都匹配的结果。例如:

    https://geocode.googleapis.com/v4beta/geocode/location/37.4225508,-122.0846338?types=administrative_area_level_2&types=locality&key=API_KEY

    支持使用以下值:

    地址类型和地址组成部分类型

    响应中的 GeocodeResult 正文中的 types 数组表示地址类型。地址类型的示例包括街道地址、国家/地区或政治实体。GeocodeResult 正文的 AddressComponents 字段中的 types 数组表示地址的每个部分的类型。示例包括门牌号码或国家/地区。

    地址可能具有多种类型。这些类型可能会被视为“标记”。 例如,许多城市都带有 politicallocality 类型的标记。

    对于地址类型和地址组成部分类型数组,系统都支持并返回以下类型:

    地址类型 说明
    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_1sublocality_level_5。每个子级市行政区级别都是一个行政实体。数字越大,表示的地理区域越小
    neighborhood 表示已命名的街区。
    premise 已命名的位置,通常是具有常见名称的建筑物或建筑群。
    subpremise 相应楼宇级别以下的可寻址实体,例如公寓、单元或套房。
    plus_code 经过编码的位置引用,衍生自纬度和经度。Plus Code 可用于在没有街道地址的地点(例如建筑物未编号,或者街道未命名)取代街道地址。如需了解详情,请参阅 https://plus.codes
    postal_code 表示国家/地区内邮寄地址所用的邮政编码。
    natural_feature 某个明显的自然地貌。
    airport 机场。
    park 已命名的公园。
    point_of_interest 已命名的地图注点。通常情况下,这些“地图注点”是当地的著名实体,无法轻易归入其他类别,例如“帝国大厦”或“埃菲尔铁塔”。

    空的类型列表表示特定地址组成部分没有对应的已知类型,例如法国的地点 (Lieu-dit)。