谷歌地图API - 返回无效的街道号码

4
如果我搜索500 Buckingham Place, Eight Mile Plains,Google Places API会返回500 Buckingham Place, Eight Mile Plains, Queensland, Australia并带有place id Ej41MDAgQnVja2luZ2hhbSBQbGFjZSwgRWlnaHQgTWlsZSBQbGFpbnMsIFF1ZWVuc2xhbmQsIEF1c3RyYWxpYQ。如果我对该地点id进行详细调用,它将返回Buckingham Pl,Eight Mile Plains QLD 4113,Australia。 您可以在Google Maps网站上复制此操作:https://www.google.com.au/maps/search/500+Buckingham+Place+Eight+Mile+Plains。返回的地点将只是Buckingham Pl,Eight Mile Plains QLD 4113,Australia
我能否让Google Places API仅返回实际街道编号的搜索结果? 编辑:我正在进行的调用是https://maps.googleapis.com/maps/api/place/autocomplete/json?input=500%20Buckingham%20Place%2C%20Eight%20Mile%20Plains&types=address

你是如何进行搜索的?你是使用Web服务还是Google Maps Javascript API v3 Places Library? - geocodezip
@geocodezip 我已经添加了一个API调用示例。 - Timothy Ruhle
1
我不明白问题所在。您想输入什么,想要得到什么样的答案呢?请具体说明。 - Thomas Karachristos
@TomKarachristos,它从自动完成API返回了一个不存在的街道号码的结果。在这种情况下,我不希望它返回结果。在我的例子中,Buckingham Place只有52个街道号码,但您可以搜索任何大于该数字的数字,自动完成API仍将其返回为有效位置。这适用于所有街道。 - Timothy Ruhle
1个回答

3

来自谷歌地图API文档

地址按最佳到最差匹配的顺序返回。通常,最精确的地址是最突出的结果,就像在这种情况下一样。请注意,我们返回不同类型的地址,从最具体的街道地址到不太具体的政治实体,如社区、城市、县、州等。

所以问题在于当您添加一个不存在的街道编号时,会返回没有完全匹配的答案。以下是如何查找答案是否不完全匹配的方法:

再次参考谷歌文档

partial_match表示地理编码器未能返回原始请求的精确匹配项,尽管它能够匹配部分请求的地址。

如果您进行一些测试,您会发现当街道号码不存在(或地址无效或您没有提供足够的信息以获得唯一的地址)时,它会返回一个变量partial_match:true和一个或多个接近匹配项,如图片所示。enter image description here 我用自动完成和地理编码器做了一个简单的例子:http://jsfiddle.net/TomKarachristos/qLyrj38d/,当partial_match为true时,它会返回“不是有效结果”。
if (results[0].partial_match) {
  htmlContent = "not a valid result";
  } else {
  [...]
}

注意: 谷歌地图的数据可能不会百分之百准确。

1
我正在使用自动完成 API(https://developers.google.com/places/web-service/autocomplete),而不是地理编码 API。我无法在任何来自自动完成 API 的请求中看到 partial_match。 - Timothy Ruhle
自动完成 API 提供了 getPlace() 函数,它提供的有关地点的信息比地图地址更详细,因此您必须与 geocoder 一起使用才能获取所需内容。请再次查看 fiddle,我已经更新了它。 - Thomas Karachristos
1
看起来似乎没有办法在自动完成中不显示无效地址。感谢您的帮助。 - Timothy Ruhle
如果您想尝试使用jQuery UI从头开始创建自动完成功能,则可以尝试,但需要花费很多工作量。不过,通过这种方式,您将拥有完全的控制权。以下是一个示例:http://rjshade.com/2012/03/27/Google-Maps-autocomplete-with-jQuery-UI/ - Thomas Karachristos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接