2012-08-06 3 views
0

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

답변

2

아마도 DOM 요소에 latlng 값을 추가하고 수신기에서 검색해야합니다.

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

그런 다음에 : 당신은 HTML5를 사용하는 경우에는 접두사 "데이터"그래서 당신은 "데이터 경도", 즉 같은 "데이터 위도 '와 경도로 요소 위도를 저장할 수있는 항목을 저장할 수 있습니다 귀하의 청취자 :

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

희망이 있습니다.

관련 문제