Android Osmdroid显示两个地理位置的最大缩放级别

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

我正在使用osmdroid库来渲染贴图。我有两个间歇变化的地理点,希望org.osmdroid.views.MapView调整大小并进行转换,确保这两个点始终可见。我可以很容易地将地图重新放在两点中间的点上,但是如何设置缩放级别以确保我的两点可见

更新

  //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();