Android:在Google地图中设置缩放级别以包含所有标记点

我正在尝试在android中为Maps设置缩放级别,使其包含列表中的所有点。 我正在使用以下代码。

int minLatitude = Integer.MAX_VALUE; int maxLatitude = Integer.MIN_VALUE; int minLongitude = Integer.MAX_VALUE; int maxLongitude = Integer.MIN_VALUE; // Find the boundaries of the item set // item contains a list of GeoPoints for (GeoPoint item : items) { int lat = item.getLatitudeE6(); int lon = item.getLongitudeE6(); maxLatitude = Math.max(lat, maxLatitude); minLatitude = Math.min(lat, minLatitude); maxLongitude = Math.max(lon, maxLongitude); minLongitude = Math.min(lon, minLongitude); } objMapController.zoomToSpan( Math.abs(maxLatitude - minLatitude), Math.abs(maxLongitude - minLongitude)); 

这有时候起作用。 不过有时候有些点不显示,我需要缩小才能看到这些点。 有什么办法可以解决这个问题吗?

3 Solutions collect form web for “Android:在Google地图中设置缩放级别以包含所有标记点”

Android Map API v2的另一种方法是:

 private void fixZoom() { List<LatLng> points = route.getPoints(); // route is instance of PolylineOptions LatLngBounds.Builder bc = new LatLngBounds.Builder(); for (LatLng item : points) { bc.include(item); } map.moveCamera(CameraUpdateFactory.newLatLngBounds(bc.build(), 50)); } 

我自己find答案,缩放级别是正确的。 我需要添加下面的代码来显示屏幕上的所有点。

 objMapController.animateTo(new GeoPoint( (maxLatitude + minLatitude)/2, (maxLongitude + minLongitude)/2 )); 

中心点不是为了我自己的问题。 这工作。

部分问题可能是MIN_VALUE仍然是一个正数,但纬度和经度可能是负数。 尝试使用NEGATIVE_INFINITY而不是MIN_VALUE。

  • Google地图输出= kml破了?
  • Android地图v2缩放以显示所有标记
  • 获取Android中的两个位置之间的距离?
  • Google地图和JavaFX:点击JavaFXbutton后在地图上显示标记
  • 如何使相机居中,使标记位于屏幕底部? (Google map api V2 Android)
  • 谷歌地图API的API,获得SHA1证书,而不是MD5
  • 谷歌地图部分来自灰色区域,而不是来自谷歌服务器的图像
  • Android Studio Google Map V2片段呈现
  • 如何从Java的keytool获取MD5指纹,而不仅仅是SHA-1?