单击图层时如何停止触发地图单击事件?
How can I stop a map click event from firing when clicking on a layer?
我有一个在点击地图时触发的点击事件。但是,单击标记层时我也有一个单独的事件。当我点击标记时是否可以停止触发地图点击事件?
地图点击事件:
map.on('click', function (e) {
if (isAddingLocations) {
console.log(e.lngLat);
$('#formtable').modal('show');
clickCoords = e.lngLat.toArray();
document.getElementById("latitudef").value = String(clickCoords[1])
document.getElementById("longitudef").value = String(clickCoords[0]);
}
});
标记点击事件:
map.on("click", "quebec", function (e) {
map.getCanvas().style.cursor = 'pointer';
var location = e.features[0].properties.location;
var province = e.features[0].properties.province;
var link = e.features[0].properties.link;
var coordinates = e.features[0].geometry.coordinates.slice();
timeadded = e.features[0].properties.timeadded;
document.getElementById("location").innerHTML = location + ", " + province;
document.getElementById("link").innerHTML = '<a class="btn btn-info btn-lg" href="' + link + '"target="_blank" role="button">More Info</a>';
document.getElementById("latitudee").innerHTML = coordinates[1];
document.getElementById("longitudee").innerHTML = coordinates[0];
document.getElementById("locatione").innerHTML = location;
document.getElementById("provincee").innerHTML = province;
document.getElementById("linke").innerHTML = link;
if (isAddingLocations) {
$('#formedit').modal('show');
}
else {
sidedivsize_toggle(sdiv3, sdiv1, sdiv2);
}
});
我在想也许在层参数中可能有一个“not 'quebec'”表达式或其他东西。或者如果第二个事件触发阻止第一个事件。不确定如何做这些事情。当然,欢迎任何其他解决方案。
这个问题可能有多种解决方案。一种解决方案是 Map-GL-Utils 的 clickOneLayer 函数,它会根据图层是否被单击或单击是否错过了所有内容来触发不同的回调。
我有一个在点击地图时触发的点击事件。但是,单击标记层时我也有一个单独的事件。当我点击标记时是否可以停止触发地图点击事件?
地图点击事件:
map.on('click', function (e) {
if (isAddingLocations) {
console.log(e.lngLat);
$('#formtable').modal('show');
clickCoords = e.lngLat.toArray();
document.getElementById("latitudef").value = String(clickCoords[1])
document.getElementById("longitudef").value = String(clickCoords[0]);
}
});
标记点击事件:
map.on("click", "quebec", function (e) {
map.getCanvas().style.cursor = 'pointer';
var location = e.features[0].properties.location;
var province = e.features[0].properties.province;
var link = e.features[0].properties.link;
var coordinates = e.features[0].geometry.coordinates.slice();
timeadded = e.features[0].properties.timeadded;
document.getElementById("location").innerHTML = location + ", " + province;
document.getElementById("link").innerHTML = '<a class="btn btn-info btn-lg" href="' + link + '"target="_blank" role="button">More Info</a>';
document.getElementById("latitudee").innerHTML = coordinates[1];
document.getElementById("longitudee").innerHTML = coordinates[0];
document.getElementById("locatione").innerHTML = location;
document.getElementById("provincee").innerHTML = province;
document.getElementById("linke").innerHTML = link;
if (isAddingLocations) {
$('#formedit').modal('show');
}
else {
sidedivsize_toggle(sdiv3, sdiv1, sdiv2);
}
});
我在想也许在层参数中可能有一个“not 'quebec'”表达式或其他东西。或者如果第二个事件触发阻止第一个事件。不确定如何做这些事情。当然,欢迎任何其他解决方案。
这个问题可能有多种解决方案。一种解决方案是 Map-GL-Utils 的 clickOneLayer 函数,它会根据图层是否被单击或单击是否错过了所有内容来触发不同的回调。