Google Maps SDK for iOS Ver.1.1.1 前編
さて、年度内の仕事があっさりと終わって少し時間ができましたので、 いろいろ放置していたものを少し片付けてみようと思います。
まずは、先日試して地図が 表示されなかった Google Maps SDK for iOS。
今日試してみたら、表示されるようになってました。どうやらGoogle側の問題だった模様です。
と、これだけで終わってもつまらないので、まずは 3/11にリリースされた Ver.1.1.1を動かしてみます。
リリースノートには
- Improved the messages that are logged to the console when a invalid key is used or a connection error occurs.
- Added multi-line snippet support for GMSMarker.
ログメッセージの改善と、マーカーに複数行のsnippetをサポートと、あとはバグ修正とあります。
ということで、デモプロジェクトを見て行きます。
API Key
Generate New Key で作ってから、実際に地図が表示されるようになるまでに少し時間がかかるようです。慌てず騒がず、十分くらいは待ちましょう。
SDKDemosAppDelegate
まずはAPI KeyでGMSServicesを初期化。rootViewControllerにUISplitViewControllerを指定し、Master側にTableViewを持ったMasterViewController、Detailに、実際のサンプル画面であるMapSampleViewControllerとその派生クラスを割り当てる構造(全部で12種類)。 iPhoneの場合はDetail側はpushViewControllerで切り替えている。
MasterViewController
メインメニュー
Samples
MapSampleViewController
GMSMapViewのインスタンスを生成して地図を表示したり、NavigationBarの左ボタンを派生クラスにあわせて変えるための基本的な機能を提供する。単体でもスワイプによる中心座標の変更、PintchOpen/CloseでのZoomや回転、俯瞰の操作が可能。
UISettingSample
GMSMapViewのmyLocationEnabledをYESにして現在位置を地図上に表示。Zoom可否を操作するためのUISwitchを画面に追加し、GMSMapView.settings.zoomGestures の値を変化させている。
MapTypes
UISegmentedControlをNaviBarに追加し、ノーマル、衛星写真、ハイブリッド、地形図の4種類にGMSMapView.mapTypeの値を変化させている。
ResizeMapSample
GMSMapViewの大きさを変えるサンプル。 NaviBarにランダムでMapViewの大きさを縮めるボタンと、元の大きさ(frameいっぱい)に戻すボタンが追加されている。GMSMapView.frame に CGRectを設定するだけ。
GroundOverlaySample
マップの上に画像をオーバーレイ表示し、さらに回転アニメーションさせるサンプル。 GMSGroundOverlayOptionsのインスタンスにUIImageと座標とbearing(方向)とzoomを設定し、GMSMapViewにaddGroundOverLayWithOptions:で追加している。 また、NSTimerによって、30fps, 60deg/sでbearingを変化させている。
ProjectionSample
地図上の特定の座標に貼り付くようにViewを表示させるサンプル。
GMSMapViewのCameraが移動した際に、GMSProjectionオブジェクトを使う事で、経度緯度の座標値<->画面上のXY座標を計算しなおして、MapViewの上に重ねて置いたViewの位置を動かしている。
とりあえずここまででサンプルの半分。 iOSのMapKitや、AndroidでGoogle MapsのSDKを使った事があれば、説明が無くてもなんとなく理解できるものばかりのお手軽さです。
ちょっと疲れて来たので、残りは後編に分けます。