javascript - 显示带有传单的弹出窗口时临时删除集群
问题描述
我正在尝试使用外部(地图外)链接打开传单弹出窗口。我的代码运行良好,但是当目标位于集群中时,它不会展开并且不会显示弹出窗口。
这是我的 JS:
var center = {lat:48.835797462431, lon:2.35107421875};
var abp_umap = null;
var markCluster;
var markers = [];
var umusers = {
"557":{"lat":48.8168,"lon":2.488,"img":"<a href=\"#\" class=\"popmap\" title=\"test01\">test01<\/a>"},
"2191":{"lat":48.8168,"lon":2.488,"img":"<a href=\"#\" class=\"popmap\" title=\"test02\">test02<\/a>"},
"979":{"lat":49.8168,"lon":2.488,"img":"<a href=\"#\" class=\"popmap\" title=\"test03\">test03<\/a>"},
"235":{"lat":52.597,"lon":13.1211,"img":"<a href=\"#\" class=\"popmap\" title=\"test04\">test04<\/a>"},
"2193":{"lat":45.9238,"lon":6.86933,"img":"<a href=\"#\" class=\"popmap\" title=\"test05\">test05<\/a>"},
"2192":{"lat":44.6333,"lon":-1.0667,"img":"<a href=\"#\" class=\"popmap\" title=\"test06\">test06<\/a>"},
"2190":{"lat":43.8347,"lon":4.3614,"img":"<a href=\"#\" class=\"popmap\" title=\"test07\">test07<\/a>"}}
function init_map() {
abp_umap = L.map("abp_usermap").setView([center.lat, center.lon], 5);
markCluster = L.markerClusterGroup();
L.tileLayer("//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {attribution: '© <a href="https://www.openstreetmap.org" title="OpenStreetMap">OpenStreetMap</a> contributors'}).addTo(abp_umap);
L.control.scale().addTo(abp_umap);
for (user in umusers) {
var uIcon = L.icon({ iconUrl:"https://forum.raspfr.org/images/Raspberry_Pi_logo.png", iconSize:[25, 32], iconAnchor: [12.5,16], popupAnchor :[(25/2)-12.5,-16]});
var marker = L.marker([umusers[user].lat, umusers[user].lon], { icon: uIcon }).bindPopup(umusers[user].img, {className:''});
markers[user] = marker;
markCluster.addLayer(marker);
}
abp_umap.addLayer(markCluster);
}
$(function() {
init_map();
$("#centerme").click(function() { abp_umap.setView([48.835797462431, 2.35107421875]); return false; });
$("#rzoom").click(function() { abp_umap.setZoom(5); return false; });
$(".popmap").on("click", function(e) {
e.preventDefault();
mypop = markers[this.id];
abp_umap.setView([umusers[this.id].lat, umusers[this.id].lon]);
abp_umap.setZoom(14);
mypop.openPopup();
return false;
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/leaflet/1.4.0/leaflet.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.4.1/MarkerCluster.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.4.1/MarkerCluster.Default.css" />
<script src="//cdnjs.cloudflare.com/ajax/libs/leaflet/1.4.0/leaflet.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.4.1/leaflet.markercluster.js"></script>
<a href="#" class="popmap" id="557" title="test01">test01</a>, <a href="#" class="popmap" id="2191" title="test02">test02</a>, <a href="#" class="popmap" id="979" title="test03">test03</a>, <a href="#" class="popmap" id="235" title="test04">test04</a>, <a href="#" class="popmap" id="2193" title="test05">test05</a>, <a href="#" class="popmap" id="2192" title="test06">test06</a>, <a href="#" class="popmap" id="2190" title="test07">test07</a>
<br /><div id="abp_usermap" style="height:200px;"></div><br />
解决方案
markerCluster
对象有自己的点击事件 - clusterclick
。如果您希望在单击集群时发生某些事情,则需要监听这些。
推荐阅读
- php - similar_text, levenshtein 寻找子串相似度
- c# - 如何将 C# 中分配的内存释放给从 C++ dll 传递的 IntPtr?
- python - 如何在python中将点更改为轴上的逗号
- google-apps-script - 隐藏除标题和最后一行之外的所有行
- c++ - 从 Qt 项目中的库编译 C 源文件
- python - 以编程方式在 (I)python 中制作和保存绘图,而无需先在屏幕上渲染它们
- amazon-web-services - 如何避免 AWS Athena CTAS 查询创建小文件?
- r - 使用 for 循环和向量创建具有 64 个单独 txt 文件的新数据文件的问题
- javascript - 如何在客户端的函数中使用 node.js 变量?
- nativescript - 在 Nativescript/angular 中处理反向路由的推荐方法?