IT이야기

leaflet의 마커, 클릭 이벤트

cyworld 2021. 3. 22. 21:26
반응형

전단지의 마커, 클릭 이벤트


var map = L.map('map');
var marker = L.marker([10.496093,-66.881935]).on('click', onClick);
function onClick(e) {alert(e.latlng);}
marker.addTo(map)

마커를 클릭하면 경고 메시지는 다음과 같습니다. 정의되지 않음

하지만 변수 맵에 넣으면 작동합니다! (위도와 경도 표시)

map.on('click', onClick); 

누군가 마커에서 작동하지 않는 이유를 알고 있습니까?


수락 된 답변이 맞습니다. 그러나 나는 조금 더 명확성이 필요했기 때문에 다른 사람도 그렇게 할 수 있습니다.

Leaflet을 사용하면지도에서 실제로 수행하는 모든 작업 (이 경우 마커)에서 이벤트를 실행할 수 있습니다.

따라서 위의 질문에서 제안한대로 마커를 만들 있습니다.

L.marker([10.496093,-66.881935]).addTo(map).on('mouseover', onClick);

그런 다음 onClick 함수를 만듭니다.

function onClick(e) {
    alert(this.getLatLng());
}

이제 마커 위에 마우스를 올려 놓으면 현재 위도 / 경도에 대한 경고가 발생합니다.

그러나 'mouseover'대신 'click', 'dblclick'등을 사용할 수 있으며 위도 / 경도 경고 대신 onClick 본문을 사용하여 원하는 다른 작업을 수행 할 수 있습니다.

L.marker([10.496093,-66.881935]).addTo(map).on('click', function(e) {
    console.log(e.latlng);
});

다음은 문서입니다. http://leafletjs.com/reference.html#events


해결책을 찾았습니다.

function onClick(e) {alert(this.getLatLng());}

마커의 getLatLng () 메소드를 사용했습니다.


다음은 함수 호출이있는 jsfiddle입니다. https://jsfiddle.net/8282emwn/

var marker = new L.Marker([46.947, 7.4448]).on('click', markerOnClick).addTo(map);

function markerOnClick(e)
{
  alert("hi. you clicked the marker at " + e.latlng);
}

추가 관련 정보 : 일반적인 요구 사항은 서버에서 더 많은 정보를 가져 오기 위해 마커로 표시된 객체의 ID를 일부 ajax 호출에 전달하는 것입니다.

우리가 할 때 :

marker.on('click', function(e) {...

e우리가 마커 객체에 도착하지 않는 된 MouseEvent에 포인트. 그러나 this이상하게 도 우리가 필요한 모든 것을 전달할 수 this.options있는 options객체 에 도달하기 위해 사용해야 하는 내장 객체 가 있습니다. 위의 경우 옵션에 일부 ID를 전달할 수 있습니다. objid위의 함수 내에서 다음을 호출하여 값을 가져올 수 있습니다.this.options.objid


파티에 조금 늦게 마커 클릭 이벤트의 예를 찾는 동안 이것을 발견했습니다. 원래 포스터가 얻은 정의되지 않은 오류는 onClick 함수가 정의되기 전에 참조되기 때문입니다. 라인 2와 3을 바꾸면 작동합니다.

참조 URL : https://stackoverflow.com/questions/16927793/marker-in-leaflet-click-event

반응형