2017-08-01 98 views
1

我正在使用osmdroid庫來渲染地圖。我有兩個間歇性變化的地理點,並希望org.osmdroid.views.MapView調整大小和平移,確保兩個點始終可見。我可以輕鬆地將地圖重新​​定位在兩者之間的中點,但是如何設置縮放級別以確保我的兩點可見?Osmdroid顯示兩個地理位置的最大縮放級別

UPDATE

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

回答

0

我相信你正在尋找的變焦範圍是在圖形頁面或地圖控制器。從你的點使用最大/最小緯度。您需要在日期線和赤道上進行測試

+0

感謝您的建議,我更新了我的代碼。我可以居中一個邊界框,但似乎無法在縮放中使用該邊界框。 –

+0

我也嘗試過map.zoomToBoundingBox(boundingBox,false);但它不起作用。 –

1

使用zoomToBoundingBox。它應該工作,如果它沒有問題將在別處。

嘗試:

map.zoomToBoundingBox(boundingBox, false); 
map.invalidate(); 

它這個還是不工作,檢查該回應: zoom mapView to a certain bounding box on osmdroid

如果你真的想計算自己放大你總是可以在source code of zoomToBoundingBox method找到靈感並修改計算以適合您的需求。

+0

我注意到間諜的迴應,我已經嘗試過了:map.zoomToBoundingBox(boundingBox,false);它不起作用。我不相信別的地方有問題;因爲地圖可以在靜態縮放級別下正常工作。 –

+0

@MarianneAbdelmalek這很奇怪。我很確定我最近使用了這種方法,它一直在工作。也許嘗試從[源代碼](https://github.com/osmdroid/osmdroid/blob/39f7d85fc2cc4193c3021e52a9816170a9fa653c/osmdroid-android/src/main/java/org/osmdroid/views/MapView.java#L435)重現功能你的代碼並使用調試器遍歷它。 –

相關問題