在Android上获取地图缩放级别,比如在JS Google Maps API上:map.getBoundsZoomLevel(bounds)

我有一个集群标记,它定义了一个包含一组标记的边界矩形。 集群有一个中心(lat,lon),一个标记计数和一个纬度和经度跨度来计算边界。

Google Maps API(JS)有一个名为“getBoundsZoomLevel(bounds)”的函数,但我无法在Google Maps SDK for Android中find等效的方法。 如何估算给定范围缩放级别(特别是在具有不同分辨率/密度的不同设备上)?

我已经计划过,用户可以触摸集群标记,地图视图将以集群中心和边界为中心。

有没有人有一个工作代码片段或一些build议给我?

在此先感谢问候Thorsten。

Solutions Collecting From Web of "在Android上获取地图缩放级别,比如在JS Google Maps API上:map.getBoundsZoomLevel(bounds)"

谢谢你的回答Solvek。 同时,我find了一个解决scheme,我已经适应了一点,它的作品。 该方法计算一组地理点的边界,计算这些点的跨度,最后使用zoomToSpan和animateTo缩放和居中给定的区域:

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

现在,您可以使用.newLatLngBounds()方法缩放到边界:

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

它会移动并放大到给定的边界,所以它们都可以在屏幕上看到(例如城市或国家的不同缩放)。 它完美地与位置search。

我没有尝试过,但也许它会为你工作。 假设你有一个矩形(x1,y1) – (x2,y2)

  MapController c = mapView.getController(); c.setCenter(new GeoPoint((x1+x2)/2,(y1+y2)/2)); c.zoomToSpan(x2, y2);