2016-03-09 6 views
0

Я работаю над картой, которая использует FeatureLayer.Mode_ONDEMAND. Чтобы увидеть определенный слой, я передаю идентификатор проекта с помощью функции featureLayer.setDefinitionExpression. Там, где такой слой существует, я его вижу. Я хочу знать, как определить, нет ли слоя. Я хочу напечатать предупреждение для зрителя вместо того, чтобы показывать только пустую карту. Вот мой код:ESRI javascript featureLayer.graphics

function init() { 
    map = new esri.Map("mapDiv", { 
    basemap: "topo", 
    zoom: 9 
    }); 

    var featureLayer = new esri.layers.FeatureLayer("http://services.arcgis.com/v01g34asdwfAi/arcgis/rest/services/Projects/FeatureServer/0",{ 
    mode: esri.layers.FeatureLayer.MODE_ONDEMAND, 
    outFields: ["*"], 
    opacity: 1 
    }); 


    featureLayer.setDefinitionExpression("SrvyDescID=\'' . htmlspecialchars($ProjectID) . '\'"); 
    console.log(featureLayer.graphics); 
    console.log(featureLayer.graphics[0]); 
    map.addLayer(featureLayer); 
    } 

Что я узнал, когда проект действителен, функция.graphics вернет массив. Но я не могу рассматривать его как массив. Например:

console.log (featureLayer.graphics) возвращает объект массива , но console.log (featureLayer.graphics [0]) возвращает «undefined».

особенностьLayer.graphic.length тоже не работает. Как использовать этот объект массива, чтобы сообщить мне, что слой отображается на карте?

Прилагается скриншот журнала консоли. Спасибо за вашу помощь.

Console.log

ответ

0

мне нужно, чтобы поймать "Update-конец" событие. Окончательный код:

map = new esri.Map("mapDiv", { 
    center: [-118.30, 34.3], 
    zoom: 8, 
    basemap: "topo" 
}); 



on(map, "update-end", function(){   // update-end event will execute after the layer has been added to the map 
    if(featureLayer.graphics.length >= 1) 
    { 
     // do your thing   
    } 
}) 



var featureLayer = new  

    esri.layers.FeatureLayer("http://services.arcgis.com/v01gqwMseaqNAi/arcgis/rest/services/Project_boundaries_021616/FeatureServer/0",{ 
    mode: esri.layers.FeatureLayer.MODE_ONDEMAND, 
    outFields: ["*"], 
    opacity: 1      
}); 

featureLayer.setDefinitionExpression("SrvyDescID=\'' . htmlspecialchars($SDID) . '\'");     
map.addLayer(featureLayer);