我正在开发一个 Android 应用程序。在其中一个视图上,用户可以键入一个地址(不太可能是在 Google 地图中键入的内容)并从反向地理编码地址列表中选择结果。地理编码通过 Geocoder 类(android.location.Geocoder 类)使用 getLocationFromName 方法进行。然后我使用 Lat/Lng 使用 CameraPosition.Builder().target(pos) 移动 GoogleMap 相机,但我没有提示使用哪个 zoomLevel。
客户要求我复制与 Android 上的 Maps 应用程序类似的行为,通常如下:
- 如果我搜索像“意大利米兰”这样的城镇,地图以城镇为中心并缩放,以便可以看到大部分城镇。
- 如果我搜索一条没有编号的道路(可能很长),例如“Viale Fulvio Testi,Milano,Italy”,地图会在道路上放大,大部分时间使整条道路(或其中大部分)可见屏幕。
- 如果我还添加街道号码(例如“Viale Fulvio Testi 1, Milano, Italy”),缩放甚至可能会更大一些。*
我在地图上没有标记,也不必显示当前用户位置。只是键入的位置。
关于如何复制 GMap 行为的任何建议?
似乎谷歌地图可以将“区域”与给定地址相关联,确定该区域的一种“边界框”,然后确保该区域在地图上完全可见,但目前似乎我不能找出与结果相关的任何区域。
想到的其他想法(快速而肮脏)是检查各种 android.location.Address 字段(featureName、subLocality、locality ......),将缩放级别与每个字段相关联并根据存在的缩放级别确定缩放级别,但是这可能是不精确的:寻找小城镇可能会导致缩放变大,否则,大城镇可能不适合屏幕......