Search code examples
javaandroiddragosmdroid

How to implement a draggable ExtendedOverlayItem on OSMDroid?


I'm developing a feature to drag a map overlay (using ExtendedOverlayItem class), using osmdroid and OSMBonusPack.

This question talks about a possible solution:

Unable to implement onTouchEvent (Drag & Drop) with Osmdroid

So, my questions are:

1 - Where do I put that code?

2 - Should I create a new class? extending from which other class?

Additional Similar questions:

How do you implement OverlayItem to be draggable? (Using ItemizedIconOverlays if possible)

confusion between overlay, overlayitem and itemizedoverley


Solution

  • I solved my problem by updating the OSMBonusPack Library. And the following code was used to implement the draggable marker:

    import org.osmdroid.bonuspack.overlays.Marker;
    import org.osmdroid.bonuspack.overlays.Marker.OnMarkerDragListener;
    import org.osmdroid.util.GeoPoint;
    
    public static void applyDraggableListener(Marker poiMarker) {
            poiMarker.setDraggable(true);
            poiMarker.setOnMarkerDragListener(new OnMarkerDragListener() {
                    @Override
                    public void onMarkerDragStart(Marker marker) {}
    
                    @Override
                    public void onMarkerDragEnd(Marker marker) {
                            GeoPoint geopoint = marker.getPosition();        
                    }
    
                    @Override
                    public void onMarkerDrag(Marker marker) {}
            });                
    }