sos の 作業メモ

プログラミングや英会話学習、マイルや旅行、日常生活など。最近はWebFormなASP.NETのお守りがお仕事です。

日々の生活にhappyをプラスする|ハピタス Gポイント

その6: Ground Overlays (Google Maps SDK for iOS)

前回の続き

Ground Overlays

Introduction

Ground Overlayは、地図上に固定のイメージを配置するもので、マーカーと違い、スクリーンではなく地表面に配置される。回転やTilt、ズームによって、イメージの向きや大きさが変わる。

Groud Overlayを追加するには、GMSGroundOverlayオブジェクトにiconと矩形の領域の両方を設定する必要があり、どちらが欠けても表示されない。

オプションとして、位置に影響を与える追加の設定もある。これらの値を設定した後、mapプロパティにGMSMapViewオブジェクトを設定すると、地図上に表示される。

Add an overlay

  1. GMSGroundOverlay オブジェクトを生成する
  2. iconプロパティにUIImageをセットする
  3. boundsプロパティにGMSCoordinateBoundsオブジェクトをセット。矩形は南西と北東の角を設定する
  4. bearing,zoomLevelのオプションのプロパティを設定する
  5. 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;

次回へ続く