http://codezine.jp/article/detail/4878
今回は残る地図の実装です。
現在はマップを選択すると、現在値などの指定をしていないのでデフォルトの日本全土マップが表示されます。
とりあえずMapView.onCreate()を実装。
/src/com.google.android.maps/MapActivity.java
public class MapActivity extends com.google.android.maps.MapActivity implements OnCheckedChangeListener {
//インスタンス変数
private MapView map = null;
private RadioButton normalMapRadio = null;
private RadioGroup radioGroup = null;
private ToggleButton currentLocationToggle = null;
private MapController controller = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
// UI部品の取得
map = (MapView) findViewById(R.id.map);
radioGroup = (RadioGroup)findViewById( R.id.mapRadioGroup);
normalMapRadio = (RadioButton)findViewById(R.id.normalMapRadio);
currentLocationToggle = (ToggleButton)findViewById( R.id.currentLocationToggle);
// デフォルトで「地図」ボタンを選択しておく
normalMapRadio.setChecked( true);
// ラジオボタンのクリックリスナー
radioGroup.setOnCheckedChangeListener( this);
// マップコントローラを取得
controller = map.getController();
// マップビューの各使用フラグをセット
map.setBuiltInZoomControls( true);
map.setSatellite( false);
map.setClickable( true);
map.setEnabled( true);
}
}
GoogleMapを使用するにはいつものActivityではなくMapActivityを継承する必要があります。このMapActivityは単にActivityを継承して地図を利用するのに必要な機能を付け加えただけなので、概ね同じように使用することができます。
ひとつだけabstract MapActivity.isRouteDisplayed()が宣言されているのでこちらの実装を行う必要があります。
単にルート表示を行うか否かのフラグみたいなので今回はとりあえずreturn false;とかやっておけば問題なさげです。
radioGroupは"@+id/mapRadioGroup"のラジオボタングループ、normalMapRadioはその中の「地図」ボタンです。
RadioGroup.setChecked()で選択状態のデフォルト値を指定します。
setOnCheckedChangeListener()でラジオボタンにクリックリスナーを定義します。
クリックが検知されるとonCheckedChanged()が発動します。
で、これはOnCheckedChangeListenerインターフェイスで宣言されているのでimplementsして実装する必要があります。
MapViewの各メソッドでフラグを投入し、動作を指定します。
setBuiltInZoomControls()でズームの可否、setSatellite()で衛星写真表示にするか否か、setClickable()でクリックやドラッグの可否、というかんじみたいです。
setClickable()とsetEnabled()の違いがわからなかった。
アクティビティからマップAPIの拡大縮小といった具体的操作を行うには、MapView.getController()でMapControllerを取得します。
今回はとりあえず取得しただけで操作は無し。
ということでisRouteDisplayed()とonCheckedChanged()を実装します。
//ラジオボタンの選択変更時にマップを切り替える
public void onCheckedChanged(RadioGroup group, int checkedId) {
// 「地図」がクリックされていたら衛星写真をオフ
if( checkedId == R.id.normalMapRadio){
map.setSatellite( false);
//「衛星写真」がクリックされていたら衛星写真をオン
}else if( checkedId == R.id.satelliteMapRadio){
map.setSatellite( true);
}
}
//ルート表示を行うか否かのフラグ
protected boolean isRouteDisplayed() {
return false;
}
onCheckedChanged()は第一引数にラジオボタングループ、第二引数にラジオボタンIDが入ってきます。第一引数は複数のラジオボタングループがあったりする場合に使うのだと思いますが、今回はひとつしかないのでIDだけで十分です。
その後はクリックされていたボタンによって、衛星写真をオンオフしているだけです。
isRouteDisplayed()は単にfalseを返します。
以上でラジオボタンが実装されたマップビューが完成しました。
Androidの記事
PR
トラックバック
トラックバックURL: