마커에서 팝업 컨텐츠를 업데이트하는 방법은 무엇입니까?


12

Leaflet을 사용하여 팝업을 만들었습니다.

marker.bindPopup(content).openPopup();

content나중에 값을 어떻게 업데이트 합니까?

마커에서 다음과 같이 수행한다고 가정합니다.

marker.updatePopup(newContent);

답변:


10

마우스 오버, 컨텍스트 메뉴 또는 기타 이벤트와 같은 일부 이벤트가 발생한 후 내용을 변경하려고한다고 가정합니다.

이를 위해 다음 코드를 사용할 수 있습니다.

//marker creation
var marker = L.marker([44.63, 22.65]).bindPopup('something').addTo(map);
marker.openPopup();

//changing the content on mouseover
marker.on('mouseover', function(){
    marker._popup.setContent('something else')
});

보시다시피 marker._popup 메소드를 사용하여 원하는 마커의 팝업에 액세스 한 다음 setContent 메소드를 사용하여 그 안의 텍스트를 변경할 수 있습니다.

popup.setContent 메소드 참조

이것을 보여주는 Plunker의 코드는 다음과 같습니다 : http://plnkr.co/edit/vjS495QPXiJpKalrNpvo?p=preview


나는 마우스 오버에서 내가해야 할 것을 발견했다 : this.getPopup.setContent ( 'blah blah blah');
TheSteve0

15

_popup앞에 개인 / 회원 인스턴스임을 나타 내기 위해 밑줄이 있으며 직접 액세스해서는 안됩니다. 올바른 API는 Layer.setPopupContent () 입니다. 예 : marker.setPopupContent(newContent);


3

답장에 늦을지도 모르지만 다른 사람들에게는 최선의 방법이 여기 있다고 생각합니다.

http://jsfiddle.net/cPTQF/

$('button').click(function() {
   // Update the contents of the popup
   $(popup._contentNode).html('The new content is much longer so the popup should update how it looks.');

   // Calling _updateLayout to the popup resizes to the new content
   popup._updateLayout();

   // Calling _updatePosition so the popup is centered.
   popup._updatePosition();
   return false;
});

나는 이것이 오래되었다는 것을 알고 있지만 내 Google 검색 결과에 나타 났으므로 다른 사람들도 마찬가지 일 수 있습니다 ...이 방법의 문제는 팝업이 현재 열려 있지 않은 경우 # 1, 버튼 클릭 (또는 무엇이든 당신은 바인딩) 아무것도하지 않습니다. 둘째, 팝업을 닫고 다시 클릭하면 새 컨텐츠가 아닌 원래 컨텐츠를 얻게됩니다!
DR

1

다음을 사용하여 팝업 컨텐츠를 얻을 수 있습니다.

marker.getPopup().getContent();

내용을 다음과 같이 설정하십시오.

marker.getPopup().setContent("123");
marker.getPopup().update();
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.