Google Maps SDK for iOS Ver.1.2.1 後編 そしてSDKDemosのソースも読んでみたよ
2013/5/19
1.3.0でTileOverlayのデモが追加されたので、記事を一部修正しました。 1.3.0の記事はこちら
2013/4/27 追加
さっそく1.2.2がリリースされています。 記事はこちら
SDKについているSDKデモのソースをざっと眺めてみました。
デモの項目は1.1.2のサンプルよりandroid版のそれに近いかも?
あと、イントロダクションを良く読んでみたらSupported Platformsには
Applications that use the Google Maps SDK for iOS will work on iOS 5.1 and above.
なんて書いてありました。早速 5.1.1なiPhone4で試したところ、一応動きましたが…
-[UIDeviceRGBColor copyWithZone:]: unrecognized selector sent to instance 0xXXXXX
というエラーがPolygonsのサンプルで出て来てます。 MapViewにpolygonを追加する際にdeep copyするんだろうし、これはもうどうしようもなさげ。おとなしく 6.0以降で使う事にしましょう。
構造
全体の構造は、デモ一覧のTableViewとデモ画面の Master-Detail。 Samples.mの中で デモ用のタイトルと呼び出すViewControllerのクラスが定義されてます。
Basic Map
デフォルトのGMSMapViewがぺろんと貼ってあるだけのデモ。スクロール、ズーム、ティルト、回転と操作は可能なので、これだけでもちゃんとGoogleMapになってます。
- (void)viewDidLoad {
[super viewDidLoad];
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.868 longitude:151.2086 zoom:6];
self.view = [GMSMapView mapWithFrame:CGRectZero camera:camera];
}
Map Types
UISegmentedControl でノーマル/ハイブリッド/衛星写真/地形図の4種類を切り替えるデモ
Traffic Layer
Basic Mapに、GMSMapView.trafficEnabled = YESを追加しただけのデモ。これだけで道路の混雑状況がレイヤー表示されます。
My Location
GPSなどで位置情報を取得し、それをマップの中心に表示し続けられるデモ。
コンパスとMyLocationボタンの表示をonにし、myLocationEnabled = YES、位置情報の更新のイベントをKVOパターンで取得する形になってます。
Gesture Control
ピンチによるズームジェスチャのon/offをプログラムから切り替えるデモ
Markers
プログラムでマーカーを表示するデモ
Custom Markers
ユーザーの操作を契機として、プログラムで動的に色違いのマーカーを追加するデモ
Marker Events
マーカーがタップされたときにカメラポジションをそこに移動させるのと、自前のViewでInfoWindowを表示させるデモ
Polygons
タップされたら塗りつぶし色を変更するポリゴンを表示するデモ
Polylines
ポリーラインを表示するデモ
Ground Overlays
地図上に画像をオーバーレイ表示するデモ
Tile Overlay
モスコーンセンター(I/OやWWDCが行われる場所)の建物のフロアマップ(1F〜3F)をGMSTileLayerとして表示するデモ。単なるPolygonや画像のOverlayではない。
Fit Bounds
指定された緯度経度の範囲を、画面におさまるように自動でカメラポジションを計算して表示するデモ
Camera Animation
NSTimerでカメラをグルグルと動かし続けるデモ。とても格好いい。
Map Layer
マップの上にCABasicAnimationのレイヤーをかぶせ、アニメーション表示でカメラ移動を行うデモ
Geocoder
マップ上のタップされた緯度経度からGeoCodingによって住所を問い合わせ、それをタイトルにしたマーカーを作成するデモ
1.2.1になって、android版よりコードがすっきりして書きやすくなった感じですね。
これで5.1でも動いてくれれば文句なしなのに…
あ、そうそう、WWDCですが、「purchaseボタンを押していたからチケットは確保されてるよ! 12時間以内に購入手続きの方法をメールするね!」とappleさんから連絡がきました。
なんとかなりそうですごく嬉しい!!