「osmdroid
」ネタが続きますが、今日も今日とて「osmdroid
」についてです。
今回は、地図に表示しているマーカーをドラッグした際に、移動後の地点の緯度経度を取得する方法についてです。
早速ですが、実装方法は下記の通りです。
マップの設定と表示に関しては割愛させていただきました。
Marker marker = new Marker(mapView); marker.setPosition(new GeoPoint([緯度], [経度])); marker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM); marker.setDraggable(true); marker.setOnMarkerDragListener(new Marker.OnMarkerDragListener() { @Override public void onMarkerDrag(Marker marker) { // マーカーを移動している時の処理 } @Override public void onMarkerDragEnd(Marker marker) { // マーカーを移動し終わった時の処理 Double lat = marker.getPosition().getLatitude(); Double lng = marker.getPosition().getLongitude(); } @Override public void onMarkerDragStart(Marker marker) { // マーカーを移動し始めた時の処理 } }); mapView.getOverlays().add(marker);
ポイントは 4行目と、5~17行目です。
まず、4行目でマーカーのドラッグ移動を有効にしています。
で、5~17行目でマーカーが移動し始めた時、移動している時、移動し終わった時の処理をそれぞれ指定します。
私の場合、マーカーを移動し終わった時に緯度経度を取得するようにしました。
onMarkerDragEnd
の引数で marker
が渡されているので、ここから下記の処理で緯度経度を取得しています。
Double lat = marker.getPosition().getLatitude(); Double lng = marker.getPosition().getLongitude();
処理としては以上です!
以上、「osmdroid」のマーカーをドラッグで移動した時に緯度経度を取得する方法についてでした。
ご参考になれば幸いです。