谢谢你的回答索尔克。同时,我找到了一个我稍微调整过的解决方案,它可以工作。该方法计算一组地理点的边界,计算这些点的跨度,最后使用 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));
}