Tho*_*ten 7 maps android google-maps zoom bounds
我有一个聚类标记,用于定义包含一组标记的边界矩形.群集具有中心(lat,lon),标记计数以及纬度和经度跨度以计算边界.
Google Maps API(JS)有一个名为"getBoundsZoomLevel(bounds)"的函数,但我在Google Maps SDK for Android中找不到等效的方法.如何估算给定边界的缩放级别(特别是在具有不同分辨率/密度的不同设备上)?
我已经计划用户可以触摸群集标记,地图视图将以中心和该群集的边界为中心.
有人为我提供了工作代码段或一些建议吗?
在此先感谢Thorsten.
use*_*688 11
谢谢你的回答Solvek.与此同时,我找到了一个解决方案,我稍微适应了它的工作原理.该方法计算一组地理点的边界,计算这些点的跨度,最后使用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));
}
Run Code Online (Sandbox Code Playgroud)
我没有尝试过这个,但也许它对你有用。假设你有一个矩形 (x1,y1)-(x2,y2)
MapController c = mapView.getController();
c.setCenter(new GeoPoint((x1+x2)/2,(y1+y2)/2));
c.zoomToSpan(x2, y2);
Run Code Online (Sandbox Code Playgroud)