当我点击CircleMarker对象时,我正试图在地图上禁用缩放,但直到现在,都没有成功。
这是我的代码:
var myCircle = new L.CircleMarker(new L.LatLng(50.924480, 10.758276), 10).addTo(map);
myCircle.on("click", function () {
//my click stuff
});
myCircle.on("dblclick", function () {
//my dblclick stuff
});
每次触发dblclick事件时,地图都会被缩放,如何禁用它?
答案 0 :(得分:24)
试
var myCircle = new L.CircleMarker(new L.LatLng(50.924480, 10.758276), 10).addTo(map);
map.doubleClickZoom.disable();
答案 1 :(得分:2)
首先,您需要禁用地图双击缩放,然后在地图点击事件上再次启用它。因此,当您双击标记后双击地图时,它会再次缩放;)我尝试了它,它对我来说非常有用!享受!
map.doubleClickZoom.disable();
map.on('click', function (e) {
map.doubleClickZoom.enable();
});
答案 2 :(得分:1)
以下解决方案似乎对我有用:
myCircle.ondblclick = function (event) {
event.stopPropagation();
return false;
};
我还尝试了另一种,在实践中也很有效,但我发现它有点hacky:
myCircle.on("click", function () {
map.doubleClickZoom.disable();
setTimeout(function(){map.doubleClickZoom.enable();}, 1000);
});
答案 3 :(得分:0)
如果有人在这里寻找用例的解决方案“我想通过双击放大地图,但是如果双击发生在实体上则不希望”,这就是我的解决方法:>
const circle = new L.circlemarker(...).addTo(map);
circle.on("dblclick", () => {
map.doubleClickZoom.disable();
doSomething();
setTimeout(() => {
map.doubleClickZoom.enable();
}, 1); // Without the timeout the map will still zoom in on entity double-click
});
“ dblclick”处理程序中的FYI event.preventDefault();
event.stopPropagation();
和return false;
对我不起作用。
答案 4 :(得分:0)
尝试一下...当您将鼠标悬停在圆圈上时,禁用map.doubleClickZoom;离开时启用
var myCircle = new L.CircleMarker(new L.LatLng(50.924480, 10.758276), 10).addTo(map);
myCircle
.on("click", function () {
//my click stuff
})
.on("dblclick", function () {
//my dblclick stuff
})
.on('mouseover', function () {
map.doubleClickZoom.disable();
})
.on('mouseout', function () {
map.doubleClickZoom.enable();
});
答案 5 :(得分:0)
这里的所有答案都是在初始化Leaflet映射对象之后。
我想说明一下,您还可以在地图对象初始化期间禁用doubleClickZoom。
注意:这将禁用doubleClickZoom到整个地图,而不仅仅是circleMarkers。
map = L.map('map', {
center: [39.8282, -98.5795],
zoom: 5,
doubleClickZoom: false
});
P.S。我正在运行传单版本1.7.1
答案 6 :(得分:-2)
您可以从dblclick处理程序中The system cannot find the file specified.
来阻止事件传播,例如
return false
现在其他元素(例如地图)不会处理该事件