Getting map zoom level for given bounds on Android like on JS Google Maps API: map.getBoundsZoomLevel(bounds)

前端 未结 3 1874
臣服心动
臣服心动 2021-02-09 10:23

I have a cluster marker that defines a bounding rectangle containing a group of markers. The cluster has a center (lat,lon), a marker count and a latitude and longitude span to

3条回答
  •  你的背包
    2021-02-09 10:56

    Thank you for your answer Solvek. Meanwhile I found a solution that I've adapted slightly and it works. The method computes the bounds of a set of geo points, computes the span of these points and finally uses zoomToSpan and animateTo for zooming into and centering the given area:

     public static void zoomInBounds(final MapView view, final GeoPoint.. bounds) {
    
        int minLat = Integer.MAX_VALUE;
        int minLong = Integer.MAX_VALUE;
        int maxLat = Integer.MIN_VALUE;
        int maxLong = Integer.MIN_VALUE;
    
        for (GeoPoint point : bounds) {
            minLat = Math.min(point.getLatitudeE6(), minLat);
            minLong = Math.min(point.getLongitudeE6(), minLong);
            maxLat = Math.max(point.getLatitudeE6(), maxLat);
            maxLong = Math.max(point.getLongitudeE6(), maxLong);
        }
    
        final MapController controller = view.getController();
        controller.zoomToSpan(
                           Math.abs(minLat - maxLat), Math.abs(minLong - maxLong));
        controller.animateTo(new GeoPoint((maxLat + minLat) / 2,
            (maxLong + minLong) / 2));
    }
    

提交回复
热议问题