osmdroid ZoomToboundingBox不放大边界盒坐标



我正在使用osmdroid奖金绘制路线。该路线的开始和端坐标是: -

原始-52.24896,0.71795

目的地-54.27916,-1.9732

我代码的相关部分是: -

        BoundingBox b = getBoundingBox(origin,destination);
        map.setMinZoomLevel(7d);  //   <<====  Needed to initialise zoom level
        map.zoomToBoundingBox(b,false);
        map.invalidate();

private BoundingBox getBoundingBox(GeoPoint start, GeoPoint end) {
    double north;
    double south;
    double east;
    double west;
    if(start.getLatitude() > end.getLatitude()) {
        north = start.getLatitude();
        south = end.getLatitude();
    } else {
        north = end.getLatitude();
        south = start.getLatitude();
    }
    if(start.getLongitude() > end.getLongitude()) {
        east = start.getLongitude();
        west = end.getLongitude();
    } else {
        east = end.getLongitude();
        west = start.getLongitude();
    }
    return new BoundingBox(north, east, south, west);
}

我正在使用的地图瓷砖是缩放级别7-13。

没有" setMinzoomlevel"语句,原点/目标标记以缩放级别显示在屏幕的左上角,最能将其描述为深空。如果我包括" setMinzoomlevel",则该地图在该级别显示,并且不缩放以适合边界盒(应在8级(。我尝试了一条较小的路线,最终结果完全相同。

我在做什么错?

它可以使映射已经显示,这大概是为了记录屏幕尺寸。因此,答案首先是使用MapController作为OnCreate进程的一部分设置缩放级别,然后在MapView.onfirstlayOutListener中调用ZoomToboundingBox。我使用的代码是: -

map.addOnFirstLayoutListener(new MapView.OnFirstLayoutListener() {
    public void onFirstLayout(View v, int left, int top, int right, int bottom) {
        BoundingBox b = getBoundingBox(origin,destination);
        map.zoomToBoundingBox(b,false,100);
        map.invalidate();
    }
});

相关内容

  • 没有找到相关文章

最新更新