我正在编写使用ArcGIS API和Dojo类开发交互式地图的代码。
它工作正常,直到我定义了一些模块,如“esri / toolbars / draw”或其他一些模块。这些错误: http://localhost/esri/toolbars/draw.js 404(未找到)
我的问题是,如果我使用了许多其他模块,例如'dojo / _base / declare','dojo / _base / lang','dojo / on','dojo / Deferred','esri / map'和许多其他人,为什么程序不能加载'esri / toolbars / draw'?有趣的是,它在localhost中搜索它,因为我没有在本地使用ArcGIS API,所以它不适合查看。
我想知道是否有人可以帮助我。以下是我的代码示例:
require({
async: true,
parseOnLoad: true,
baseUrl: "/myApp/",
aliases: [
['text', 'dojo/text']
],
packages: [{
name: 'controllers',
location: 'js/controllers'
}, {
name: 'services',
location: 'js/services'
}, {
name: 'utils',
location: 'js/utils'
}, {
name: 'widgets',
location: 'js/widgets'
}, {
name: 'app',
location: 'js',
main:'main'
}]
}, ['app']);
___________________________________________ widgets/edit/drawTools.js
define([
'dojo/_base/declare',
'dojo/_base/lang',
'dojo/on',
'dijit/_WidgetBase',
'dijit/_TemplatedMixin',
'dojo/dom-class',
'text!widgets/edit/drawTools.html',
'esri/graphic',
"esri/toolbars/draw",
"esri/symbols/SimpleMarkerSymbol",
"esri/symbols/SimpleLineSymbol",
"esri/symbols/PictureFillSymbol",
"esri/symbols/CartographicLineSymbol",
"esri/Color"
], function(
declare, lang, on, _WidgetBase, _TemplatedMixin, domClass, template, graphic, Draw, SimpleMarkerSymbol, SimpleLineSymbol,
PictureFillSymbol, CartographicLineSymbol, Color
) {
return declare([_WidgetBase, _TemplatedMixin], {
templateString: template,
map:null,
options:{},
constructor: function(options) {
this.options = options;
this.map = this.options.map;
},
postCreate: function() {
tb = new Draw(this.map);
tb.on("draw-end", '_addGraphic');
}
function _addGraphic(evt) {
}
})
})
答案 0 :(得分:0)
dojo的运行时配置不正确。请参阅文档。 here
请注意,并非所有配置选项都可以在运行时设置。在 特别是,async,tlmSiblingOfDojo和预先存在的测试不能 加载器加载后更改。此外,大多数配置 数据被浅层复制,这意味着你无法使用它 例如,为自定义配置添加更多密钥的机制 对象 - 该对象将被覆盖
尝试使用添加dojoConfig的默认方式。此外,在添加esri api url之前必须添加dojoConfig。
<script>
dojoConfig= {
parseOnLoad: true,
async: true
package: [{
"name": "agsjs",
"location": location.pathname.replace(/\/[^/]+$/, "")+'/agsjs'
}]
};
</script>
Dojo api是esri api的一部分,因此不需要为dojo添加显式url。