我使用OpenLayers并希望在左上角创建另一个导航控件。我知道如何添加控件,但在创建OpenLayers-Map时默认添加此导航。所以我想删除该控件,添加一个自己的。我已经知道,默认控件是OpenLayers.Control.PanZoom。
答案 0 :(得分:20)
map对象有一个名为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()
]
});
这是一个实时example。
请注意,通过设置controls
属性,您将不会获得任何Control
个对象。您需要的任何控件都必须手动添加。
以下是source code of the Map
object的链接,如果您想了解它的效果如何。
答案 1 :(得分:3)
我原本希望map.removeControl(OpenLayers.Control.PanZoom)
可以工作,但显然不是。
答案 2 :(得分:0)
遍历控件数组,然后删除缩放控件
map.getControls().forEach(function(control) {
if (control instanceof ol.control.Zoom) {
map.removeControl(control);
}
}, this);