禁用CircleMarker上的地图缩放双击传单

时间:2013-03-14 10:20:48

标签: javascript leaflet

当我点击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事件时,地图都会被缩放,如何禁用它?

7 个答案:

答案 0 :(得分:24)

var myCircle = new L.CircleMarker(new L.LatLng(50.924480, 10.758276), 10).addTo(map);
map.doubleClickZoom.disable(); 

参阅 this document

答案 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

现在其他元素(例如地图)不会处理该事件