Desativar o zoom duplo no OpenLayers 3


8

Eu procurei em toda a web e finalmente encontrei no artamstrong.com como desativar um único recurso como "mouseWheelZoom".

Veja como o zoom duplo do OpenLayers 3 pode ser desativado:

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

É realmente simples assim, basta dizer ao ol3 para definir "doubleClickZoom" em false:

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

5
Olá, Bem-vindo ao GIS @ Se, essas informações são incrivelmente úteis, mas este site requer a publicação de perguntas e respostas específicas. Sinta-se à vontade para editar sua pergunta e torná-la uma pergunta e, em seguida, responda com sua solução. As pessoas que postam perguntas podem responder suas próprias perguntas.
Mark Cupitt

Respostas:


8

Se você deseja desativar o doubleClickZoom após a inicialização do mapa, aqui está o caminho:

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

Você também pode remover ou adicionar interação, como PinchZoom, KeyboardZoom, etc. da mesma maneira.


Na matriz, você pode usar em findvez de forEach: const dblClickInteractio = map.getInteraction().getArray().find((interaction ) => { return interaction instanceof ol.interaction.DoubleClickZoom })
YairTawil 17/17

@YairTawil É bom saber. Mas, há uma vantagem para usar findem vez forEach?
Perseguição Choi

1
Claro, achado vai quebrar o ciclo ... forEach sempre será executado n vezes
YairTawil

Se houver várias interações, também filterpode ser usado.
Perseguição Choi

1
Deve ser map.getInteractions (). GetArray () com um 's' no final de getInteractions (), não getInteraction. Embora, na verdade, uma resposta mais limpo muito está na pergunta ....
mwarren

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.