2012-08-06 96 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)); 

希望這有助於!