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もあるし使いやすくなりました。