2016-05-30 12 views
-1

Ich schreibe Code zum Entwickeln von interaktiven Karten mit den ArcGIS-API- und Dojo-Klassen.Arcgis api-Module können nicht geladen werden

Es funktioniert gut, bis ich einige Module wie "esri/toolbars/draw" oder einige andere Module definieren. Diese geben einen Fehler: http: //localhost/esri/toolbars/draw.js 404 (nicht gefunden)

Meine Frage ist, wenn ich bin mit vielen anderen Modulen wie 'Dojo/_base/declare', 'dojo/_base/lang', 'dojo/auf', 'dojo/Deferred', 'esri/map' und viele andere, warum kann das Programm 'esri/toolbars/draw' nicht laden? Interessanterweise sucht es in localhost danach, was nicht der richtige Ort ist, da ich ArcGIS API nicht lokal verwende.

Ich frage mich, ob mir jemand freundlicherweise dabei helfen kann. Unten ist ein Beispiel meines Codes:

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) { 
     } 
     }) 
    }) 

Antwort

0

Ihre Laufzeitkonfiguration für Dojo ist nicht korrekt. Bitte beachten Sie die Dokumentation. here

Note that not all configuration options can be set at runtime. In particular, async, tlmSiblingOfDojo, and pre-existing has tests cannot be changed once the loader is loaded. Additionally, most configuration data is shallow copied, which means that you couldn’t use this mechanism to, for example, add more keys to a custom configuration object—the object would be overwritten

versuchen, die Standard Art und Weise der Zugabe von dojoConfig zu verwenden. Außerdem muss dojoConfig hinzugefügt werden, bevor die esri api url hinzugefügt wird.

Dojo api ist Teil von esri api, daher ist das Hinzufügen einer expliziten URL für Dojo nicht erforderlich.

+0

vielen Dank, es löste das Problem. – samira

+0

Ich bin froh, dass ich helfen konnte. Bitte markieren Sie die Frage als beantwortet. –