地図の移動、拡大縮小、モードの切り替え
先ほど述べたとおり、MapControllerは地図の移動と拡大縮小に使用します。各ボタンをクリックリスナーに関連付ける必要があります。以下はその一例です。
// Set up the button for "Pan East" mPanE = (Button)findViewById(R.id.pane); mPanE.setOnClickListener(new OnClickListener(){ // @Override public void onClick(View arg0) { panEast(); } });
panEast()
関数は、画面サイズの4分の1の幅で地図を動かします。その他の移動も同様に行われます。実際には、タッチスクリーンLCDが搭載されている機器の場合は、この地図だけでドラッグ可能です。タッチスクリーンが搭載されていない機器では、画面上のボタンかパッドの矢印キーを使って地図を動かします。panEast()
関数のコードは次のとおりです。
public void panEast() { Point pt = new Point( mMapView.getMapCenter().getLatitudeE6(), mMapView.getMapCenter().getLongitudeE6() + mMapView.getLongitudeSpan() / 4); mMapView.getController().centerMapTo(pt, true); }
拡大縮小は、MapControllerを通じて現在のズーム倍率を増減させることで簡単に行えます。
public void zoomIn() { mMapView.getController().zoomTo(mMapView.getZoomLevel() + 1); }
地図の表示を衛星画像または渋滞状況表示に切り替える機能は、MapViewから直接実現できます。結果を図2および図3に示します。
public void toggleSatellite() { mMapView.toggleSatellite(); } public void toggleTraffic() { mMapView.toggleTraffic(); }
現在のMapViewの情報を取得する
MapViewが正しく作成されれば、表示中の画面に関するさまざまな情報を取得できるようになります。表示中の地図のステータスを把握するのに役立つ主な関数を次に示します。
- getMapCenter ― 地図の中心地点の緯度と経度を返す
- getLatitudeSpan、getLongitudeSpan ― 現在表示されている区域のサイズを返す
- getZoomLevel、getMaxZoomLevel ― 縮尺レベルを返す(レベルは2倍単位で増減)
- isSatellite ― 現在の地図の表示が衛星画像モードかどうかをチェックする
- isTraffic ― 渋滞状況を表示しているかどうかをチェックする
- isShowMyLocation ― 地図上に現在地が表示されているかどうかをチェックする
- isStreetView ― 現在の地図表示がストリートビューモードかどうかをチェックする