【Android】「osmdroid」でマーカーをドラッグで移動させた時の緯度経度を取得する

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」のマーカーをドラッグで移動した時に緯度経度を取得する方法についてでした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG