api - 通过 Geocoding API 搜索一些城市来清空位置
问题描述
当我通过地址搜索结果时,某些查询结果没有来自Geocoding APIlocality
的 JSON 响应代码。这就是我在示例 #1中搜索. 但是,当我在示例#2中搜索这样一个城市时,就会有一个地方。这是 API 内部的错误吗?可以解决吗?Houten
Vianen
示例 #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"
}
解决方案
这听起来像是 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 工具中的结果相同:
我希望这种解决方法可能会有所帮助。