向传单标记添加额外的标记?

Adding additional markup to leaflet marker?

我正在尝试为我的传单标记自定义 html 输出。具体来说,我正在尝试为它们分配额外的数据属性,以根据从数据库中提取的 ID 触发 bootstrap 模态,如下所示:

<div class="leaflet-marker-pane" data-toggle="modal" data-target="modal-<?php some id from php(); ?>"

但我正在为如何附加额外的 html 而苦恼。

如果您的目标是在单击特定标记时触发特定模式,则有一种更简单的方法,而不是像您现在提议的那样以声明方式进行。您可以只使用 L.Markerclick 事件并调用您在初始化时将其 ID 添加到标记的特定模式。一个例子:

// Create a new marker
new L.Marker([<?php echo $lat; ?>, <?php echo $lng; ?>], {

    // Add id to marker as an option
    id: <?php echo $id; ?>

// Attach to click event
}).on('click', function (e) {

    // Call modal with id
    $('#modal-' + this.options.id).modal('show');

// Add marker to map
}).addTo(map);

这里有更多关于通过 JS 而不是数据属性处理 bootstrap 的模式:

http://getbootstrap.com/javascript/#via-javascript

我什至想知道按照您建议的方式进行操作是否可行,因为 bootstrap(我假设您使用的是 bootstrap)将在初始化时扫描页面以查找位于那个时间还没有出现在标记上。如果你愿意,你可以尝试,你需要使用数据集 属性:

将数据属性添加到标记的图标
var marker = new L.Marker([<?php echo $lat; ?>, <?php echo $lng; ?>]).addTo(map);

marker._icon.dataset.toggle = 'modal';

marker._icon.dataset.target = 'modal-<?php echo $id; ?>';