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
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
Bonjour,
Pour modifier le style selon un paramètre, il faut utiliser la propriété context:
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 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; } } ) });
merci pour ta réponse.
Je vais faire des essais dans ce sens.
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.
Le mieux serait d'avoir le fichier gpx et le code qui va avec.
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 : 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
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 }); ";
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
Super merci beaucoup
Je fais marcher ton exemple sans problèmes.
A moi d'adapter pour la suite
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager