13

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

4

3 回答 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 回答