samir chauhan
samir chauhan

Reputation: 1543

Add a marker on mouse click and remove the existing on in openlayers?

I am using Openlayers map. I want a feature when a user clicks on the map the marker should be created but at the same time the existing marker which is already on the map should be deleted or removed and only the latest one should be visible.

  var markers = new OpenLayers.Layer.Markers( "Markers" );
    markers.id = "Markers";
    me.OpenLayers.addLayer(markers);
    /*myMarker = new OpenLayers.Marker(new OpenLayers.Marker( 56.512438257836,27.335700987698 ));
     markers.addMarker(myMarker);*/

    var size = new OpenLayers.Size(30,30);
    var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
    var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png',size,offset);

    //map.setCenter (lonLat, zoom);
    me.OpenLayers.events.register("click", kijs_map_container, function(evt) {
        var lonlat = me.OpenLayers.getLonLatFromViewPortPx(evt.xy).transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
        $("#edit-field-jena-seta-map-openlayers-wkt").val('GEOMETRYCOLLECTION(POINT('+lonlat.lat+'  '+lonlat.lon+'))');
        var pos = me.OpenLayers.getLonLatFromPixel(evt.xy);
        alert(baltic_long);
        var marker = new OpenLayers.Marker(new OpenLayers.LonLat(baltic_lat, baltic_long),icon);
        markers.addMarker(marker);
        marker.events.register("click", marker, function(e){

        });
        //updateMaker(myMarker, pos);
    });

Upvotes: 1

Views: 7336

Answers (2)

André van Toly
André van Toly

Reputation: 565

Probably when you place var marker and initialize icon outside of the me.OpenLayers.events.register(); scope it will possibly be reinitiated the moment you click again for a new marker.

var marker;
icon = new OpenLayers.Icon( ... );

me.OpenLayers.events.register("click", kijs_map_container, function(evt) {
    var pos = me.OpenLayers.getLonLatFromPixel(evt.xy);
    marker = new OpenLayers.Marker(pos, icon);
    markers.addMarker(marker);
});

At least I haven't tested this particular example here, but was my experience with a map editor I'm making.

Upvotes: 0

unibasil
unibasil

Reputation: 488

Remove all markers on layer before creating and adding new one:

markers.clearMarkers(); 
markers.addMarker(marker);

See clearMarkers for more details.

Upvotes: 1

Related Questions