सबसे पहले, कई पहचान कार्यों को संसाधित करने के लिए DeferredList का उपयोग करने की अवधारणा को दिखाने के लिए एक सरल जावास्क्रिप्ट एपीआई उदाहरण है:
//Assume that map is your map object
var idTask1, idTask2, idParams = new esri.tasks.IdentifyParameters();
var url1 = "<server1 url>", var url2 = "<server2 url>";
dojo.connect(map, "onLoad", initIdentifies);
function initIdentifies(map) { //map.onLoad passes in the map object
idTask1 = new esri.tasks.IdentifyTask(url1);
idTask2 = new esri.tasks.IdentifyTask(url2);
//A few sample constant parameters. Set more or less as you need
idParams.tolerance = 12;
idParams.returnGeometry = true;
idParams.layerOption = esri.tasks.IdentifyParameters.LAYER_OPTION_ALL;
dojo.connect(map, "onClick", runIdentifies);
}
function runIdentifies(evt) {
var defTask1 = new dojo.Deferred(), defTask2 = new dojo.Deferred;
var dlTasks = new dojo.DeferredList([defTask1, defTask2]);
dlTasks.then(showResults); //defTasks will fire after defTask1 and defTask2 have completed
//These parameters change with each request
idParams.width = map.width;
idParams.height = map.height;
idParams.geometry = evt.mapPoint;
idParams.mapExtent = map.extent;
try {
idTask1.execute(idParams, defTask1.callback, defTask1.errback); //Pass the response into the callback on defTask1
} catch (e) {
console.log("Error caught");
console.log(e);
defTask1.errback(e); //If you get an error, execute the errback
}
try {
idTask2.execute(idParams, defTask2.callback, defTask2.errback); //Pass the response into the callback on defTask2
} catch (e) {
console.log("Error caught");
console.log(e);
defTask2.errback(e); //If you get an error, execute the errback
}
}
function showResults(r) {
//The format of 'r' is [[Boolean task 1 success, [task 1 results]],[Boolean task 2 success, [task 2 results]]]
//using the array 'r', build and show your infoWindow as normal
}
फिर यहाँ jsFiddle में एक उदाहरण है कि मुझे लगता है कि आप क्या चाहते हैं, नक्शे में सभी दृश्यमान गतिशील नक्शे परतों में सभी दृश्यमान परतों का उपयोग करके चलता है।
http://jsfiddle.net/blordcastillo/mULcz/
अब सभी टाइपो तय हो गए हैं :)
मूल विचार यह है कि जब भी मानचित्र पर क्लिक किया जाता है या दृश्यता टॉगल की जाती है, तो पहचान फिर से हो जाती है। जब पहचान को चलाया जाता है, तो निकाल दिए गए पहचान कार्यों की संख्या दिखाई देने वाली परतों की संख्या पर निर्भर करती है, और यह तब तक इंतजार करती है जब तक कि सभी परतें अपने परिणामों को प्रदर्शित करने के लिए वापस नहीं आती हैं।