Search code examples
javascriptevent-handlingleaflet

How do you add marker to map using leaflet map.on('click', function) event handler


I'm trying to use an event handler to add a marker to the map. I can manage this with a callback function, but not when I separate the function from the event handler.

Callback (http://fiddle.jshell.net/rhewitt/U6Gaa/7/):

map.on('click', function(e){
    var marker = new L.marker(e.latlng).addTo(map);
});

Separate function (http://jsfiddle.net/rhewitt/U6Gaa/6/):

function newMarker(e){
    var marker = new L.marker(e.latlng).addTo(map);
}

Solution

  • In your fiddle code, the function is in the wrong scope. Try moving the function inside the map function instead of in it's own scope...

    I.e. instead of:

    });
    
    function addMarker(e){
        // Add marker to map at click location; add popup window
        var newMarker = new L.marker(e.latlng).addTo(map);
    }
    

    use (note the 2 brackets moved further down)

    function addMarker(e){
        // Add marker to map at click location; add popup window
        var newMarker = new L.marker(e.latlng).addTo(map);
    }
    
    });