- 2007-12-02 11:14
- android
Androidで地図を表示するシンプルなサンプルをご紹介します。
では早速ソースコードをどうぞ。
まずはメイン
メインとか言ってますが、Androidの動作を理解していない人は「Androidアプリケーション開発入門」を参考にして下さい。
public class MapTest extends MapActivity { private MapView mv; private MapController mc; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); mv = new MapView(this); setContentView(mv); mc = mv.getController(); } }
まずはMapActivityを継承する必要があります。
そしてMapViewをnewするときに引数でthisを渡します。
そしてsetContentViewでコンテンツを設定します。
とても簡単ですね。
MapControllerはマップを制御するオブジェクトです。
メニューを作る
メニューでは
- ズームイン
- ズームアウト
- 地図/航空写真
の機能を提供します。
ではソースコードをどうぞ。
private final int ZOOMIN = 0; private final int ZOOMOUT = 1; private final int SATELLITE = 2; @Override public boolean onCreateOptionsMenu(Menu menu) { boolean supRetVal = super.onCreateOptionsMenu(menu); menu.add(0, ZOOMIN, getString(R.string.map_menu_zoom_in)); menu.add(0, ZOOMOUT, getString(R.string.map_menu_zoom_out)); menu.add(0, SATELLITE, getString(R.string.map_menu_toggle_satellite)); return supRetVal; }
メニューボタンが押されるとonCreateOptionsMenuがコールされるので、そこでメニューをaddしていくだけです。
次にメニューの処理を書きます。
メニューの動作
メニューでは「ズームイン」「ズームアウト」「地図と航空写真の切替え」の機能を提供します。
@Override public boolean onOptionsItemSelected(Menu.Item item) { switch (item.getId()) { case ZOOMIN:// ズームイン mc.zoomTo(Math.min(21, mv.getZoomLevel() + 1)); return true; case ZOOMOUT:// ズームアウト mc.zoomTo(Math.max(1, mv.getZoomLevel() - 1)); return true; case SATELLITE:// サテライトと地図を変換 mv.toggleSatellite(); return true; } return false; }
「ズームイン」と「ズームアウト」はMapControllerのメソッドで可能です。
「地図と航空写真の切換え」はMapViewのメソッドで可能です。
おわりに
とっても簡単に地図を表示できました。
ソースコード
とりあえずソースコードを公開しておきます。
MapTest.java
package com.adamrocker.android.map; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import android.os.Bundle; import android.view.Menu; public class MapTest extends MapActivity { private final int ZOOMIN = 0; private final int ZOOMOUT = 1; private final int SATELLITE = 2; private MapView mv; private MapController mc; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); mv = new MapView(this); setContentView(mv); mc = mv.getController(); } // メニューを作る @Override public boolean onCreateOptionsMenu(Menu menu) { boolean supRetVal = super.onCreateOptionsMenu(menu); menu.add(0, ZOOMIN, getString(R.string.map_menu_zoom_in)); menu.add(0, ZOOMOUT, getString(R.string.map_menu_zoom_out)); menu.add(0, SATELLITE, getString(R.string.map_menu_toggle_satellite)); return supRetVal; } // メニューの動作 @Override public boolean onOptionsItemSelected(Menu.Item item) { switch (item.getId()) { case ZOOMIN:// ズームイン mc.zoomTo(Math.min(21, mv.getZoomLevel() + 1)); return true; case ZOOMOUT:// ズームアウト mc.zoomTo(Math.max(1, mv.getZoomLevel() - 1)); return true; case SATELLITE:// サテライトと地図を変換 mv.toggleSatellite(); return true; } return false; } }
res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">MapTest</string> <string name="map_menu_zoom_in">ズームイン</string> <string name="map_menu_zoom_out">ズームアウト</string> <string name="map_menu_toggle_satellite">地図/航空写真</string> </resources>
関連のありそうなエントリ
- Newer: AndroidでGPSを使って現在地を取得する方法
- Older: Androidアプリケーション開発入門
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://www.adamrocker.com/blog/168/android_simple_map_application.html/trackback/
- Listed below are links to weblogs that reference
- Androidで地図を表示する方法 from throw Life
