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