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

前端 未结 3 1871
臣服心动
臣服心动 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:55

    I didn't tried this but maybe it will work for you. Imagine you have a rectangle (x1,y1)-(x2,y2)

        MapController c = mapView.getController();
        c.setCenter(new GeoPoint((x1+x2)/2,(y1+y2)/2));
        c.zoomToSpan(x2, y2);
    
    0 讨论(0)
  • 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));
    }
    
    0 讨论(0)
  • 2021-02-09 11:07

    Now you could zoom to bounds with .newLatLngBounds() method:

    map.animateCamera(CameraUpdateFactory.newLatLngBounds(place.getViewport(), 10)); // 10 is padding
    

    It will move and zoom to given bounds, so they all visible on a screen (e.g. different zoom for city or country). It works perfectly with location search.

    0 讨论(0)
提交回复
热议问题