2016-05-30 3 views
-1

Я пишу код для разработки интерактивных карт с использованием классов ArcGIS API и классов Dojo.Невозможно загрузить модули Arcgis api

Он отлично работает, пока не определю некоторые модули, такие как «esri/toolbars/draw» или некоторые другие модули. Они дают ошибку: Http: //localhost/esri/toolbars/draw.js 404 (Не найдено)

Мой вопрос, если я использую много других модулей, таких как «додзё/_Образы базовой/объявить», '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

Неверная конфигурация среды выполнения для dojo. Пожалуйста, обратитесь к документации. 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

Попробуйте использовать путь по умолчанию при добавлении dojoConfig. Кроме того, dojoConfig необходимо добавить перед добавлением esri api url.

<script> 
    dojoConfig= { 
     parseOnLoad: true, 
     async: true 
     package: [{ 
      "name": "agsjs", 
      "location": location.pathname.replace(/\/[^/]+$/, "")+'/agsjs' 
      }] 
    }; 
</script> 

Dojo api является частью esri api, поэтому добавление явного url для dojo не требуется.

+0

Большое спасибо, он решил проблему. – samira

+0

Рад, что я мог бы помочь, Пожалуйста, отметьте вопрос как ответ. –

Смежные вопросы