ฉันสร้างป๊อปอัพโดยใช้ Leaflet:
marker.bindPopup(content).openPopup();
ฉันจะอัปเดตcontent
ค่าในภายหลังได้อย่างไร
ฉันคิดว่าจะทำจากเครื่องหมายบางอย่างเช่นนี้:
marker.updatePopup(newContent);
ฉันสร้างป๊อปอัพโดยใช้ Leaflet:
marker.bindPopup(content).openPopup();
ฉันจะอัปเดตcontent
ค่าในภายหลังได้อย่างไร
ฉันคิดว่าจะทำจากเครื่องหมายบางอย่างเช่นนี้:
marker.updatePopup(newContent);
คำตอบ:
ฉันคิดว่าคุณต้องการให้เนื้อหามีการเปลี่ยนแปลงหลังจากเหตุการณ์บางอย่างเกิดขึ้นเช่น 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
_popup
มีเครื่องหมายขีดล่างอยู่ข้างหน้าเพื่อระบุว่าเป็นอินสแตนซ์ส่วนตัว / สมาชิกและไม่ควรเข้าถึงได้โดยตรง API ที่ถูกต้องคือLayer.setPopupContent () เช่น
marker.setPopupContent(newContent);
อาจจะตอบช้า แต่สำหรับคนอื่นฉันคิดว่าวิธีที่ดีที่สุดอยู่ที่นี่
$('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;
});
คุณสามารถรับเนื้อหาป๊อปอัปด้วย:
marker.getPopup().getContent();
ตั้งค่าเนื้อหาด้วย:
marker.getPopup().setContent("123");
marker.getPopup().update();