Bonjour à tous,

Voici la fin de mon problème (voir ma précédente discussion) avec ma fonction moyenne de production de parcelles.
La production d'une parcelle par rapport à la moyenne de parcelles doit apparaître d'une couleur différente selon son résultat:
si parcelle 1 a sa production < à la moyenne des productions, elle est en rouge,
si parcelle 1 a sa production > à la moyenne des productions, elle est en vert.
Le tout doit fonctionner quand je clique sur une parcelle. Donc après les 2 fonctions, je les appelle dans la fonction reagirAuClic:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
function reagirAuClic(evt) {
moyProd();
styleFunction(feature, resolution);}
Un problème de variable non déclarée? Ou manque t-il une variable?


code de ma fonction
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function moyProd(){
    var calendrier...//ici j'ai créé un calendrier
 
    if(nbrCount){
        var listeValeurProd = new Array(calendrier.length);//valeur Y pour chaque jour
        for(var p = 0; p<nbParcelles;p++)
        {
            var idParcelle = geojson_OGRGeoJSON.features[p]["properties"]["id"]; //info id de la parcelle
            var courbeProd = new Array(listeNomParametre.length); //tableau des param sigmo
            var cumulProdParcelle =-1;            //variable Total production pour une parcelle
            var nbrCount = 0;
        //Get Valeurs de la courbe depuis GeoJson
            for(var nomDuParametre=0; nomDuParametre < listeNomParametre.length; nomDuParametre++){
                var Param = [listeNomParametre[nomDuParametre];
                var testVal =geojson_OGRGeoJSON.features[p]["properties"][preParam];
                if(testVal!= null || isNaN(testVal)!=false){
                    courbeProd[listeNomParametre[nomDuParametre]]=parseFloat(testVal);   
                }
            }
            listeValeurProd =courbe(calendrier, courbeProd);        //il ne faut pas que la prod soit NaN
            cumulProdParcelle = SommeValeurs(listeValeurProd,calendrier);  //cumul de la production pour une parcelle
             try {
                    var x = cumulProdParcelle;
                        if(x == "") throw "empty";
                        if(isNaN(x)) throw "not a number";
                        x = Number(x);
                        resCumulTotal = resCumulTotal + cumulProdParcelle;
                        nbrCount += 1;
                    }
                    catch(err) {
                        console.log("Input is " + err );
                    }
        }
        return resCumulTotal / nbrCount;   // cumul total des productions de toutes les parcelles/ nombre de parcelles concernées
    }
    else{
        return null;
    }
}
le code affichage couleur parcelles
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// style par defaut
    var defaultStyle = new ol.style.Style({
   fill: new ol.style.Fill({
     color: [250,250,250,1]
   }),
   stroke: new ol.style.Stroke({
     color: [220,220,220,1],
     width: 1
   })
 });
 
// permet de mettre les styles en cache pour améliorer le temps d'affichage
   var styleCache = {};
   var cumulProdParcellefaible=  cumulProdParcelle<(resCumulTotal / nbrCount);
   var cumulProdParcellefort= cumulProdParcelle>(resCumulTotal / nbrCount);
 
/* fonction qui va gérer les couleurs de chaque parcelle en fonction du rapport production de la parcelle et moyenne production de toutes les parcelles*/
function styleFunction(feature, resolution) {
   // recupere l'info du polygone
   var id = feature.get('s.id');
   var couleurMoyCumul='#39F600';  // couleur pour la moyenne du cumul 
   if(id== cumulParcelleGaifaible){
      couleurMoyCumul='#00DDF6';  // couleur si cumul Prod parcelle supérieur à la moyenne production de toutes les parcelles
   }
   if(id== cumulProdParcellefort){                // couleur si GAI parcelle inférieur à la moyenne production de toutes les parcelles
       couleurMoyCumul='#F600DD';
   }
   console.log(id== cumulProdParcellefaible);
   // si le style n'est pas encore en cache dans le tableau styleCache
   if (!styleCache[id]) {
   //on cree le style
     styleCache[id] = new ol.style.Style({
       fill: new ol.style.Fill({
         color: couleurMoyCumul      // on lui met la couleur correspondante dans le tableau
       }),
       stroke: new ol.style.Stroke({
         color: [120,120,120,1],
         width: 2
       })
     });
   }
   // a ce stade le style de la couche courante est en cache
   // so return it (comme un tableau!)
   return [styleCache[id]];
}