ASP.NET Core5中OpenLayers6添加Translate功能及defaultInteractions报错解决
OpenLayers全局引入下defaultInteractions调用报错解决
defaultInteractions 对应的全局命名空间路径为 ol.interaction.defaults,直接替换原有调用即可,正确写法:
interactions: ol.interaction.defaults().extend([select, translate])
报错原因说明
- IDE中按Ctrl点击可跳转到对应源文件,仅为编辑器静态代码识别的匹配结果,不代表该变量在运行时的全局作用域可直接访问。
- Node环境下可直接调用
defaultInteractions(),是因为你通过ES模块导入语句将该方法单独引入到了当前文件作用域(通常写法为import { defaults as defaultInteractions } from 'ol/interaction')。 - ASP.NET Core 环境下你采用的是全局挂载
ol对象的引用方式,所有OpenLayers API都需要从ol根对象开始,按照命名空间层级逐层调用,不能直接使用模块内部导出的未挂载到全局的变量名。
修正后的完整初始化代码参考
const map = new ol.Map({ interactions: ol.interaction.defaults().extend([select, translate]), layers: [ new ol.layer.Image({ source: new ol.source.ImageStatic({ url: 'https://imgs.xkcd.com/comics/online_communities.png', projection: projection, imageExtent: extent, }), }), rasterLayer, vectorLayer ], target: 'map', view: new ol.View({ projection: projection, center: ol.extent.getCenter(extent), zoom: 2, maxZoom: 8, }), });
内容的提问来源于stack exchange,提问作者görkem
相关产品推荐
相关产品推荐

