24

このレイアウトで新しい Android マップ V2 を使用しています。

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:map="http://schemas.android.com/apk/res-auto"
  android:id="@+id/map"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  class="com.google.android.gms.maps.SupportMapFragment"
  map:cameraBearing="270"/>

メソッド newLatLngBounds (LatLngBounds bounds, int padding) を使用してマップ内のすべてのマーカーをズームして表示しようとしていますが、カメラの方位は 0 に設定されています。

Google開発者のドキュメントの説明には次のように書かれています:

public static CameraUpdate newLatLngBounds (LatLngBounds 境界、int パディング) (...) . 返された CameraUpdate の方位は 0 で、傾きは 0 です。(...)".

ベアリングの値を変更するにはどうすればよいですか?

次のような newLatLngBounds の呼び出し後に、プログラムで新しい方位を設定しようとしました。

mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100));
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder()
.target(mMap.getCameraPosition().target)
.zoom(mMap.getCameraPosition().zoom)
.bearing(270)
.build()));

しかし、これを行うと、いくつかのマーカーが表示されません。

4

3 に答える 3

-4

Google の CameraUpdateFactory の悪い問題 時間、小さなタイムスパンで解決しました!

public void zoomToBounds() {
    LatLngBounds latLngBounds = getBoundsOfInput(inputPoints);
    final int PADDING = 20;

    final CameraPosition now = map.getCameraPosition();
    final float tilt = map.getCameraPosition().tilt;
    final float bearing = map.getCameraPosition().bearing;
    final LatLng[] target = new LatLng[1];
    final float[] zoom = new float[1];

    map.animateCamera(CameraUpdateFactory.newLatLngBounds(latLngBounds, PADDING), 1, null);

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            target[0] = map.getCameraPosition().target;
            zoom[0] = map.getCameraPosition().zoom;
        }
    }, 10);
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            map.animateCamera(CameraUpdateFactory.newCameraPosition(now), 1, null);
        }
    }, 30);

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            map.animateCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition(target[0], zoom[0], tilt, bearing)));
        }
    }, 60);
}

汚れているように見えますが、機能します

3 ハンドラーがジョブを実行します。すべての postdelay は前のものより大きくなければなりません

于 2013-08-30T09:35:04.947 に答える