忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/11/25 07:39 |
Android2.2 名刺管理アプリケーションを作ってみる6日目

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


2010/09/20 18:59 | Comments(0) | TrackBack() | Android

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<PHP技術者認定試験初級試験を受けてきた | HOME | 買ったものリスト 2010/09/19>>
忍者ブログ[PR]