Matt Roberts
Matt Roberts

Reputation: 26877

How to create a simple draggable marker in OpenLayers

Very simple question, how can I create a draggable marker in an OpenLayers map, and get the latlon when its been dragged. From google, it seems that you can have draggable vectors, but not draggable markers.

I've seen some references to OpenLayers.Control.DragMarker, but this doesn't seem to be in the "core" library. It's used in this example but that seems to be using a custom OpenLayers JS file, so I have no idea how to go about including that in my code.

Code thus far (to add a simple marker):

var layer = new OpenLayers.Layer.TMS( "TMS The Layer","",
    {  url: '', serviceVersion: '.', layername: '.', alpha: true,
        type: 'png', getURL: overlay_getTileURL 
    });

map.addLayers([layer]);


    var markers = new OpenLayers.Layer.Markers( "Markers" );
    map.addLayer(markers);
    var lonLat = new OpenLayers.LonLat( -100 ,100 );
    markers.addMarker(new OpenLayers.Marker(lonLat));

Upvotes: 1

Views: 13786

Answers (3)

Nikolay Traykov
Nikolay Traykov

Reputation: 1695

I've struggled with that a bit, until I dag into the documentation and realized that in 2022 it is very easy to do that:

const translate = new Translate({
   features: new Collection([feature]),
})

translate.on('translateend', e => {
   let lonLat = toLonLat(e.coordinate)
})

map.addInteraction(translate)

Upvotes: 1

Niklas Wulff
Niklas Wulff

Reputation: 3524

I've done that, but I can't find that code now. Take a look at this OpenLayers Example:

Drag Feature

Upvotes: 4

Can you change the markers with features? look this link

Upvotes: 1

Related Questions