วิธีอัปเดตเนื้อหาป๊อปอัปจากตัวทำเครื่องหมาย


12

ฉันสร้างป๊อปอัพโดยใช้ Leaflet:

marker.bindPopup(content).openPopup();

ฉันจะอัปเดตcontentค่าในภายหลังได้อย่างไร

ฉันคิดว่าจะทำจากเครื่องหมายบางอย่างเช่นนี้:

marker.updatePopup(newContent);

คำตอบ:


10

ฉันคิดว่าคุณต้องการให้เนื้อหามีการเปลี่ยนแปลงหลังจากเหตุการณ์บางอย่างเกิดขึ้นเช่น mouseover, contextmenu หรือสิ่งอื่นใด

ในการทำเช่นนั้นคุณสามารถใช้รหัสต่อไปนี้:

//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


ฉันพบว่าใน mouseover ฉันต้องทำ: 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.