我正在使用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();
}
});