【发布时间】:2010-09-19 21:11:27
【问题描述】:
默认情况下,当用户双击地图时,OpenLayers 会放大。
禁用此行为的最佳方法是什么?
【问题讨论】:
标签: javascript maps openlayers
默认情况下,当用户双击地图时,OpenLayers 会放大。
禁用此行为的最佳方法是什么?
【问题讨论】:
标签: javascript maps openlayers
双击放大 功能显然是OpenLayers.Control.Navigation 控件中的一项功能。请参阅OpenLayers Reference 了解更多信息。
一个小而累的例子:
var Navigation = new OpenLayers.Control.Navigation({
defaultDblClick: function(event) { return; }
});
我记得如果在地图初始化期间没有设置任何控件,导航控件会自动添加到地图中。因此,您可能必须自己添加 Navigation 控件。
希望对你有帮助 =)
【讨论】:
map.addControl(Navigation);
OpenLayers 3 文档Link.
静态方式:
var map = new ol.Map({
interactions: ol.interaction.defaults({ doubleClickZoom: false }),
...
});
动态方式:
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;
}
}
【讨论】:
上面的答案是正确的,但是你必须显式地把这个控件添加到地图中来覆盖默认的Navigation控件,即,
var Navigation = new OpenLayers.Control.Navigation({
defaultDblClick: function(event) { return; }
});
map.addControl(Navigation);
以下控件默认添加到 OpenLayers.Map: OpenLayers.Control.Navigation, OpenLayers.Control.PanZoom, OpenLayers.Control.ArgParser, OpenLayers.Control.Attribution
因此,如果您想关闭所有这些默认行为,另一种选择是在打开图层地图构造函数的 options 参数中发送一个空数组,有关详细信息,请参阅link text。
【讨论】: