カメラを調整する

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

  • 位置情報に沿って移動(GoogleMap.followMyLocation) - ナビゲーションのデフォルトのカメラモード。このモードでは、カメラがデバイスまたは車両に設定されます。ナビの使用中は、カメラが自動的に進行方向を向きます。詳細設定が有効になっている場合(NavigationMapStyle.HIGH_DETAIL)、ズームレベルが 19 以上になると、2D の建物の輪郭が表示されます。

  • 位置に固定(GoogleMap.animateCameraGoogleMap.moveCamera) - カメラを特定の位置に固定します。このモードを使用すると、カメラの位置と、カメラの他のプロパティ(方位、チルト、ズームなど)を設定できます。このビューを選択してナビゲータを初期化すると、[再中央揃え] ボタンが表示されます。

  • 経路の概要を表示(NavigationView.showRouteOverview または SupportNavigationFragment.showRouteOverview) - 残りの経路の概要(最大で次の 45 分間の運転時間)を表示します。必要に応じてパンとズームを行い、経路を地図ビューに収めます。このビューを選択すると、[中央に配置] ボタンが表示されます。

[中央に配置] ボタンをクリックすると、カメラが 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 をカスタマイズするをご覧ください。