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

Mne*_*nth 11 javascript openlayers

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

ato*_*gle 20

地图对象有一个名为属性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()
    ]
});
Run Code Online (Sandbox Code Playgroud)

这是一个实例.

请注意,通过设置controls您将不会获得任何Control对象的属性是默认值.您需要的任何控件都必须手动添加.

如果您想了解它对您自己的工作原理,请参阅Map对象源代码.


小智 5

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

map.getControls().forEach(function(control) {
  if (control instanceof ol.control.Zoom) {
    map.removeControl(control);
  }
}, this);
Run Code Online (Sandbox Code Playgroud)