web-dev-qa-db-ja.com

Google Map API v2のデフォルトの場所とズームレベルを設定するにはどうすればよいですか?

マップが表示されるとき、マップは常に固定された場所(アフリカの近く)から始まります。

次に、次のコードを使用して、地図を目的の場所に中央揃えします。

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f));

私の質問は、マップが表示される前にデフォルトの場所とズームレベルを設定できるということです。

ユーザーに最初からアニメーションを見せたくないからです。

ありがとう。

85
dong221

これを使用して、アニメーションなしで直接ズームできます。

map.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(xxxx,xxxx) , 14.0f) );
168
Moh Sakkijha

こちらのドキュメントをご覧ください。

https://developers.google.com/maps/documentation/Android-api/map#configure_initial_state

その方法は、マップをXML経由で追加するかプログラムで追加するかによって若干異なります。 XMLを使用している場合、次のように実行できます。

<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="112.5"
  map:cameraTargetLat="-33.796923"
  map:cameraTargetLng="150.922433"
  map:cameraTilt="30"
  map:cameraZoom="13"/>

プログラムで実行している場合、次のことができます。

CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(new LatLng(-33, 150))
    .zoom(13)
    .build();
MapFragment.newInstance(new GoogleMapOptions()
    .camera(camera));
83
Anthony

Google Mapを任意の初期Locationでプログラム的にロードする場合に備えて、このコードを使用できます。

FragmentManager fm = getFragmentManager(); // getChildFragmentManager inside fragments.
CameraPosition cp = new CameraPosition.Builder()
                    .target(initialLatLng) // your initial co-ordinates here. like, LatLng initialLatLng
                    .zoom(zoom_level)
                    .build();
SupportMapFragment mapFragment = SupportMapFragment.newInstance(new GoogleMapOptions().camera(cp));
fm.beginTransaction().replace(R.id.rl_map, mapFragment).commit();

layoutにこのコードを追加します

<RelativeLayout
       Android:id="@+id/rl_map"
       Android:layout_width="fill_parent"
       Android:layout_height="fill_parent" />

これは、特定のGoogleMapLocationを直接読み込みます。つまり、initialLatLngです。

5
Jaydipsinh Zala

SupportMapFragmentへのハンドルを作成し、SupportMapFragment.getView().setVisibility()を使用してvisibilityView.INVISIBLEに設定しました。次に、クラスが実装するonLocationChangedコールバックで、INVISIBLEかどうかを確認し、trueの場合はVISIBLEに設定します。これにより、ロード時に表示されるジャンプがなくなり、開始位置を動的に初期化できます。私の場合、ユーザーの位置を中心にカメラを配置しているため、setMyLocationEnabled(true)によりonLocationChangedがすぐに呼び出されます。

要件は異なる場合がありますが、どちらの方法でも、可視性をINVISIBLEに設定し、適切なデータがロードされた後にVISIBLEを設定する適切な場所を見つける必要があります。

3
theblang

静的なlat longを使用してカメラの更新を直接使用できます

 LatLong latlong = new LatLong(lat, long);
 CameraUpdate cameraPosition = CameraUpdateFactory.newLatLngZoom(latLong, 15);
                mGoogleMap.moveCamera(cameraPosition);
                mGoogleMap.animateCamera(cameraPosition);
2
Mahesh Gawhane