2012-08-06 97 views
0

我正在尝试编写此功能,以便点击在Google地图中创建的新项目时应该运行panTo()至指定的latlng。我不知道addListener是否无法向回调函数发送参数。如何将参数传递给Leaflet事件侦听器?

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; 
} 

回答

2

您应该将latlng值添加到DOM元素并在侦听器中检索它。如果您使用HTML5,你可以存储与前缀“数据”,所以你可以在元素存储纬度“数据-LAT”和经度“数据-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)); 

希望这有助于!