Désactiver le zoom double-clic dans OpenLayers 3


8

Je l'ai cherché sur tout le Web et j'ai finalement trouvé sur artamstrong.com comment désactiver une seule fonctionnalité comme "mouseWheelZoom".

Voici comment désactiver le zoom double clic dans OpenLayers 3:

var map = new ol.Map({
    controls : ol.control.defaults()
                .extend([ new ol.control.FullScreen() ]),
    interactions : ol.interaction.defaults({doubleClickZoom :false}),
    target : 'map',
    layers : [ new ol.layer.Tile({
            title : 'OpenStreetMaps',
            preload : Infinity,
            source : new ol.source.OSM(),
            visible : true
    }) ],
    view : new ol.View({
            center : ol.proj.transform([ 9.41, 48.82 ], 'EPSG:4326','EPSG:3857'),
            zoom : 12
    })
});

C'est vraiment aussi simple que cela, dites simplement à ol3 de définir "doubleClickZoom" sur false:

interactions : ol.interaction.defaults({doubleClickZoom :false})

5
Salut cerveau, Bienvenue sur GIS @ Se, ce sont des informations incroyablement utiles, mais ce site nécessite la publication de questions et réponses spécifiques. N'hésitez pas à modifier votre question pour en faire une question, puis répondez-y avec votre solution. Les personnes qui posent des questions peuvent répondre à leurs propres questions.
Mark Cupitt

Réponses:


8

Si vous souhaitez désactiver doubleClickZoom après l'initialisation de la carte, voici le moyen:

var dblClickInteraction;
// find DoubleClickZoom interaction
map.getInteractions().getArray().forEach(function(interaction) {
  if (interaction instanceof ol.interaction.DoubleClickZoom) {
    dblClickInteraction = interaction;
  }
});
// remove from map
map.removeInteraction(dblClickInteraction);

Vous pouvez également supprimer ou ajouter des interactions telles que PinchZoom, KeyboardZoom, etc. de la même manière.


Dans Array, vous pouvez utiliser à la findplace de forEach: const dblClickInteractio = map.getInteraction().getArray().find((interaction ) => { return interaction instanceof ol.interaction.DoubleClickZoom })
YairTawil

@YairTawil Bon à savoir. mais y a-t-il un avantage à utiliser à la findplace forEach?
Chase Choi

1
Bien sûr, find rompra la boucle ... forEach sera toujours exécuté n fois
YairTawil

S'il y a plusieurs interactions, filterpeut également être utilisé.
Chase Choi

1
Doit être map.getInteractions (). GetArray () avec un «s» à la fin de getInteractions (), pas getInteraction. Bien qu'en réalité une réponse beaucoup plus
nette

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.