我正在尝试编写此函数,以便单击在Google地图中创建的新项目时,应将panTo()运行到指定的latlng。我不知道addListener是否无法将参数发送给回调函数。

function createLinkToMarker(title, latlng, container) {
    var a = L.DomUtil.create('a', 'link-marker', container);
        a.href='#',
        a.innerHTML = title;

    function pan() {//??? why I passing argument(latlng) for each new A element?
        console.log(arguments);
        map.panTo(latlng);
    }
    L.DomEvent
        .addListener(a, 'click', L.DomEvent.stopPropagation)
        .addListener(a, 'click', L.DomEvent.preventDefault)
        .addListener(a, 'click', pan);
    return a;
}

最佳答案

您可能应该只将latlng值添加到DOM元素,然后在侦听器中检索它。如果您使用的是HTML5,则可以存储带有前缀“ data”的项目,因此可以将元素中的纬度存储为“ data-lat”,经度存储为“ data-lon”,即:

a.setAttribute( "data-lat", latlng.lat );
a.setAttribute( "data-lon", latlng.lng );


然后在您的听众中:

var lat = this.getAttribute( "data-lat" );
var lon = this.getAttribute( "data-lon" );
map.panTo( new L.LatLng( lat, lon ) );


希望这可以帮助!

关于javascript - 如何将参数传递给Leaflet事件监听器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11823367/

10-15 02:05