无法加载Arcgis api模块

时间:2016-05-30 02:47:23

标签: javascript dojo arcgis esri

我正在编写使用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) {
        }
        })
    })

1 个答案:

答案 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。