通过Google Maps Android API v2,我了解可以通过以下方法完成此操作:

LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (Location loc : allLocations) {
    LatLng position = new LatLng(loc.getLatitude(), loc.getLongitude());
    builder.include(position);
}

CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(builder.build(), someMarginValue);
map.moveCamera(cu);


但是我似乎找不到为OSMDroid执行此操作的方法。是否有解决方案/课程可帮助根据一组位置确定缩放级别?

最佳答案

这为我工作:

    mapController.setZoom(10.0);
    map.post(new Runnable() {
        @Override
        public void run() {
            mapController.setCenter(boundingBox.getCenterWithDateLine());
            mapController.zoomToSpan(boundingBox.getLatitudeSpan(), boundingBox.getLongitudeSpan());
            map.invalidate();
        }
    });


没有初始缩放级别,它将根本无法工作。第二部分,可以删除map.post,但是我认为它在计算时帮助zoomToSpan()处于isLayoutOccurred()状态。
您可以这样获得boundingBox:

final BoundingBox boundingBox = BoundingBox.fromGeoPoints(geoPoints);


geoPointes只是GeoPoint对象的列表。

08-16 17:17