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 map api V2 Android)
  • 谷歌地图API的API,获得SHA1证书,而不是MD5
  • 使用Google Services 3.0.0和build.gradle中的Maps API密钥丢失api_key /当前密钥
  • 如何更改Google地图标记的颜色?
  • 如何使用kml文件在地图上绘制path?
  • 在Google地图上覆盖d3path?
  • 为什么使用KML数据检索Android版Google路线不再适用?
  • Google地图v2 - 设置我的位置和放大
  • 如何从Java的keytool获取MD5指纹,而不仅仅是SHA-1?