繁体   English   中英

如何专门为OpenLayers 3编译自定义源

[英]How to exclusively compile a custom source for OpenLayers 3

我为OpenLayers 3创建了一个新的Source,它的工作方式与ol.source.ImageWMS相似,但是由于远程源不是WMS,所以具有修改后的请求结构。

当与ol-debug.js一起使用或与OpenLayers库一起作为自定义版本编译时,新的源将按预期工作。

但是我想要的是专门编译我的扩展,然后将其作为OpenLayers的扩展包含在我的项目中。

例如

<script src="ol.js"></script>
<script src="imageSpecialSource.js"></script>

我试图排除json配置文件中export部分下的一些库符号名称/模式。 但是,包括已编译的js文件将使OpenLayers引发错误。

Uncaught TypeError: a.cf is not a function

那么,是否有可能专门编译一个自定义扩展,然后将其作为一个单独的文件包含在内?

首先,要知道有一个最新的教程,它解释了如何编译OpenLayers 3和您自己的库。 参见此处: http : //openlayers.org/en/v3.14.1/doc/tutorials/closure.html

编译过程需要config.json文件。 这是上述教程中的配置文件的片段:

{
  "lib": [
    "node_modules/openlayers/src/**/*.js",
    "node_modules/openlayers/build/ol.ext/**/*.js",
    "src/**/*.js"
  ],
  "compile": {
    "closure_entry_point": "app",
    "externs": [
      "node_modules/openlayers/externs/bingmaps.js",
      "node_modules/openlayers/externs/closure-compiler.js",
      "node_modules/openlayers/externs/geojson.js",
      "node_modules/openlayers/externs/proj4js.js",
      "node_modules/openlayers/externs/tilejson.js",
      "node_modules/openlayers/externs/topojson.js"
    ],
    ...

看到其中, lib里面的内容被一起编译,这就是OpenLayers和您自己的自定义代码。

然后,查看externs部分。 这些已定义的externs文件允许代码在ol3中使用,而Closure Compiler不会抱怨本来不会知道的类和方法。

为了编译代码,而不OL3,您就可以将其删除lib部分,并添加ol3 extern fileexterns代替。 在ol3中,该文件位于build/ol-externs.js 如果不存在,可以通过运行以下命令生成它:

node tasks/generate-externs.js build/ol-externs.js

您可以看一下完全做到这一点的OL3-Google-Maps库。 dist/ol3gm.js文件不包含OpenLayers: https//github.com/mapgears/ol3-google-maps/

查看名为ol3gm.json的json配置文件: https : //github.com/mapgears/ol3-google-maps/blob/master/build/ol3gm.json 您会看到其中使用了ol-externs.js文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM