Android Osmdroid显示两个地理位置的最大缩放级别
我正在使用osmdroid库来渲染贴图。我有两个间歇变化的地理点,希望org.osmdroid.views.MapView调整大小并进行转换,确保这两个点始终可见。我可以很容易地将地图重新放在两点中间的点上,但是如何设置缩放级别以确保我的两点可见 更新Android Osmdroid显示两个地理位置的最大缩放级别,android,geolocation,maps,osmdroid,Android,Geolocation,Maps,Osmdroid,我正在使用osmdroid库来渲染贴图。我有两个间歇变化的地理点,希望org.osmdroid.views.MapView调整大小并进行转换,确保这两个点始终可见。我可以很容易地将地图重新放在两点中间的点上,但是如何设置缩放级别以确保我的两点可见 更新 //Getting pickup and destination latitude and longitude GeoPoint pickupLocation = null; i
//Getting pickup and destination latitude and longitude
GeoPoint pickupLocation = null;
if (tripRequest.getPickupLat() != null && tripRequest.getPickupLong() != null) {
pickupLocation = new GeoPoint(tripRequest.getPickupLat(), tripRequest.getPickupLong());
}
GeoPoint destinationLocation = null;
if (tripRequest.getDestinationLat() != null && tripRequest.getDestinationLong() != null) {
destinationLocation = new GeoPoint(tripRequest.getDestinationLat(), tripRequest.getDestinationLong());
}
if (destinationLocation != null && pickupLocation != null) {
//Adding destination marker to map
Marker destinationLocationMarker = new Marker(map);
destinationLocationMarker.setPosition(destinationLocation);
destinationLocationMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
destinationLocationMarker.setIcon(context.getResources().getDrawable(R.mipmap.pin_green_small));
map.getOverlays().add(destinationLocationMarker);
//Adding pickup marker to map
Marker pickupLocationMarker = new Marker(map);
pickupLocationMarker.setPosition(pickupLocation);
pickupLocationMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
pickupLocationMarker.setIcon(context.getResources().getDrawable(R.mipmap.pin_red_small));
map.getOverlays().add(pickupLocationMarker);
BoundingBox boundingBox = BoundingBox.fromGeoPoints(Arrays.asList(destinationLocation, pickupLocation));
mapController = map.getController();
mapController.setCenter(boundingBox.getCenter());
mapController.setZoom(10);// I need to set this zoom properly
touchListener = new TouchListener();
map.setOnTouchListener(touchListener);
我相信您正在寻找地图视图或地图控制器中的缩放边界。使用点的最大/最小纬度。您需要在日期线和赤道处进行测试使用zoomToBoundingBox。它应该会起作用,如果不起作用,问题将在其他地方 尝试: 如果仍然不起作用,请检查此响应:
如果您真的想自己计算缩放,您可以随时从中找到灵感并修改计算以满足您的需要。谢谢您的建议,我已更新以添加代码。我可以居中显示边界框,但似乎无法在缩放中使用该边界框。我还尝试了map.zoomToBoundingBox(boundingBox,false);但它不起作用。我对Spy已经尝试过的回答发表了评论:map.zoomToBoundingBox(boundingBox,false);但它不起作用。我认为其他地方没有问题;因为地图可以在静态缩放级别下正常工作。@MarianneAbdelmalek这很奇怪。我确信我最近使用了这种方法,而且一直有效。可能尝试从代码中复制功能,并使用调试器逐步完成。
map.zoomToBoundingBox(boundingBox, false);
map.invalidate();