我有同样的问题。我通过在 onLayout() 方法结束时调用 zoomToBoundingBox() 来解决它。
我有自己的 MapView 子类,用于将我与地图库选择隔离开来。这个类有一个 clearPoints / addPoint / layoutPoints 风格的界面。在 layoutPoints() 方法中,我从点集合创建逐项叠加层,并创建存储在类的实例方法中的边界框。
public class MyMapView extends MapView {
// The bounding box around all map points
// Used to determine the correct zoom level to show everything
private int minLat = Integer.MAX_VALUE;
private int minLon = Integer.MAX_VALUE;
private int maxLat = Integer.MIN_VALUE;
private int maxLon = Integer.MIN_VALUE;
private BoundingBoxE6 boundingBox;
我的 onLayout() 覆盖有:
/* (non-Javadoc)
* @see org.osmdroid.views.MapView#onLayout(boolean, int, int, int, int)
*/
@Override
protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4) {
super.onLayout(arg0, arg1, arg2, arg3, arg4);
// Now that we have laid out the map view,
// zoom to any bounding box
if (this.boundingBox != null) {
this.zoomToBoundingBox(this.boundingBox);
}
}
我不确定这是否是最好的方法,但它似乎对我有用(除了缩放似乎有点太远了,但这是另一个问题)。