地面オーバーレイ

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

地面オーバーレイは、緯度と経度の座標に紐付けられた地図上のオーバーレイで、地図をドラッグしたりズームしたりすると連動して動きます。

はじめに

地面オーバーレイは、地図に固定されている画像です。マーカーとは異なり、地面オーバーレイは画面ではなく地面に向けられるため、地図の回転、傾斜、ズームを行うと画像の向きが変わります。

地面オーバーレイを追加するには、アイコンと境界の両方を定義する GMSGroundOverlay オブジェクトを作成します。いずれかを指定しないと、地面オーバーレイが地図に表示されません。必要に応じて、地図上の画像の位置に影響を与える追加設定を指定できます。必要なオプションを定義したら、そのオブジェクトの map プロパティを設定してオーバーレイを追加します。

オーバーレイの追加

  1. GMSGroundOverlay オブジェクトの新しいインスタンスを生成します。
  2. icon プロパティを UIImage のインスタンスに設定します。
  3. bounds プロパティを GMSCoordinateBounds のインスタンスに設定します。この境界は、画像の南西と北東の角を表します。
  4. 必要に応じて、bearingzoomLevel などのオプションのプロパティを設定します。
  5. map プロパティを設定します。画像が地図に表示されます。

既存の GMSMapView オブジェクトに地面オーバーレイを追加する方法を示したコードの例を次に示します。

Swift

let southWest = CLLocationCoordinate2D(latitude: 40.712216, longitude: -74.22655)
let northEast = CLLocationCoordinate2D(latitude: 40.773941, longitude: -74.12544)
let overlayBounds = GMSCoordinateBounds(coordinate: southWest, coordinate: northEast)

// Image from http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg
let icon = UIImage(named: "newark_nj_1922")

let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon)
overlay.bearing = 0
overlay.map = mapView
      

Objective-C

CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(40.712216,-74.22655);
CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(40.773941,-74.12544);
GMSCoordinateBounds *overlayBounds = [[GMSCoordinateBounds alloc] initWithCoordinate:southWest
                                                                        coordinate:northEast];

// Image from http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg
UIImage *icon = [UIImage imageNamed:@"newark_nj_1922"];
GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon];
overlay.bearing = 0;
overlay.map = mapView;
      

オーバーレイの削除

地図からグラウンド オーバーレイを削除するには、GMSGroundOverlaymap プロパティを nil に設定します。または、GMSMapViewclear メソッドを呼び出して、現在オーバーレイ上にあるすべてのオーバーレイ(地面オーバーレイを含む)を削除できます。

Swift

mapView.clear()
      

Objective-C

[mapView clear];
      

地図に追加した地面オーバーレイに変更を加えた場合は、GMSGroundOverlay オブジェクトを必ず保持してください。このオブジェクトを変更することで、後で地面オーバーレイを変更できます。

Swift

let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon)
overlay.bearing = 0
overlay.map = mapView

// ...

overlay.isTappable = true
      

Objective-C

GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon];
overlay.bearing = 0;
overlay.map = mapView;

// ...
overlay.tappable = YES;
      

イベント

ユーザーがオーバーレイをタップしたときなど、地図で発生するイベントをリッスンできます。イベントをリッスンするには、GMSMapViewDelegate プロトコルを実装する必要があります。イベントガイドGMSMapViewDelegate のメソッドのリストをご覧ください。