6

我正在开发一个使用 typescript 开发的 openlayers 3 项目,因此:

let ol = require("openlayers");

我想使用未在 NPM 上发布的转换扩展插件(http://viglino.github.io/ol3-ext/interaction/transforminteraction.js

我尝试了以下方法:

let ol = require("openlayers");
require("<path>/ol/transforminteraction");

但是我收到以下错误:

错误类型错误:ol.interaction.Transform 不是构造函数

未捕获的 ReferenceError:未定义 ol

我怎样才能正确地包含/集成这个资源?

4

3 回答 3

3
let ol = require("openlayers");

这意味着ol不在全局范围内,因此它不能用于transforminteraction扩展。

查看插件代码,您应该能够将其包装在

module.exports = function(ol) {
   ...
}

这将ol放入函数范围。

然后你可以通过传入ol作为参数来使用它来扩展它。例如

let ol = require("openlayers");
require("<path>/ol/transforminteraction")(ol);
于 2017-07-10T12:14:22.763 回答
0

您可以将“transforminteraction.js”代码包含在浏览器将与 HTML 文档一起下载的单独文件中。从 html 文件中剪切 JS 代码,并将其粘贴到您的“transforminteraction.js”文件中,不要忘记window.onload = function() { ...your code js + transforminteraction.js }. 还要检查:

OL3-ext 的克隆存储库: https ://github.com/Viglino/ol3-ext

或者:

https://github.com/Rep1ay/openLayer.git

于 2017-11-27T12:19:31.867 回答
0

我解决了这个问题,添加到我的 load.js 文件中:

if (debugMode) { 
    addScriptFile('//cdnjs.cloudflare.com/ajax/libs/ol3/' + olVersion + '/ol-debug.js');
    addScriptFile('//viglino.github.io/ol-ext/dist/ol-ext.js'); 
} else { 
    addScriptFile('//cdnjs.cloudflare.com/ajax/libs/ol3/' + olVersion + '/ol.js');   
    addScriptFile('//viglino.github.io/ol-ext/dist/ol-ext.js'); 
}

于 2019-04-12T07:55:17.200 回答