sos の 作業メモ

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

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

Google Maps SDK for iOS Ver.1.2.1 中編 Developer Guideをざっと読んだよ

2013/5/19 追加

1.3.0でTile Layersが追加されたため、記事の方も加筆しました。 1.3.0の記事はこちら


前回の続き

といっても、android版ともJavaとObjCという、ちょっとした文法とインターフェースの違いだけなので、Google Maps Android v2の一連の記事に若干補足するだけにしときます。

利用規約

利用規約かアプリ情報で、

[GMSServices openSourceLicenseInfo]

の戻り値を表示する必要があります。

Map Objects

MapsAPIはUIViewの派生クラスのGMSMapViewが担う。 プロジェクトへの組み込み方法はGetting Startedのページに書いてあるし、以前も記事を書いてますので参照してください。

MapTypes

Normal/Hybrid/Satellite(衛星画像)/Terrain(地形図)の4種類

Map Events

イベントはGMSMapViewDelegateで受け取る。

  • didChangeCameraPosition:

    カメラポジションが変更されたとき

  • didTapAtCoordinate: / didLongPressAtCoordinate:

    マップ上でタップ/ロングタップされた時に緯度経度が通知される。マーカーやオーバーレイのタップは別のイベントになる。

  • didTapMarker:

    マーカーがタップされたとき

  • didTapInfoWindowOfMarker:

    マーカーのInfoWindowがタップされたとき

  • didTapOverlay:

    Overlayがタップされたとき

  • markerInfoWindow:

    マーカーが選択されてInfoWindowが表示される前に呼ばれる。CustomなInfoWindowを表示したいときは、UIViewを返してやればそれが使われる

Map Gestures

GMSUISettingsオブジェクトのプロパティ(settings)を使えば、スクロール、ズーム、ティルト、回転のジェスチャの有効/無効の設定が可能。android版と同じく、あくまでユーザーからの操作の可否を設定するだけで、プログラム側からのカメラポジションの変更は可能。

Map Controls

画面上にコントロールを表示するかどうかを設定できる。

  • カメラがデフォルトの位置(真下で真北を向いている)でないときに、コンパスを表示するかどうか
  • 押すと現在位置をセンターにし続けるためのMyLocationボタンを表示するかどうか

Drawing on the Map

Markers

標準形で色の違うものや、画像そのものを別のものにしたマーカーが簡単に作れる。

Shapes

マップ上にPolyline,Polygon,Circleを追加できる。線色、線幅、塗りつぶし色が変更可能。

Ground Overlays

マップ上に画像を貼り付けられる。

Tile Layers

TileLayers(Tile Overlayとも呼ばれる)は、基本の地図の上に重ね合わせての表示が可能。kGMSTypeNoneとの組み合わせなら、基本地図を置き換えたようにもみせられる。

Ground Overlayよりももっと広範囲に拡張の画像を貼り付けられるものと考えるとよい。

タイルの横の列をX,縦の列をYととして、 (X,Y)でタイルを表す。左上が(0,0)のタイル。
タイルの数は 2N * 2Nとなり、N がそのままZoom levelとなる。(基本のマップと同様)

例えば、zoom level が 2の場合、 4 * 4 = 16枚のタイルで構成され、左上が(0,0), 右上が(3,0), 右下が(3,3)のタイルとなる。

一枚のタイルは 256x256 pointの正方形。

GMSURLTileLayer

URLによってタイルイメージを調達するTileLayer

GMSSyncTileLayer

UIImageからタイルイメージを調達するTileLayer

Changing the View

カメラポジションを設定するためのあれこれ。即時切り替えのmoveCamera: とアニメーションのanimateWithCameraUpdate:メソッドとがある。

Google Maps URL Scheme

カスタムURLスキームで Google Maps for iOSを呼び出すことができる。

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"comgooglemaps://"]];

地図

  • zoom: ズームレベル
  • center: 中心の緯度経度
  • mapmode: マップモード、 standardかstreetview
  • views: satellite/traffic/transit が設定可能。複数設定するときはカンマで区切る

comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic

サーチ

  • q: 検索文字列を指定する

経路

  • saddr: 出発点の緯度経度か住所
  • daddr: 到着点の緯度経度か住所
  • directionsmode: driving/transit/walking.

何度も書いていますが、ほぼandroid版と同機能(GeoCoding周りがあったりするのでiOS版の方が扱いやすいかも?)です。

Referenceもあるし使いやすくなりました。

次回へ続く