通过搜索一些城市的trouch地理编码API来查找空的地区

时间:2018-07-19 10:04:47

标签: api google-maps geocoding google-geocoding-api

当我通过地址搜索结果时,某些查询结果在Geocoding API的JSON响应代码中没有locality。当我搜索Houten时,这就是 example#1 中发生的情况。但是,当我在Vianen之类的城市中搜索示例#2 时,就会发现一个地点。这是API中的错误,可以解决吗?

示例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"
}

1 个答案:

答案 0 :(得分:1)

这听起来像是API方面的得分问题。如我们所见,地理编码API更喜欢类型为Administrative_area_level_2的结果。由于某种原因,API认为名称为Houten的管理区域比具有相同名称的地方更为突出,并在响应中返回该管理区域。

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

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

此请求将作为第一个建议“荷兰霍滕”返回,其位置ID为ChIJu_QGwOdmxkcRPRqtvufr2Ic,并键入locality。现在,您可以使用地理编码来获取该城市:

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

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