マップが表示されるとき、マップは常に固定された場所(アフリカの近く)から始まります。
次に、次のコードを使用して、地図を目的の場所に中央揃えします。
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f));
私の質問は、マップが表示される前にデフォルトの場所とズームレベルを設定できるということです。
ユーザーに最初からアニメーションを見せたくないからです。
ありがとう。
これを使用して、アニメーションなしで直接ズームできます。
map.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(xxxx,xxxx) , 14.0f) );
こちらのドキュメントをご覧ください。
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));
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" />
これは、特定のGoogleMap
でLocation
を直接読み込みます。つまり、initialLatLngです。
SupportMapFragment
へのハンドルを作成し、SupportMapFragment.getView().setVisibility()
を使用してvisibility
をView.INVISIBLE
に設定しました。次に、クラスが実装するonLocationChanged
コールバックで、INVISIBLE
かどうかを確認し、trueの場合はVISIBLE
に設定します。これにより、ロード時に表示されるジャンプがなくなり、開始位置を動的に初期化できます。私の場合、ユーザーの位置を中心にカメラを配置しているため、setMyLocationEnabled(true)
によりonLocationChanged
がすぐに呼び出されます。
要件は異なる場合がありますが、どちらの方法でも、可視性をINVISIBLE
に設定し、適切なデータがロードされた後にVISIBLE
を設定する適切な場所を見つける必要があります。
静的なlat longを使用してカメラの更新を直接使用できます
LatLong latlong = new LatLong(lat, long);
CameraUpdate cameraPosition = CameraUpdateFactory.newLatLngZoom(latLong, 15);
mGoogleMap.moveCamera(cameraPosition);
mGoogleMap.animateCamera(cameraPosition);