Précédent   Forum des professionnels en informatique > Applications > SIG : Système d'information Géographique > IGN API Géoportail
IGN API Géoportail Forum d'entraide sur l'API Géoportail développé par IGN
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2012, 21h42   #1
Membre actif
 
Avatar de vasilov
 
Inscription : juillet 2003
Messages : 295
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 295
Points : 187
Points : 187
Par défaut Tracé à couleur variable

Bonjour,

j'arrive bien à afficher un tracé GPX sur la couche voulue, d'une certaine couleur, mais j'aimerais faire varier la couleur du tracé (en fonction de la vitesse par exemple).

Est ce possible ?

Merci
vasilov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 08h42   #2
Membre habitué
 
Femme zineb
Inscription : mars 2011
Messages : 88
Détails du profil
Informations personnelles :
Nom : Femme zineb
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 88
Points : 119
Points : 119
Bonjour,

Pour modifier le style selon un paramètre, il faut utiliser la propriété context:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var myStyle= new OpenLayers.StyleMap({
" default " : new OpenLayers.Style (
   {
        strokeWidth: 2,
        strokeColor:  " ${getColor}"								
   },{
   context : {
       getColor: function(f){
                        var color;
			if (f.attributes['vitesse']=='valeur1') {
				color='red';
			}else if( (f.attributes['vitesse']=='valeur2') {
                                color=...
                       }
                     return color;
                   }
    }
   )
});
zainab_k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 09h03   #3
Membre actif
 
Avatar de vasilov
 
Inscription : juillet 2003
Messages : 295
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 295
Points : 187
Points : 187
merci pour ta réponse.
Je vais faire des essais dans ce sens.
vasilov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 14h28   #4
Membre actif
 
Avatar de vasilov
 
Inscription : juillet 2003
Messages : 295
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 295
Points : 187
Points : 187
j'ai l'impression que cela ne concerne que la couleur globale de la trace...
du coup impossible de faire changer la trace de couleur

En tout cas je ne m'en sort pas avec cet objet f : il contient tous les points avec leurs altitude mais on ne passe dans la fonction qu'une fois : pas à chaque point.
vasilov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 15h19   #5
Membre habitué
 
Femme zineb
Inscription : mars 2011
Messages : 88
Détails du profil
Informations personnelles :
Nom : Femme zineb
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 88
Points : 119
Points : 119
Le mieux serait d'avoir le fichier gpx et le code qui va avec.
zainab_k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 15h37   #6
Membre actif
 
Avatar de vasilov
 
Inscription : juillet 2003
Messages : 295
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 295
Points : 187
Points : 187
Merci pour ton aide.

Le fichier gpx est tout ce qu'il y a de plus classique.

Et je le charge aussi très classiquement :
Code :
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
46
47
48
49
50
51

geoportalLoadVISU("GeoportalVisu", "normal");

			//On centre la carte une trace
			VISU.getMap().setCenterAtLonLat($pointACentrer->lon, $pointACentrer->lat, 14);

			//gestion des couches cartographique
			if (VISU.getMap().allowedGeoportalLayers) {
				for (var i = 0; i < VISU.getMap().allowedGeoportalLayers.length ; i++) {
					var overloaded_options = null;
					var couche = VISU.getMap().allowedGeoportalLayers[i];
					if (couche.match(/^TRANSPORTNETWORKS.ROADS/)) {// réseau routier
						overloaded_options = {opacity: 1.0, visibility: false};
					} else if (couche.match(/^HYDROGRAPHY.HYDROGRAPHY/)) {// hydrographie
						overloaded_options = {opacity: 1.0, visibility: false};
					} else if (couche.match(/^ORTHOIMAGERY.ORTHOPHOTOS/)) {// photo aérienne
						overloaded_options = {opacity: 1.0, visibility: false};
					} else if (couche.match(/^GEOGRAPHICALGRIDSYSTEMS.MAPS/)) {// carte IGN
						overloaded_options = {opacity: 1.0};
					}
					VISU.addGeoportalLayer(couche,overloaded_options);
				}
			}

			//on ferme les boites à outils
			VISU.openToolsPanel(false); // ferme le menu "Outils"
			//VISU.setToolsPanelVisibility(false); // masque le menu "Outils"
			VISU.openLayersPanel(false); // ferme le menu "Couches"
			//VISU.setLayersPanelVisibility(false); // masque le menu "Couches"

var styleTrace = new OpenLayers.StyleMap({
					"default": new OpenLayers.Style({
						strokeColor: "\${getColor}",
						strokeOpacity: 0.7,
						strokeWidth:4
						}, {
						   context : {
							   getColor: function(f){
									return '$this->trkColor';	
							}}}),				   
					"select": new OpenLayers.Style({
						strokeColor: '$this->trkSelColor',
						})
					});
				$ignInstanceName.getMap().addLayer("GPX", "nom", "fichier.gpx",
				{
					styleMap: styleTrace,
					visibility: true,
					opacity:1
				});	";
vasilov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 12h59   #7
Membre habitué
 
Femme zineb
Inscription : mars 2011
Messages : 88
Détails du profil
Informations personnelles :
Nom : Femme zineb
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 88
Points : 119
Points : 119
Bonjour,

en pj une page qui affiche une couche gpx: la couleur des segments change selon l'altitude.
J'ai essayé de mettre quelques commentaires dans le code...
le fichier gpx que j'ai utilisé est celui-ci:
http://api.ign.fr/geoportail/api/doc...rtene_3029.gpx
Fichiers attachés
Type de fichier : html test.html (4,5 Ko, 20 affichages)
zainab_k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 13h21   #8
Membre actif
 
Avatar de vasilov
 
Inscription : juillet 2003
Messages : 295
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 295
Points : 187
Points : 187
Super merci beaucoup

Je fais marcher ton exemple sans problèmes.
A moi d'adapter pour la suite
vasilov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 15h05   #9
Expert Confirmé

 
Homme Didier Richard
Ingénieur cartographe
Inscription : avril 2009
Messages : 2 734
Détails du profil
Informations personnelles :
Nom : Homme Didier Richard
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur cartographe
Secteur : Service public

Informations forums :
Inscription : avril 2009
Messages : 2 734
Points : 3 502
Points : 3 502
?
dgrichard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 15h15   #10
Membre actif
 
Avatar de vasilov
 
Inscription : juillet 2003
Messages : 295
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 295
Points : 187
Points : 187
j'ai mis résolu car j'arrive à faire varier la couleur de ma trace grace à l'exemple de zainab_k.
Même si je n'arrive pas encore à le faire en fonction de la vitesse.
vasilov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 21h35   #11
Expert Confirmé

 
Homme Didier Richard
Ingénieur cartographe
Inscription : avril 2009
Messages : 2 734
Détails du profil
Informations personnelles :
Nom : Homme Didier Richard
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur cartographe
Secteur : Service public

Informations forums :
Inscription : avril 2009
Messages : 2 734
Points : 3 502
Points : 3 502
Citation:
Envoyé par vasilov Voir le message
j'ai mis résolu car j'arrive à faire varier la couleur de ma trace grace à l'exemple de zainab_k.
Même si je n'arrive pas encore à le faire en fonction de la vitesse.
Il suffit soit d'appliquer la méthod de zainab_k (intercepter les objets avant de les insérer dans la couche) ou de colorier à la volée en fonction de la valeur d'un attribut (Cf. le code donné par zainab_k avec l'option context)
dgrichard est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h55.


 
 
 
 
Partenaires

Hébergement Web