我使用google地理编码API来实现在自定义地图中自动完成位置搜索。我做了一个这样的请求:
http://maps.googleapis.com/maps/api/geocode/json?address=frankfurt&components=country[de]
我得到的回复只有一个结果:
{
results: [
{
address_components: [
{
long_name: "Frankfurt am Main",
short_name: "Frankfurt am Main",
types: [
"locality",
"political"
]
},
{
long_name: "Darmstadt",
short_name: "DA",
types: [
"administrative_area_level_2",
"political"
]
},
{
long_name: "Hessen",
short_name: "HE",
types: [
"administrative_area_level_1",
"political"
]
},
{
long_name: "Deutschland",
short_name: "DE",
types: [
"country",
"political"
]
}
],
formatted_address: "Frankfurt am Main, Deutschland",
geometry: {
bounds: {
northeast: {
lat: 50.2272095,
lng: 8.8003977
},
southwest: {
lat: 50.0152145,
lng: 8.4727299
}
},
location: {
lat: 50.1109221,
lng: 8.6821267
},
location_type: "APPROXIMATE",
viewport: {
northeast: {
lat: 50.2272095,
lng: 8.8003977
},
southwest: {
lat: 50.0152145,
lng: 8.4727299
}
}
},
place_id: "ChIJxZZwR28JvUcRAMawKVBDIgQ",
types: [
"locality",
"political"
]
}
],
status: "OK"
}
问题是,回应应该包含德国所有的法兰克福汇报。(美因河畔法兰克福+奥德河畔法兰克福)。但它只是以美因河畔法兰克福作为回应。同样的事情也发生在其他地名上,理论上应该至少存在两次。但谷歌只展示了一个。可能是最相关的一个。
有办法修改吗?或者更好地使用另一个Geocode服务?
我试着使用组件过滤器,但这并没有改变任何事情。
这是Geocoding API的预期行为。最突出的结果将会回来。但是,您可以使用地方API的自动完成请求,最多可以返回5条建议。
您可以按国家/地区设置组件过滤器,并将类型限制为城市。请查看以下请求:
https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Frankfurt&types=(城市)&components=国家%3ADE&密钥=YOUR_API_key
此请求同时返回"德国法兰克福"(位置ID ChIJxZZwR28JvUcRAMawKVBDIgQ)和"德国奥德河畔法兰克福"(地址ID ChIJb_u1AiqYB0cRwDteW0YgIQQ)。
为了进一步挖掘,你可以为每个地方执行地理编码请求ID:
https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJxZZwR28JvUcRAMawKVBDIgQ&密钥=YOUR_API_key
https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJb_u1AiqYB0cRwDteW0YgIQQ&密钥=YOUR_API_key
希望能有所帮助。