openlayers使用control时显示 ol.control.defaults is not a function

 今天复制官网代码时用上了controls,ol的js包引用没错,但是之后浏览器报错,具体情况如图

const view = new ol.View({
    center: [328627.563458, 5921296.662223],
    zoom: 8,
    extent: [-572513.341856, 5211017.966314, 916327.095083, 6636950.728974],
  });
  
  new ol.Map({
    layers: [
      new ol.layer.Tile({
        source: new ol.source.OSM(),
      }),
    ],
    keyboardEventTarget: document,
    target: 'map',
    view: view,
    controls: ol.control.defaults().extend([new ol.control.ZoomSlider()]),
  });

之后在外网看到一个回答,简单来说是openlayers更新之后,较新版本的openlayers中的这个代码块被移动到自己的模块中用来解决循环依赖关系,解决办法是引用defaults之前需要再加一个defaults,就能正常运行了

改之前

 controls: ol.control.defaults().extend([new ol.control.ZoomSlider()]),
  });

改之后

 controls: ol.control.defaults.defaults().extend([new ol.control.ZoomSlider()]),
  });

具体解决情况看此链接,需要一点儿魔法:https://stackoverflow.com/questions/73698664/ol-controls-default-not-a-function-in-openlayers-7-1

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值