使用 Proj4 外部 JS 文件构建 Dojo

Dojo Build using Proj4 External JS File

我正在学习如何使用 Dojo 构建系统将应用程序构建到单个 js 文件(或接近)中。我已尽我所知按照说明进行操作,并使用一个基本示例进行操作。我现在正在尝试添加额外的 js 资源和小部件。

我的一个小部件需要 Proj4js 投影库在坐标之间进行转换。不幸的是,当我尝试构建应用程序时,这会导致问题。

error(311) Missing dependency.
module: app/widgets/MapInfo; dependency: proj4/proj4

我对该包的 dojo 配置设置如下:

            packages: [
                // Using a string as a package is shorthand for `{ name: 'app', location: 'app' }`
                'app',
                'dgrid',
                'dijit',
                'dojo',
                'dojox', {
                    name: 'put-selector',
                    location: 'put-selector',
                    main: 'put'
                },
                'xstyle',
                'esri',
                {
                    name: 'proj4',
                    location: '//cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.6/'
                }
            ],

这是小部件的顶部:

define([
'dojo/_base/declare',
'dijit/_WidgetBase',
'dijit/_TemplatedMixin',
'dojo/_base/lang',
'dojo/html',
'dojo/dom-style',
'dojo/number',
'dojo/topic',
'proj4/proj4',
'xstyle/css!./MapInfo/css/MapInfo.css'
], function (
declare,
WidgetBase,
TemplatedMixin,
lang,
html,
style,
number,
topic,
proj4
  ) {

选项 1:忽略它 我首先想到的是尝试让 dojo 忽略它,但是,在阅读了一些帖子之后,这并不是一个真正的选择。

选项 2:使用插件? 我的下一个想法是尝试使用像 dojo/text 这样的 dojo 插件!但是,要包含该文件,我也无法使其正常工作。

选项 3:在页面中嵌入脚本 最后,作为最后的手段,我可​​以简单地使用脚本标签嵌入脚本并通过 window.proj4 在小部件中引用 proj4,但这不是很便携,所以我正在寻找更好的解决方案。

谢谢!

我最终通过使用 proj4 库的本地副本来完成这项工作。然后我使用 dojo 的地图 属性 将 proj4 映射到它的正确位置:

  map: {
    '*': {
      'viewer': 'cmv/viewer/js/viewer',
      'gis': 'cmv/viewer/js/gis',
      'proj4js': 'app/vendor'
    }
 },

proj4 现在可以由使用路径 'proj4js/proj4'.

的小部件使用