Ответ 1
попробовать
var myCircle = new L.CircleMarker(new L.LatLng(50.924480, 10.758276), 10).addTo(map);
map.doubleClickZoom.disable();
отсылайте этот документ
Я пытаюсь отключить масштабирование на карте, когда я нажимаю объект 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, карта масштабируется, как ее отключить?
попробовать
var myCircle = new L.CircleMarker(new L.LatLng(50.924480, 10.758276), 10).addTo(map);
map.doubleClickZoom.disable();
отсылайте этот документ
Сначала вам нужно отключить масштабирование двойного щелчка карты, а затем снова включить его на событии клика по карте. Поэтому, когда вы дважды щелкаете по карте после двойного щелчка по маркеру, он снова увеличивается;) Я попробовал, и он отлично работает для меня! Наслаждайтесь!
map.doubleClickZoom.disable();
map.on('click', function (e) {
map.doubleClickZoom.enable();
});
Похоже, мне подходит следующее решение:
myCircle.ondblclick = function (event) {
event.stopPropagation();
return false;
};
Я также попробовал другой, который также довольно хорошо работает на практике, но я нахожу его немного странным:
myCircle.on("click", function () {
map.doubleClickZoom.disable();
setTimeout(function(){map.doubleClickZoom.enable();}, 1000);
});
Если кто-то здесь ищет решение для варианта использования "Я хочу увеличить карту по двойному щелчку, но не при двойном щелчке по объекту", я решил это следующим образом:
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 у меня не сработали.
Вы можете return false
от вашего обработчика dblclick, который остановит распространение события, например.
myCircle.on("dblclick", function () {
//my dblclick stuff
return false;
});
Теперь другие элементы (такие как карта) не будут обрабатывать это событие