2017-08-01 22 views
1

私はosmdroidライブラリを使用して地図をレンダリングしています。私は断続的に変化する2つのジオポイントを持ち、org.osmdroid.views.MapViewにサイズ変更と翻訳を行い、両方のポイントが常に見えるようにします。 2つのポイントの中間点でマップを簡単に再センタリングできますが、2つのポイントが表示されるようにズームレベルを設定するにはどうすればよいですか?Osmdroid最大ズームレベルは2つの地理的位置を表示

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

私はあなたがのMapViewまたはマップコントローラである境界にズームを探していると信じています。あなたのポイントから最大/最小緯度を使用してください。日付ラインと赤道でテストしたい

+0

提案をいただき、ありがとうございました。自分のコードを追加するように更新しました。私はバウンディングボックスに中心を置くことができますが、ズームにそのバウンディングボックスを使用することはできないようです。 –

+0

私もmap.zoomToBoundingBox(boundingBox、false)を試しました。しかし、それは動作しません。 –

1

zoomToBoundingBoxを使用します。それはうまくいくはずで、問題がなければどこかにあるでしょう。

試してください:あなたは本当にあなたが常にsource code of zoomToBoundingBox methodにインスピレーションを見つけて修正することができ、自分自身をズーム計算したい場合は zoom mapView to a certain bounding box on osmdroid

:それはこのそれでもこの応答をチェックし、動作しない

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

あなたのニーズに合わせた計算。

+0

私は既に試みたスパイの応答にコメントしました:map.zoomToBoundingBox(boundingBox、false);それは動作しません。私は他の場所に問題があるとは思わない。地図は静的なズームレベルで正常に動作するためです。 –

+0

@MarianneAbdelmalekそれは変です。私は最近この方法を使用したことを断ち切りました。おそらく、[source](https://github.com/osmdroid/osmdroid/blob/39f7d85fc2cc4193c3021e52a9816170a9fa653c/osmdroid-android/src/main/java/org/osmdroid/views/MapView.java#L435)から機能を再現しようとします。デバッガを使用してコードを実行します。 –