开发者

OpenLayers: disable zooming on double-click

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

开发者_StackOverflow中文版

What is the best way to disable this behavior?


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


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


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜