sos の 作業メモ

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

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

Google Maps Android API v2 その7 API Demos 後編

前回の続き

残りのデモを見て行きます。

Polygons

マップに二種類のPolygonオブジェクトを追加するデモ。ひとつは、二カ所の穴の空いた正方形、もう一つは、縁の線の太さと、塗りつぶしの色と透過率を変更可能な楕円。

ポイント

  • setUpMap()の中でPolygonを生成。穴の部分はaddHole()で追加。四角いPolygonを作るのに、craeteRectangle()というメソッドを定義。
  • 楕円は400個の点群で定義されている。

Polylines

マップに三種類のPolylineオブジェクトを追加するデモ。ひとつはメルボルン-アデレード-パースを結ぶ線群、もうひとつはLHR-AKL-LAX-JFK-LHR(世界各地の空港)を結んだgeodesicな線群、最後はシドニーを中心とした線の太さと色と透過率を変更可能な楕円。

  • setUpMap()でPolylineを生成。
  • 楕円は100個の点群で定義されている。

Circles

マップ上にマーカーとCircleオブジェクトを追加するデモ。 中心と縁の2箇所のマーカーと共に生成されるCircleは、線の太さと塗りつぶしの色と透過率が変更可能。 中心のマーカーを移動させると、Circleも共に移動し、縁のマーカーを移動させると、Circleの大きさが変わる。

また、マップ上でロングタップすると、新しいCircleが追加される。

  • class DraggableCircleで移動可能なCircleを定義

    2つのMarkerと1つのCircleオブジェクトをメンバとして持ち、onMarkerMoved()とonStyleChang()というイベントハンドラもどきのメソッドが定義されている。前者はOnMarkerDragListenerのonMarkerMoved()から、後者はOnSeekBarChangeListenerのonProgressChanged()から呼び出される。

Tile Overlays

マップのタイルを地球ではなく月面のものに置き換えるデモ。Googleが用意している月面画像のサーバー(lunarmaps)からタイルを取得している。

ポイント

  • GoogleMap#setMapType()に GoogleMap.MAP_TYPE_NONEを設定し、TileProviderを実装したオブジェクトをaddTileOverlayでセットする

    GoogleMapオブジェクトが必要とするタイルは、TileProvider#getTile(x,y,zoom)で返してやればよい。

    Lat=0,Lng=0を基準とし、経度は-180(W) 〜 180(E)、緯度は85.0511(N)から-85.0511(S)のメルカトル投影法。Zoom level 0が世界全体の地図で、level 1 が 縦横2枚、level Nで 縦横 2Nとなるようにタイルを作ればよい

Options

XMLによる初期オプション設定のデモ

ポイント

  • options_demo.xmlにずらっと並んだattribute

Multiple Maps

一つの画面内に4つの異なるマップを表示するデモ。MapFragmentなので簡単に複数のマップ表示が可能。

ポイント

  • multimap_demo.xmlの指定だけで複数表示に対応している

Retain map

MapFragmentのライフサイクルをActivityと別にして、同じGoogleMapオブジェクトを利用するためのデモ。

ポイント

  • onCreateの MapFragment#setRetainInstance()の処理

Raw MapView

MapFragmentではなく、MapViewを使用してマップ表示を行うデモ。

ポイント

  • raw_mapview_demo.xmlの書き方
  • Activityのライフサイクルイベント(onCreateやonResume等)をMapViewに伝えるところ

Programmatically add map

レイアウトファイルを使わず、プログラムでMapFragmentを生成し、マップを表示するデモ。

ポイント

特になし。Fragmentを動的に作る処理そのもの。


ひととおりデモのソースを眺めてみました。iOS版と一緒なんですが、こっちの方が Fragmentで操作できるのと、xmlで初期設定が可能な分、扱いやすいような気がちょっとだけします。 最低限の知識は頭に入ったので、ここからは実際にアプリに組込みながら、追加調査をしていくことにします。

というわけで、Google Maps Android API v2の紹介はひとまず終了。おつかれさまでしたー