通过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对象的列表。