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)); 

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

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。