Bonsoir à vous,
je développe une application web avec l'API ArcGIS for flex (1.3).
Cependant je rencontre un problème assez inédit :
Mon code bloque sur l'appel d'une fonction avec pour unique paramètre une variable String.
Je précise que cette variable String a été testée :
- pas de caractère invisible.
- type correct
surtout le contenu de cette String est celui attendu.
Cette fonction fait appel à la fonction qui plante : getMainServiceLayer(st:String) qui a pour code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 private function getServices():Array{ var array:Array = new Array(); var layer:Layer; var hasGraphicsLayer:Boolean = false; for(var i:Number = 0; i<this.configData.configMap.length ;i++){ try{ layer = getMainServiceLayer(this.configData.configMap[i].label); }catch (e:Error){ Alert.show(e.message); } if(layer.visible) { if(layer is GraphicsLayer) { hasGraphicsLayer = true; } else { array.push(this.configData.configMap[i]); } } } if(hasGraphicsLayer) array.push({label:dynamicLayerGroupName}) ; return array; }
J'ai bien sûr essayé des Alert à chaque étape, rien ni fait le code s'arrête mystérieusement lors du dernier tour de l'appel de la fonction getMainServiceLayer(st:String). Après avoir essayé toutes sortes d'Alert, j'ai décidé de placer un try / catch sur l'appel de la fonction pour comprendre et récupérer l'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 private function getMainServiceLayer(st:String):Layer{ var layer:Layer = null; for (var i:Number =0;i<theMap.layerIds.length;i++) { if (theMap.layerIds[i].toString() == st) { layer = theMap.getLayer(theMap.layerIds[i]); break; } } return layer; }
Résultat, le try est exécuté en buggant mais ne lève pas d'erreur dans le catch.
Quelqu'un aurait-il une idée de ce que cela pourrait-il être ?
Quelqu'un a déjà rencontré ce bug ?
Merci d'avance !
Partager