その6: Ground Overlays (Google Maps SDK for iOS)
Ground Overlays
Introduction
Ground Overlayは、地図上に固定のイメージを配置するもので、マーカーと違い、スクリーンではなく地表面に配置される。回転やTilt、ズームによって、イメージの向きや大きさが変わる。
Groud Overlayを追加するには、GMSGroundOverlayオブジェクトにiconと矩形の領域の両方を設定する必要があり、どちらが欠けても表示されない。
オプションとして、位置に影響を与える追加の設定もある。これらの値を設定した後、mapプロパティにGMSMapViewオブジェクトを設定すると、地図上に表示される。
Add an overlay
- GMSGroundOverlay オブジェクトを生成する
- iconプロパティにUIImageをセットする
- boundsプロパティにGMSCoordinateBoundsオブジェクトをセット。矩形は南西と北東の角を設定する
- bearing,zoomLevelのオプションのプロパティを設定する
- mapプロパティにGMSMapViewオブジェクトをセットする。これでマップに表示される
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.jpg"];
GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon];
overlay.bearing = 0;
overlay.map = mapView_;
Remove an overlay
マップに設定したGournd Overlayは、mapプロパティをnilにすれば除去できる。 また、GMSMapViewのclearメソッドを使うと、登録された全てのOverlayが削除される。
[mapView_ clear];
マップに追加した後にGround Overlayを変更したい場合は、GMSGroudOverlayオブジェクトを保持しておくとよい。
以下、タップ可能に設定するサンプル
overlay.tappable = YES;