Fórum nápovědy

Seznam

Zakázání zoomování při scrollování myší

Potůček Jan

11.5.2017 v 20:55

Dobrý den,

pokud přidám do mapy ovládácí prvky pomocí m.addDefaultControls() je možné nějak znemožnit zoom při použití kolečka na myši?

SMap.MOUSE_WHEEL disable?

Děkuji

JP

Ondřej Žára • Webmaster Guru

15.5.2017 v 8:34

Hezky den,

ano. Staci najit ovladac mysi a prekonfigurovat jej. Tedy zhruba:


var mouseControl = null;
var controls = map.getControls();

for (var i=0; i<controls.length; i++) {
if (controls[i] instanceof SMap.Control.Mouse) mouseControl = controls[i];
}

mouseControl.configure(SMap.MOUSE_PAN | SMap.MOUSE_ZOOM);

Jan Volejník reagoval na příspěvek od Ondřej Žára

12.12.2018 v 9:50

To nefunguje. Zoomování kolečkem myši je stále aktivní :(

Anežka

20.12.2018 v 9:58

Dany kod funguje, dalo by se jeste nejak pridat aby ZOOM fungoval pri stisknutem CTRL a kolecku ?

Zde je funkcni:

<div id="map"></div>
<script>

var center = SMap.Coords.fromWGS84(14.4106850, 50.0850192);
var m = new SMap(JAK.gel("map"), center, 12);
m.addDefaultLayer(SMap.DEF_BASE).enable();
m.addDefaultControls();

var layer = new SMap.Layer.Marker();
m.addLayer(layer);
layer.enable();

var options = {};
var marker = new SMap.Marker(center, "myMarker", options);
layer.addMarker(marker);

var mouseControl = null;
var controls = m.getControls();

for (var i = 0; i < controls.length; i++) {

if (controls[i] instanceof SMap.Control.Mouse) {
mouseControl = controls[i];
}
}
mouseControl.configure(SMap.MOUSE_PAN | SMap.MOUSE_ZOOM);
</script>

Tomáš Strejček

15.2.2024 v 16:13

Kdokoliv řešil tenhle problém, doufám, že Vám ušetřím spousty času. Těch 1500 ms upravte na co potřebujete.

document.addEventListener("DOMContentLoaded", function() {
var outerContainer = JAK.gel("m");
if (!outerContainer) {
//console.log('The .lokalitabox container was not found.');
return;
}
var mouseControl; // Define outside to ensure scope accessibility
var controlAdded = false; // Flag to avoid adding controls multiple times
var mouseEnterTimeout; // For managing the delay

outerContainer.addEventListener("mouseenter", function() {
//console.log('Mouse entering .lokalitabox');
// Clear any existing timeout to prevent duplicate control addition
clearTimeout(mouseEnterTimeout);
mouseEnterTimeout = setTimeout(function() {
if (!controlAdded) {
mouseControl = new SMap.Control.Mouse(SMap.MOUSE_PAN | SMap.MOUSE_ZOOM | SMap.MOUSE_WHEEL);
m.addControl(mouseControl);
var labels = {
2: SMap._("map.zooms.world"),
5: SMap._("map.zooms.states"),
8: SMap._("map.zooms.districts"),
11: SMap._("map.zooms.cities"),
14: SMap._("map.zooms.municipalities"),
17: SMap._("map.zooms.streets"),
20: SMap._("map.zooms.houses"),
21: SMap._("map.zooms.birdEye")
};
var z = new SMap.Control.Zoom(labels, {titles:[SMap._("map.zoomIn"), SMap._("map.zoomOut")]});
m.addControl(z);
m.setCursor("move");
//console.log('Mouse control added after delay');
controlAdded = true;
}
}, 1500); // Apply the 900ms delay before adding the control
});

outerContainer.addEventListener("mouseleave", function() {
//console.log('Mouse leaving .lokalitabox');
// Clear the timeout if mouse leaves before the delay ends
clearTimeout(mouseEnterTimeout);
if (mouseControl && controlAdded) {
m.removeControl(mouseControl);
//console.log('Mouse control removed');
controlAdded = false; // Reset the flag
mouseControl = null; // Reset mouseControl to ensure it can be added again
} else {
//console.log('Mouse control was not set or already removed');
}
});
});

Jan Buriánek

17.2.2024 v 22:19

Ano, řešil, třeba zde...
https://napoveda.seznam.cz/forum/threads/92491/1

Akorát to ušetření času, nic proti, ale tenhle kód přestane na konci roku 2025 definitivně fungovat.

Nový dotaz

Přiložené přílohy

    Zbývá 12MB (z 12MB)

    Zakázání zoomování při scrollování myší

    Přiložené přílohy

      Zbývá 12MB (z 12MB)