首页 > 解决方案 > AutocompleteService.getPlacePredictions 返回带有公寓编号的 ZERO_RESULTS

问题描述

当调用AutocompleteService.getPlacePredictions并将以下request参数的input字段设置为类似的地址3395 Michelson Dr, Irvine, CA 92612时,我得到了预期的匹配结果。

但是,ZERO_RESULTS如果地址包含公寓号码,则返回状态,如下例所示:

3395 Michelson Dr APT 1306
3395 Michelson Dr, APT 1306
3395 Michelson Dr APT 1306, Irvine, CA 92612
3395 Michelson Dr, APT 1306, Irvine, CA 92612
3395 Michelson Dr, Irvine, CA 92612 APT 1306
3395 Michelson Dr, Irvine, CA 92612, APT 1306
3395 Michelson Dr #1306
3395 Michelson Dr, #1306
3395 Michelson Dr #1306, Irvine, CA 92612
3395 Michelson Dr, #1306, Irvine, CA 92612
3395 Michelson Dr, Irvine, CA 92612 #1306
3395 Michelson Dr, Irvine, CA 92612, #1306

这是预期的结果吗?如果是这样,是否有正确的方法来获得类似的地点预测,同时允许输入中包含公寓或套房号码?

标签: google-maps-api-3

解决方案


这已在支持问题 ( https://issuetracker.google.com/35830389#comment3 ) 中得到解答:

对子前提元素(apt./suite)的支持是有限的。地点自动完成并不打算普遍支持这些。

地理编码 API 将找到这些地方,并在 address_components 中返回子前提元素:

9500 布林莫尔大道 #650: https ://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3D9500%2520Bryn%2520Mawr%2520Avenue%2520%2523650%2520Redlands%26nfw%3D1

1403/648 伯克街: https ://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3D1403/648%2520Bourke%2520Street%26nfw%3D1

鲍登街 130 号,公寓。1010: https ://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3D130%2520Bowdoin%2520st.%252C%2520apt.%25201010%26nfw%3D1

地理编码可以用作这些查询的自动完成的后备, https: //google-developers.appspot.com/maps/documentation/utils/geocoder/ 上的地理编码器工具在 某种程度上可以做到这一点:如果您在没有选择的情况下按 Enter建议,您的输入将发送到地理编码服务。这有助于上面的第一个和第三个例子。

如果您需要支持套件/apt,还有一个更复杂的后备选项: - 使用 Autocomplete 类的 placeIdOnly 选项来捕获建议的描述(例如“1403/648 Bourke Street Melbrourne, Victoria, Australia”) - 匹配此描述针对一组正则表达式以检测其中的套件/apt,例如 "\d+/\d+.*Australia" 以检测 123/45 ... Australia) - 如果匹配,则将描述发送到地理编码服务,否则,通过地点 ID 请求详细信息 这仍然可以在不编写您自己的自动完成小部件的情况下完成。


推荐阅读