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); }