sos の 作業メモ

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

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

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でデモアプリ研究と、なんだか終わりが見えてきた感じです。

次回へ続く