首页 > 解决方案 > 通过 Geocoding API 搜索一些城市来清空位置

问题描述

当我通过地址搜索结果时,某些查询结果没有来自Geocoding APIlocality的 JSON 响应代码。这就是我在示例 #1中搜索. 但是,当我在示例#2中搜索这样一个城市时,就会有一个地方。这是 API 内部的错误吗?可以解决吗?HoutenVianen

示例 #1

{
  "results" : [
    {
      "address_components" : [
        {
          "long_name" : "Houten",
          "short_name" : "Houten",
          "types" : [ "administrative_area_level_2", "political" ]
        },
        {
          "long_name" : "Utrecht",
          "short_name" : "UT",
          "types" : [ "administrative_area_level_1", "political" ]
        },
        {
          "long_name" : "Nederland",
          "short_name" : "NL",
          "types" : [ "country", "political" ]
        }
      ],
      "formatted_address" : "Houten, Nederland",
      [......],
      "types" : [ "administrative_area_level_2", "political" ]
    }
  ],
  "status" : "OK"
}

示例 #2

{
  "results" : [
    {
      "address_components" : [
        {
          "long_name" : "Vianen",
          "short_name" : "Vianen",
          "types" : [ "locality", "political" ]
        },
        {
          "long_name" : "Vianen",
          "short_name" : "Vianen",
          "types" : [ "administrative_area_level_2", "political" ]
        },
        {
          "long_name" : "Utrecht",
          "short_name" : "UT",
          "types" : [ "administrative_area_level_1", "political" ]
        },
        {
          "long_name" : "Nederland",
          "short_name" : "NL",
          "types" : [ "country", "political" ]
        }
      ],
      "formatted_address" : "Vianen, Nederland",
      [......],
      "place_id" : "ChIJJ8URC75jxkcRlnwIUl-xUDY",
      "types" : [ "locality", "political" ]
    }
  ],
  "status" : "OK"
}

标签: apigoogle-mapsgeocodinggoogle-geocoding-api

解决方案


这听起来像是 API 方面的评分问题。正如我们所看到的,Geocoding API 更喜欢 Administrative_area_level_2 类型的结果。由于某种原因,API 认为名称为 Houten 的行政区域比同名的 locality 更突出结果,并在响应中返回行政区域。

您可以尝试使用过滤器类型设置为城市的地点自动完成请求来获取地点的地点 ID。

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Houten&types=(cities)&key=YOUR_API_KEY

此请求作为第一个建议返回“Houten,Netherlands”,并带有地点 IDChIJu_QGwOdmxkcRPRqtvufr2Ic和类型位置。现在您可以使用地理编码来获取这个城市:

https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJu_QGwOdmxkcRPRqtvufr2Ic&key=YOUR_API_KEY

Geocoder 工具中的结果相同:

https://google-developers.appspot.com/maps/documentation/utils/geocoder/#place_id%3DChIJu_QGwOdmxkcRPRqtvufr2Ic

我希望这种解决方法可能会有所帮助。


推荐阅读