当我通过地址搜索结果时,某些查询结果在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"
}
答案 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工具相同的结果:
我希望这种解决方法可能会有所帮助。