カメラを調整する

カメラを使用すると、地図に対するユーザーの視点を変更できます。カメラモードを使用して、ナビゲーション中の地図表示の動作を制御できます。カメラモードを設定するには、カメラに関連する次のいずれかのメソッドを呼び出します。

  • 現在地をフォロー(GoogleMap.followMyLocation) - ナビゲーションのデフォルトのカメラモードです。このモードでは、カメラがデバイスまたは車両に設定されます。 ナビゲーション中、カメラは自動的に進行方向を向きます。高精度の設定が有効(NavigationMapStyle.HIGH_DETAIL)の場合、ズームレベルが 19 以上になると、建物の 2D 輪郭が表示されます。

  • 場所に固定(GoogleMap.animateCameraGoogleMap.moveCamera) - カメラを特定の場所に固定します。このモードを使用する場合は、Bearing、tilt、zoom などの他のカメラ プロパティとともに、カメラの位置を設定できます。このビューを選択してナビゲータが初期化されると、[Re-center] ボタンが表示されます。

  • ルートの概要を表示(NavigationView.showRouteOverview または SupportNavigationFragment.showRouteOverview)- 残りのルートの概要を表示します。必要に応じて、ルートを地図表示にパンしたりズームしたりします。このビューを選択すると、[Re-center] ボタンが表示されます。

[中央に戻す] ボタンをクリックすると、カメラが followMyLocation モードに設定されます。

現在地モードをフォロー

最も一般的なカメラ設定は、カメラをデバイスまたは車両に設定し、移動中に現在の位置を表示することです。このカメラモードでは、車が常に画面上を向いている状況で、斜めからの視点(CameraPerspective.TILTED)でルートを表示できます。また、北向き(CameraPerspective.TOP_DOWN_NORTH_UP)または方角で走行する自動車(常に画面上部に CameraPerspective.TOP_DOWN_HEADING_UP) で表示)を確認することもできます。

次のコード フラグメントでは、TILTED パースペクティブを使用しています。

// Set the camera to follow the device (vehicle):
mNavFragment.getMapAsync(googleMap -> googleMap.followMyLocation(CameraPerspective.TILTED))

位置情報モードに固定しました

Pinned モードでは、カメラを最大限に制御できます。このモードでは、特定の場所にカメラを配置し、カメラのビューの向きを調整するための方位を割り当て、傾斜を変更して傾斜角と傾斜角を設定し、カメラのズームレベルを設定します。

次のコード スニペットは、カメラを移動するための一般的な方法を示しています。

private static final LatLng SYDNEY = new LatLng(-33.88, 151.21);
private static final LatLng MOUNTAIN_VIEW = new LatLng(37.4, -122.1);

private GoogleMap map;
... // Obtain the map from a SupportNavigationFragment or NavigationView.

// Move the camera instantly to Sydney with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(SYDNEY, 15));

// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomIn());

// Zoom out to zoom level 10, animating with a duration of 2 seconds.
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);

// Construct a CameraPosition focusing on Mountain View and animate the camera to that position.
CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(MOUNTAIN_VIEW)      // Sets the center of the map to Mountain View
    .zoom(17)                   // Sets the zoom
    .bearing(90)                // Sets the orientation of the camera to east
    .tilt(30)                   // Sets the tilt of the camera to 30 degrees
    .build();                   // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

ルートの概観モードを表示

showRouteOverview カメラ設定では、移動全体が表示されます。複数の目的地にまたがるルートの場合、このモードではルートの何も移動しない部分が表示されます。

// Place the camera to see the remaining route:
mNavFragment.showRouteOverview();

高精度の設定

高精度の設定を有効にすると、カメラのズームレベルが 19 以上に設定されている場合に、建物の 2D 輪郭が表示されます。ナビゲーション中にズームレベルをオーバーライドするには、FollowMyLocationOptions オブジェクトを使用します。これにより、ユーザーが目的地に近づいたときに建物の 2D 輪郭を表示するのに十分なズームレベルを上げることができます。

この例では、高精度の設定を有効にしています。

  navigationView.setNavigationMapStyle(NavigationMapStyle.HIGH_DETAIL);

次の例では、ナビゲーション中にカメラのズームレベルをオーバーライドしています。ズームレベルは 15 に設定されています。これは、建物の 2D 輪郭を表示するのに十分な高さです。

  googleMap.followMyLocation(
              FollowMyLocationOptions.builder(CameraPerspective.TILTED)
                      .setZoomLevel(15.0f)
                      .build());

次のステップ

地図上に表示する組み込み UI コンポーネントを決定することで、ユーザーが地図を操作する方法をカスタマイズする方法については、ナビゲーション UI をカスタマイズするをご覧ください。