Google Maps Android API v2 その4 Interacting with the map
Interacting with the map
Maps APIは、ユーザーの操作に対する応答を、自由にカスタマイズする手段を提供している
UI controls
Maps APIには、グーグルマップアプリに実装されているのと同じ、組み込みのUI controlsがいくつか用意されている。GoogleMap#getUiSettings()メソッドで取得できるUiSettingsを使って、それらのcontrolの有効/無効の制御が可能。また、xmlを使っての設定もできる。
Zoom controls
右下に表示されるズーム用のコントロール。UiSettings.setZoomControlsEnabled(boolean)で有効/無効を切り替える。デフォルトはtrue
Compass
左上に表示されるコンパス。カメラが真下や真北(デフォルトの方向)を向いていない状態になると表示される。コンパスがタップされると、アニメーションしながらカメラが真北&真下(デフォルト)の向きに変わる。カメラがデフォルトの方向になってしばらくしたら、コンパスは消える。
UiSettings.setCompassEnabled(boolean)でコンパスの有効/無効の設定は可能だが、有効の場合でも、コンパスを常に表示しっぱなしにはできない。(カメラがデフォルトの向きの時は消えるから)
My Location button
自分の位置表示を有効にしている時に右上に表示される。このボタンがタップされると、アニメーションしながらカメラの対象が自分の位置に変わる。UiSettings.setMyLocationButtonEnabled(boolean)で有効/無効を設定する。
Map gestures
Maps APIを使ったマップは、Googleマップアプリと同じジェスチャをサポートしている。
マップの状態を維持するために、ズームやパン、チルトや回転(bearing)といったジェスチャを、プログラムで無効にもできる。ただし、ジェスチャが無効の状態でも、プログラムでのカメラ位置の変更は可能。
UiControlsと同様に、UiSettingsを使ってジェスチャの有効/無効の設定が可能。もちろんxmlでの設定もできる。
Zoom gestures
- ダブルタップでズームレベルを+1 (zoom in)
- 二本指タップでズームレベルを-1 (zoom out)
- 二本指のピンチイン/アウト で拡大縮小
- ダブルタップの二回目の指を放さずに、上にスライドでズームイン、下にスライドでズームアウト
なお、UiSettings.setZoomGesturesEnabled(boolean)で、このジェスチャの有効/無効が設定可能だが、たとえジェスチャが無効でも、Zoom controlでのzoom in /out 操作には影響しない。
Scroll(pan) gestures
一本指のスクロールで地図を上下左右に動かせる。UiSettings.setScrollGesturesEnabled(boolean)で、このジェスチャの有効/無効の設定が可能。
Tilt gestures
二本指の上下スクロールによって、真上から斜めの鳥瞰への表示を変更できる。UiSettings.setTiltGesturesEnabled(boolean)で、このジェスチャの有効/無効の設定が可能。
Rotate gestures
画面上での二本指の回転で、地図も回転する。 UiSettings.setRotateGesturesEnabled(boolean)で、このジェスチャの有効/無効の設定が可能。
Map events
Maps APIは、地図上で発生するイベントを受信できるようにする。
Map click / long click events
- OnMapClickListener - ユーザが地図上でタップした座標を受信する。画面のXY座標が必要な時は、Projectionオブジェクトで変換が可能
- OnMapLongClickListener - ロングタップした座標を受信する
Camera change evetns
- OnCameraChangeListener - カメラの位置(座標/ズーム/方位/俯仰角)が変化したイベントを受信する。アニメーションを伴う位置の変化の場合、移動中でのイベントは発生せず、終了時に通知されることが保証されている
いやぁ、ドキュメントはちゃんと読んでみるもんですね。ダブルタップ後に指を離さずに上下に動かすとズームするなんて今まで知りませんでした。もちろん、iPhone版のGoogleMapsもそうでした。
書き始めた時よりなんだかボリュームが増えて、いつ終わるかわからなくなってきましたが、その5でView, その6と7でデモアプリ研究と、なんだか終わりが見えてきた感じです。