我使用 OpenLayers 并想在左上角创建另一个导航控件。我知道如何添加控件,但默认情况下会在创建 OpenLayers-Map 时添加此导航。所以我想删除那个控件,添加一个自己的。我已经知道,默认控件是 OpenLayers.Control.PanZoom。
问问题
22474 次
3 回答
22
地图对象有一个称为对象controls
数组的属性OpenLayers.Control
。如果此属性未显式设置,则 OpenLayers 将假定您需要默认控件集,包括OpenLayers.Control.Navigation()
、OpenLayers.Control.PanZoom()
、OpenLayers.Control.ArgParser()
和OpenLayers.Control.Attribution()
。
要删除PanZoom
或任何其他默认控件,只需在构造对象controls
时设置属性数组。Map
这是一个代码示例:
var map = new OpenLayers.Map('map', {
controls: [
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.ArgParser(),
new OpenLayers.Control.Attribution()
]
});
这是一个活生生的例子。
请注意,通过设置controls
属性,您将不会获得任何Control
对象为默认值。您需要的任何控件都必须手动添加。
如果您想了解它是如何为自己工作的,这里是一个指向该对象源代码的链接。Map
于 2010-08-09T18:52:13.300 回答
3
我本来希望map.removeControl(OpenLayers.Control.PanZoom)
工作,但显然不是。
于 2011-03-14T01:10:16.853 回答
3
遍历控件数组,然后移除缩放控件
map.getControls().forEach(function(control) {
if (control instanceof ol.control.Zoom) {
map.removeControl(control);
}
}, this);
于 2018-09-21T10:28:42.053 回答