【发布时间】:2017-06-24 10:37:10
【问题描述】:
我有一个实现 OnMapReadyCallback 的活动来显示一些标记。 在打开地图之前,我提供了一个目标城市,我想通过以下方式在地图上仔细查看:
LatLng currentCity = new LatLng(cityLat,cityLng)
CameraUpdate location = CameraUpdateFactory.newLatLngZoom(currentCity,13);
googleMap.animateCamera(location);
这里的主要问题是缩放级别只是一个任意数字,它适用于某些城市而对其他城市不好(放大太多,放大不够)。 我想要实现的是根据城市动态确定缩放级别,就像谷歌地图一样。
我知道城市的 ViewPort 越大,缩放需要越小,但我找不到获取给定城市的 ViewPort 然后相应地更改缩放级别的方法
编辑:我正在考虑使用地理编码器来获取使用城市的纬度和经度的地址列表
List<Address> addresses = mGeocoder.getFromLocation(Lat,Lon,maxLimit);
然后遍历此列表以找出该城市可用的最外层地址,以便构建一个 LatLngBounds 以通过 setLatLngBoundsForCameraTarget() 方法传递。 这种方法的主要问题是,“maxLimit”再次是任意的,对于一个大城市来说需要相当大,最终返回一个非常大的 List
【问题讨论】:
-
我认为一个好的长期解决方案是使用包含城市和每个城市所需的缩放级别的属性文件。请记住,您想要的每个城市的缩放级别甚至可能会随着时间而改变。
-
是的,我也这么认为,但我无法控制数据库中的每个城市。我的意思是用户可以将标记添加到我没有列出的一个非常小的城市,我读到 JS API 提供了一些有趣的功能来解决这个问题,但我的 Javascript 水平可以说是平庸的。跨度>
-
赞成。我现在也在使用 Android 上的地图。但我只处理一小部分城市,所以我可以只用硬编码一个值就可以了。
标签: android google-maps google-maps-android-api-2