使用 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'
.
的小部件使用
我正在学习如何使用 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'
.