如何在OpenLayers-Map中删除标准控件?

时间:2010-08-09 15:34:21

标签: javascript openlayers

我使用OpenLayers并希望在左上角创建另一个导航控件。我知道如何添加控件,但在创建OpenLayers-Map时默认添加此导航。所以我想删除该控件,添加一个自己的。我已经知道,默认控件是OpenLayers.Control.PanZoom。

3 个答案:

答案 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);