Google地图自动填充几乎在所有情况下都有效,但在一个地址上表现得很奇怪。
JSFiddle,感谢@geocodezip,显示了这个问题。
这类似于this issue,除了该问题没有返回任何地方。这将返回一个类似命名的地方,但位于不同的位置。
建议框中会显示正确的地址,但place_changed
事件的地址不同。这两个地址彼此相距很远。
可以看出,这在自动完成演示中是可重现的,因此我认为这不是一个实现问题。有没有人见过这种行为并设法修复它?
此外,通过AutocompleteService
请求原始自动填充建议返回的地址的查询预测会返回ZERO_RESULTS
。
new google.maps.places.AutocompleteService();
service.getQueryPredictions({ input: '77 Main Road, Crowthorne AH, Sandton, South Africa' }, function(predictions, status) {
if (status != google.maps.places.PlacesServiceStatus.OK) {
alert(status);
return;
}
predictions.forEach(function(prediction) {
console.log(prediction);
});
});
答案 0 :(得分:2)
您遇到的问题已在Google问题跟踪器中报告。您可以在这里查看并添加评论:
https://issuetracker.google.com/issues/35830687
让我解释一下是什么问题。如果您查看地点ID文档,您会看到地方ID有两个选项。
https://developers.google.com/places/place-id#id-overview
短地点ID(如ChIJrTLr-GyuEmsRBfy61i59si0
)和长地点ID(如EisxMyBNYXJrZXQgU3RyZWV0LCBXaWxtaW5ndG9uLCBOQyAyODQwMSwgVVNB
)。当您看到短地址ID表示Google在其数据库中具有该地址的确切功能时,当您看到长地点ID时,表示Google没有确切的功能并尝试插入地址。有时插值在自动填充和现场详细信息中的工作方式不同,因此在这种情况下,您会观察到问题中描述的问题并报告为bug 35830687。
现在,让我们检查一下您的示例中的地点ID。我执行以下地方自动填充请求:
https://maps.googleapis.com/maps/api/place/autocomplete/json?input=77%20Main%20Road%2C%20Crowthorne%20AH&key=API_KEY
我可以在回复中看到以下文字
"predictions":[
{
"description":"77 Main Road, Crowthorne AH, Sandton, South Africa",
"id":"a0ab043870d062bad00d5ce2ed91faaf7250efbe",
"matched_substrings":[
{
"length":12,
"offset":0
},
{
"length":13,
"offset":14
}
],"place_id":"EjI3NyBNYWluIFJvYWQsIENyb3d0aG9ybmUgQUgsIFNhbmR0b24sIFNvdXRoIEFmcmljYQ",
....
地点ID是长EjI3NyBNYWluIFJvYWQsIENyb3d0aG9ybmUgQUgsIFNhbmR0b24sIFNvdXRoIEFmcmljYQ
,这意味着地址已被插值。
最直接的解决办法可能是为主要道路,Crowthorne AH,南非桑顿的#39;创建一个确切的地址。只有一种方法可以向Google报告缺失的数据,并在以下支持帮助中对其进行了描述:
https://support.google.com/maps/answer/3094045
您应该发送反馈,让Google知道地址' 77 Main Road,Crowthorne AH,Sandton,South Africa'不见了。否则你应该等到bug 35830687解决了。
我希望这能解释你的怀疑!