Android:在谷歌地图中设置缩放级别以包括所有标记点

Android:在谷歌地图中设置缩放级别以包括所有标记点,android,google-maps,android-maps,Android,Google Maps,Android Maps,我正在尝试在android中设置地图的缩放级别,以便它包含我列表中的所有点。我正在使用以下代码 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 cont

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

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

这有时有效。然而,有时一些点没有显示,我需要缩小以查看这些点。有没有办法解决这个问题

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

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

中心点没有正确对齐,这给我带来了问题。这是可行的。

部分问题可能是MIN_值仍然是一个正数,但纬度和经度可以是负数。尝试使用负无穷大而不是最小值。

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));
}
private void fixZoom(){
List points=route.getPoints();//route是PolylineOptions的实例
LatLngBounds.Builder bc=新的LatLngBounds.Builder();
用于(板条项目:点){
bc.包括(项目);
}
moveCamera(CameraUpdateFactory.newLatLngBounds(bc.build(),50));
}

我不确定,但我认为这可能是因为放大地图时使用的是离散级别。因此,可能存在一些标记集,如果不将其放大,这些标记集就无法全部放置在地图上。如果zoomToSpan()方法失败,是否尝试为一组标记设置每只手的缩放级别?通过这种方式,您可以检查是否可能。当您无法手动存档时,我认为您无法通过zoomToSpan()存档。是的,我已经尝试过了,只需将其放大一级就可以了。所有这些点都位于我的屏幕边界。不是真的,这是一个负数。请参阅:-2147483648或-2^31。objMapController是什么对象?如何创建这个参考你能发布它吗?谢谢,我正在寻找这样的东西。几乎感觉到了计算点的最小值和最大值的诱惑。你救了我一天!