gpt4 book ai didi

jquery-tools - 使用 leaflet markercluster 插件时在单个标记上触发点击事件

转载 作者:行者123 更新时间:2023-12-04 05:23:23 26 4
gpt4 key购买 nike

我的站点包含一个带有 leaflet.markerclusters 插件的 Leaflet map 。我还使用 Flowplayer 播放使用选择器 ID“#video1”在 JQuery 工具叠加层中打开的视频。

目前,当我点击 map 上的任何标记时,它会在叠加层中触发我的测试视频。我的目标是为集群中的每个单独标记创建一个唯一的点击事件。最终,我希望每个标记都有一个点击事件来触发该标记独有的视频。

我是初学者,到目前为止,我一直在使用这些文档齐全的库。但是,我没有弥合当前差距的技能。有人能给我一个正确的方向吗?下面是我的 JS Fiddle 的链接。我的问题从 JavaScript 第 2098 行开始。

 var markers = new L.MarkerClusterGroup();

var addressPoints = [
[40.634902, -73.965054, "Video1"],
[40.660897, -73.961082, "Video2"],
[40.693353, -73.970413, "Video3"],
[40.693289, -73.966289, "Video4"],
[40.68973, -73.971007, "Video5"],
[40.718423, -73.957428, "Video6"],
[40.71817, -73.956918, "Video7"],
[40.681427, -73.993959, "Video8"]
];

for (var i = 0; i < addressPoints.length; i++) {
var a = addressPoints[i];
var title = a[2];
var marker = new L.Marker(new L.LatLng(a[0], a[1]), {
title: title
});
marker.bindPopup(title);
markers.addLayer(marker);
}

map.addLayer(markers);

//assign video div ID to overlay
$('#video1').overlay({
load: false,
top: "center",
left: "center"
});

//bind marker click event to overylay
markers.on('click', function () {
$("#video1").data("overlay").load();
});

谢谢,乔伊

http://jsfiddle.net/Joey84/nM458/26/

最佳答案

使用 markers.on("click"... 函数,您正朝着正确的方向前进。您只需要进行一些编辑。就像您将事件监听器添加到整个“标记”层,您可以将其添加到 for 循环中的各个标记。

...

for (var i = 0; i < addressPoints.length; i++) {
var a = addressPoints[i];
var title = a[2];
var marker = new L.Marker(new L.LatLng(a[0], a[1]), {
title: title
});
if (title=="Video1") {
marker.on('click', function () {
$("#video1").data("overlay").load();
});
}
marker.bindPopup(title);

markers.addLayer(marker);
}
...

同样 - 并且可能是更好的解决方案 - 您可以通过将变量传递给函数来访问有关您在当前使用的 on("click"... 中单击的标记的详细信息。这如果您有多个视频并且不想在创建标记时使用 if 语句进行检查,这将很有用。

 markers.on('click', function (d) {
// Grab marker title and make it look like an ID
var marker_title = "#" + d.layer.options.title.toLowerCase();
// Make sure the jQuery object exists
if ( $(marker_title) ){
// Call up the video.
$(marker_title).data("overlay").load();
}
});

请注意,我使用了 toLowerCase(),因为您的数据标题大写,而视频 ID 全部小写。

这是实际操作: http://jsfiddle.net/nM458/44/

关于jquery-tools - 使用 leaflet markercluster 插件时在单个标记上触发点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15400200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com