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:
Un problème de variable non déclarée? Ou manque t-il une variable?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 function reagirAuClic(evt) { moyProd(); styleFunction(feature, resolution);}
code de ma fonctionle 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 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; } }
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]]; }
Partager