2014-12-12 2 views
0

У меня возникла проблема при попытке получить данные и показать их на infoWindow с помощью ArcGIS. Вот мой javascript:Esri InfoWindow не отображает результаты, полученные

var map; 
require(["esri/map","esri/dijit/Scalebar","esri/layers/FeatureLayer", "esri/dijit/Legend", 
    "dojo/_base/array", "dojo/parser", 
    "dijit/layout/BorderContainer", "dijit/layout/ContentPane", 
    "dijit/layout/AccordionContainer","esri/InfoTemplate","dojo/dom-construct","dojo/domReady!"], 
    function(Map,Scalebar, FeatureLayer, Legend, arrayUtils, parser, InfoTemplate,domConstruct){ 
    parser.parse(); 
    map=new Map("map", { 
    center:[-56.049, 38.485], 
    zoom:3, 
    basemap: "topo"}); 

// Show legend 
map.on("layers-add-result", function(evt){ 
var layerInfo = arrayUtils.map(evt.layers, function(layer, index){ 
    return {layer:layer.layer, title:layer.layer.name}; 
}); 

if(layerInfo.length >0){ 
    var legendDijit = new Legend({ 
    map:map, 
    layerInfos: layerInfo}, "legendDiv"); 
    legendDijit.startup(); 
} 
}); 

var legendFeature = new 
    FeatureLayer("http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3", { 
    mode: FeatureLayer.MODE_ONDEMAND, 
    outFields:["*"] 
    }); 

// Show infoWindow 
var content = "<b>State</b>: ${STATE_NAME}"; 
var infoTemplate = new InfoTemplate("${STATE_NAME}", content); 
      featureLayer = new FeatureLayer("http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3", 
      { 
       mode: FeatureLayer.MODE_ONDEMAND, 
       infoTemplate: infoTemplate, 
       outFields: ["*"] 
      }); 
map.addLayers([featureLayer]); 

// Show scalebar 
var scalebar = new Scalebar({ 
    map:map, 
    scalebarUnit: "dual", 
    attachTo:"bottom-left"}); 
}); 

Нет проблем с легендами и шкалами. Однако, когда я нажимаю на определенный регион, он выталкивается с помощью infoWindow, но без каких-либо результатов. Интересно, почему это не работает.

Заранее спасибо.

ответ

1

Порядок требуемых модулей AMD должен соответствовать порядку создаваемых вами конструкторов. В вашем случае InfoTemplate соответствует "Dijit/макет/BorderContainer":

require(["esri/map", "esri/dijit/Scalebar", "esri/layers/FeatureLayer", "esri/dijit/Legend", 
     "dojo/_base/array", "dojo/parser", 
     "dijit/layout/BorderContainer", "dijit/layout/ContentPane", 
     "dijit/layout/AccordionContainer", "esri/InfoTemplate", "dojo/dom-construct", "dojo/domReady!"], 
     function (Map, Scalebar, FeatureLayer, Legend, arrayUtils, parser, InfoTemplate, domConstruct) {... 

Это будет работать:

require(["esri/map", "esri/dijit/Scalebar", "esri/layers/FeatureLayer", "esri/dijit/Legend", 
     "dojo/_base/array", "dojo/parser", 
     "dijit/layout/BorderContainer", "dijit/layout/ContentPane", 
     "dijit/layout/AccordionContainer", "esri/InfoTemplate", "dojo/dom-construct", "dojo/domReady!"], 
     function (Map, Scalebar, FeatureLayer, Legend, arrayUtils, parser, BorderContainer, ContentPane, AccordionContainer, InfoTemplate, domConstruct) {... 
+0

я вижу, я вижу. Большое спасибо! Сейчас он работает –

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