代码之家  ›  专栏  ›  技术社区  ›  Mnementh

如何删除Openlayers地图中的标准控件?

  •  10
  • Mnementh  · 技术社区  · 14 年前

    我使用Openlayers并希望在左上角创建另一个导航控件。我知道如何添加控件,但在创建Openlayers映射时,默认情况下会添加此导航。所以我想删除这个控件,添加一个自己的。我已经知道,默认控件是openlayers.control.panzoom。

    3 回复  |  直到 6 年前
        1
  •  20
  •   atogle    14 年前

    映射对象有一个名为 controls 这是一系列 OpenLayers.Control 物体。如果未显式设置此属性,则Openlayers将假定您需要默认的控件集,包括 OpenLayers.Control.Navigation() , OpenLayers.Control.PanZoom() , OpenLayers.Control.ArgParser() OpenLayers.Control.Attribution() .

    去掉 PanZoom 或任何其他默认控件,只需设置 控制 在构造 Map 对象。下面是一个代码示例:

    var map = new OpenLayers.Map('map', {
        controls: [
            new OpenLayers.Control.Navigation(),
            new OpenLayers.Control.ArgParser(),
            new OpenLayers.Control.Attribution()
        ]
    });
    

    这是现场直播 example .

    请注意 通过设置 控制 您将无法获得的属性 Control 对象是默认值。必须手动添加所需的任何控件。

    这里有一个链接指向 source code of the Map object 如果你想看看它是如何为你自己工作的。

        2
  •  3
  •   leif.gruenwoldt    14 年前

    我早就料到了 map.removeControl(OpenLayers.Control.PanZoom) 工作,但显然不是。

        3
  •  0
  •   Prosenjit Saha    6 年前

    遍历控件数组,然后删除缩放控件

    map.getControls().forEach(function(control) {
      if (control instanceof ol.control.Zoom) {
        map.removeControl(control);
      }
    }, this);