【发布时间】:2017-06-29 16:34:27
【问题描述】:
我目前正在制作一个包含地图的 android 应用程序。我已成功添加地图并且可以搜索地点。根据我在网上搜索的内容,我可以设置我的城市并将搜索范围限制在我的国家/地区。
有人知道如何将我的搜索限制在一个城市内吗?
【问题讨论】:
标签: android google-maps search autocomplete
我目前正在制作一个包含地图的 android 应用程序。我已成功添加地图并且可以搜索地点。根据我在网上搜索的内容,我可以设置我的城市并将搜索范围限制在我的国家/地区。
有人知道如何将我的搜索限制在一个城市内吗?
【问题讨论】:
标签: android google-maps search autocomplete
这是一个相当棘手的解决方案,但您可以通过以下步骤来完成:
第 1 步:Google 地方仅允许您从指定的 LatLngBounds(在您的情况下为城市范围)偏向搜索结果,但搜索引擎仍可能返回给定范围之外的 Place。有关详细信息,请参阅Restrict autocomplete results。我觉得这就够了,但是如果你需要严格的限制,请按照第二步。
Step2:对于来自Step1 的所有搜索结果,请致电Places.GeoDataApi.getPlaceById 以获取有关每个Place 的详细信息。您将获得每个地方的 LatLng 等信息。然后,您可以检查每个 Place 是否在给定的范围内:bounds.contains(LatLng),如果不是,则从搜索结果中手动将其删除。
但是:Step2 解决方案使 PlacesAPI 上的请求数量成倍增加,如果您真的需要这个严格的限制,您应该三思而后行!
更新
自 2018 年 4 月起,Google 增加了指定如何处理自动完成预测中的边界的可能性。现在您可以使用GeoDataClient 类的getAutocompletePredictions() 方法和boundsMode 参数。
【讨论】:
我找到了解决方案。
这虽然设置为我的城市。对于任何想使用它的人,只需更改 long 和 lat。
sb.append("&types=establishment&strictbounds&location=9.30684,123.305447&radius=2000");
【讨论】: