Подтвердить что ты не робот

Отключить масштабирование карты с помощью двойного щелчка CircleMarker в листовке

Я пытаюсь отключить масштабирование на карте, когда я нажимаю объект 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, карта масштабируется, как ее отключить?

4b9b3361

Ответ 1

попробовать

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

отсылайте этот документ

Ответ 2

Сначала вам нужно отключить масштабирование двойного щелчка карты, а затем снова включить его на событии клика по карте. Поэтому, когда вы дважды щелкаете по карте после двойного щелчка по маркеру, он снова увеличивается;) Я попробовал, и он отлично работает для меня! Наслаждайтесь!

map.doubleClickZoom.disable();

map.on('click', function (e) { 
  map.doubleClickZoom.enable();
 });

Ответ 3

Похоже, мне подходит следующее решение:

myCircle.ondblclick = function (event) {
    event.stopPropagation();
    return false;
};

Я также попробовал другой, который также довольно хорошо работает на практике, но я нахожу его немного странным:

myCircle.on("click", function () {
  map.doubleClickZoom.disable();
  setTimeout(function(){map.doubleClickZoom.enable();}, 1000);
});

Ответ 4

Если кто-то здесь ищет решение для варианта использования "Я хочу увеличить карту по двойному щелчку, но не при двойном щелчке по объекту", я решил это следующим образом:

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
});

К вашему сведению event.preventDefault(); event.stopPropagation(); и return false; внутри обработчика dblclick у меня не сработали.

Ответ 5

Вы можете return false от вашего обработчика dblclick, который остановит распространение события, например.

myCircle.on("dblclick", function () {
    //my dblclick stuff
    return false;
});

Теперь другие элементы (такие как карта) не будут обрабатывать это событие