カメラビューと境界を制限する

プラットフォームを選択: Android iOS JavaScript

カメラのパンや最大高度をコントロールするか、特定の地図内でのユーザーの移動を制限する緯度 / 経度の境界を作成することをおすすめします。これには、カメラの制限を使用します。

次の例は、カメラの移動を制限するように位置情報の境界が設定された地図を示しています。

地図の境界を制限する

bounds オプションを設定すると、カメラの地理的境界を制限できます。

次のコードサンプルは、地図の境界を制限する方法を示しています。

async function init() {
  const { Map3DElement, MapMode } = await google.maps.importLibrary("maps3d");

  const map = new Map3DElement({
    center: { lat: 37.7704, lng: -122.3985, altitude: 500 },
    tilt: 67.5,
    mode: MapMode.HYBRID,
    bounds: {south: 37, west: -123, north: 38, east: -121}
  });

init();
}

カメラを制限する

次のいずれかのオプションを設定すると、カメラの移動を制限できます。

  • maxAltitude
  • minAltitude
  • maxHeading
  • minHeading
  • maxTilt
  • minTilt

次のコードサンプルは、カメラを制限する方法を示しています。

async function init() {
  const { Map3DElement, MapMode } = await google.maps.importLibrary("maps3d");

  const map = new Map3DElement({
    center: { lat: 37.7704, lng: -122.3985, altitude: 500 },
    tilt: 67.5,
    mode: MapMode.HYBRID,
    minAltitude: 1,
    maxAltitude: 1000,
    minTilt: 35,
    maxTilt: 55
  });

 document.body.append(map);
}

init();

地図とカメラの境界を制限する

地図とカメラの境界を同時に制限できます。次のコードサンプルは、地図とカメラの両方の境界を制限する方法を示しています。

async function init() {
  const { Map3DElement, MapMode } = await google.maps.importLibrary("maps3d");

  const map = new Map3DElement({
    center: { lat: 37.7704, lng: -122.3985, altitude: 500 },
    tilt: 67.5,
    mode: MapMode.HYBRID,
    minAltitude: 1,
    maxAltitude: 1000,
    minTilt: 35,
    maxTilt: 55,
    bounds: {south: 37, west: -123, north: 38, east: -121}
  });

 document.body.append(map);
}

init();

操作処理を制御する

地図を含むページをユーザーがスクロールすると、そのスクロール操作によって地図が意図せずズームされることがあります。この動作は、地図オプションの gestureHandling を設定することで制御できます。

gestureHandling: cooperative

「Cooperative」操作処理では、地図のズームやパンに影響を与えることなくページをスクロールできます。ズームするには、コントロールを使用するか、2 本指の操作(タッチスクリーン デバイスの場合)を使用するか、CMD/CTRL を押しながらスクロールします。

次のコードは、操作処理を「Cooperative」に設定する方法を示しています。

new Map3DElement({
  center: { lat: 37.729901343702736, lng: -119.63788444355905, altitude: 1500 },
  tilt: 70,
  heading: 50,
  range: 4000,
  gestureHandling: 'COOPERATIVE',
});

gestureHandling: greedy

「Greedy」操作処理は、すべてのスクロール イベントとタッチ操作に反応します。

gestureHandling: auto

「Auto」操作処理では、地図が `<iframe>` に含まれているかどうか、ページがスクロール可能かどうかによって、地図の動作が変化します。<iframe>

  • 地図が <iframe> 内にある場合、操作処理は "cooperative" になります。
  • 地図が <iframe> 内にない場合、操作処理は「Greedy」になります。