2012-10-21 3 views
3

내가 대신 마커에 클릭의 일부 일부 다른 물건 (예 : FUNC) 가 얻을이다 않는 마우스 호버 이벤트에 대한 팝업을 제공하기 위해 노력하고있어을 클릭하십시오.리플릿 다른 가져가 클릭 이벤트

(단순히 클릭 이벤트에 호버를 추가 해요)

marker[i].on('mouseover', marker[i].bindPopup('hi').openPopup.bind(marker[i])); 

는 [내가] 단순히 약자 나는 당신이 그 방향으로 생각 도움이 될 것입니다 생각하지 않습니다

내 절반의 성공 코드 루프에 대한


리플릿의 API : 당신은 http://leaflet.cloudmade.com/reference.html#map-openpopup

답변

10

다음 코드는 마커가 마우스를 올리면되는 팝업을 표시하고 마커를 클릭했을 때 뭔가 다른 수행합니다

marker[i].on('mouseover', function(evt) { 
    //evt.target is the marker that is being moused over 
    //bindPopup() does not need to be called here if it was already called 
    //somewhere else for this marker. 
    evt.target.bindPopup('hi').openPopup(); 
}); 
marker[i].on('click', function(evt) { 
    //again, evt.target will contain the marker that was clicked 
    console.log('you clicked a marker'); 
}); 
+0

필자는 오랜 시간 동안 리플릿 버전 0.7을 사용 해왔다. 코드는 'marker [i] .bindPopup ('hi'). openPopup.bind (marker [i]) ' 잘 작동했다. 이 null._ 의 '위도'속성을 읽을 _Cannot하지만 지금은 당신의 솔루션을 사용하고 있습니다 :하지만 난 것을 사용하는 경우 현재 버전 1B와 함께, 그것은 브라우저 콘솔에 오류를 트리거 'e.target합니다. openPopup()' 이 작업이 잘 (예, 나는 다른 곳 bindPopup를 선언하고있어)한다. –

1

mouseover 이벤트에 대한 콜백을 제공하지 않습니다.

marker[i].on('mouseover', function() { 
    marker[i].bindPopup('hi').openPopup.bind(marker[i]) 
}); 

익명 함수를 콜백으로 전달하면 호출 될 때 원하는대로 처리됩니다.

전단지 API에 익숙하지 않아서 (단지 몇 달 전에 사용하기 시작한 것입니다) marker[i].bindPopup('hi').openPopup.bind(marker[i])과 관련된 문제도있을 수 있습니다.

+0

덕분에 @ 마크하지만 정확하지입니다. 내가 마커 [i] .bindPopup ('hi22') .opopup.bind (마커 [i])'를 가지고있는 것을 볼 수 있습니다. 마우스 오버는 hi22 텍스트와 바인드됩니다. 또한 마커 [i] .on ('click', alert ('hi22'));'와 동일합니다. 마지막으로 콜백 함수는 작동 할 필요가 없습니다. – Diolor