Ovesh
Ovesh

Reputation: 5379

OpenLayers: disable zooming on double-click

OpenLayers, by default, zooms in when a user double clicks a map.

What is the best way to disable this behavior?

Upvotes: 17

Views: 9670

Answers (3)

VAV
VAV

Reputation: 1896

OpenLayers 3 Documentation Link.

Static way:

var map = new ol.Map({
    interactions: ol.interaction.defaults({ doubleClickZoom: false }),
    ...
});

Dynamic way:

var interactions = map.getInteractions();
for (var i = 0; i < interactions.getLength(); i++) {
    var interaction = interactions.item(i);                          
    if (interaction instanceof ol.interaction.DoubleClickZoom) {
        map.removeInteraction(interaction);
        break;
    }
}

Upvotes: 11

John Powell
John Powell

Reputation: 12581

The above answer is correct, but you will have to explicitly add this control to the map to override the default Navigation control, ie,

var Navigation = new OpenLayers.Control.Navigation({
  defaultDblClick: function(event) { return; }
});

map.addControl(Navigation);

The following controls are added by default to an OpenLayers.Map: OpenLayers.Control.Navigation, OpenLayers.Control.PanZoom, OpenLayers.Control.ArgParser, OpenLayers.Control.Attribution

So another option if you want to turn all these default behaviors off, is to send an empty array in the options parameter of the open layers map constructor, see link text for more details.

Upvotes: 7

Chau
Chau

Reputation: 5570

The zoom on double click feature is apparently a functionality in the OpenLayers.Control.Navigation control. See the OpenLayers Reference for more information.

A small and very tired example:

var Navigation = new OpenLayers.Control.Navigation({
    defaultDblClick: function(event) { return; }
});

I remember that the Navigation control is automatically added to the map if no controls are set during the initialization of the map. So you might have to add the Navigation control your self.

Hope it helps =)

Upvotes: 15

Related Questions