AndroidManifest.xmlに必要な設定を追加
MapViewではネットワーク、GPSを使用するため、以下の設定が必要になります。
<!-- MapViewを使用するのに必要な設定 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
アプリ起動時にLocationManagerを起動
アプリ起動時にLocationManagerを起動し、位置情報を取得します。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//現在位置 (NETWORK)
mLocationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000,0,this);
//プログレスダイアログを表示
mProgDialog = new ProgressDialog(this);
mProgDialog.setMessage("現在位置取得中");
mProgDialog.show();
}
位置情報を取得し地図を表示
LocationListener:: onLocationChangedで位置情報を受け取り、LocationManagerを停止します。MapViewを作成し、地図の表示位置と縮尺レベルの設定を行います。地図を長押しすることで目的を決めるため、地図上での長押しイベントの発行を許可しておきます。LocationManagerで取得した位置にピンを立て、MapViewをカレントビューに追加します。これで画面上に地図が表示されます。
//位置情報取得
public void onLocationChanged(Location location) {
//プログレスダイアログを停止
if(mProgDialog!=null){
mProgDialog.dismiss();
mProgDialog = null;
}
//LocationManagerを停止
mLocationManager.removeUpdates(this);
//MapViewを作成
mMapView = new MapView(this,"<あなたのアプリケーションID>");
//地図の表示位置をLocationManagerで取得した位置に変更
MapController mapController = mMapView.getMapController();
GeoPoint centerPos = new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6));
mapController.setCenter(centerPos);
//ズームレベルをセット
mapController.setZoom(4);
//地図上で長押しイベントの発行を許可する
mMapView.setLongPress(true);
//MapTouchListenerを設定
mMapView.setMapTouchListener(this);
//LocationManagerで取得した位置にピンを立てる
mPinOverlay = new PinOverlay(PinOverlay.PIN_VIOLET);
mMapView.getOverlays().add(mPinOverlay);
mPinOverlay.addPoint(centerPos,null);
//LocationManagerで取得した位置をルート開始位置とします
mStartPos = centerPos;
//MapViewをカレントビューに追加
setContentView(mMapView);
}


