Bonjour.
Je reprends ma précédente discussion au point ou je bloque.
J'affiche sur ma carte des "marqueur" (randonneur) indiquant la présence d'une trace gpx, le survol de celui-ci permet d'afficher la trace. Je souhaiterait faire réagir cette trace au click de la souris pour afficher son profil altimétrique.
Pour faire réagir au click j'ai utilisé getFeatureInfo sans succès.
Mon test se trouve sur cette pagehttp://chateau.branlant.free.fr/tests/index4.php
Le passage de la souris sur la trace permet de changer la forme du curseur (pointer), mais le fait de sortir de la trace ne permet de reprendre la forme de départ, et je n'arrive pas à "utiliser" le click de la souris.
J'ai essayer un autre façon de récupérer le click de la souris qui semble fonctionner mais je ne vois pas comment utiliser ol.control.ElevationPath.
Pour récupérer le clic de la souris j'ai attribuer un nom à ma trace gpx sous la forme "gpx"+index
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 mesgpx[i] = new ol.layer.Vector({ source: new ol.source.Vector({ url: mespoints[i].dossier+"/carte/carte.gpx", format: new ol.format.GPX() }), visible: false, style: styleGPX }); var nom="gpx"+i; mesgpx[i].set('name',nom) ; map.addLayer(mesgpx[i]); //ajout a la carte de la trace gpx objmesgpx[i] = new infos(mesgpx[i],"text/html","singleclick");
Puis j'ai utiliser l'évènement on de ma carte :
et après vérification que le clic vient bien de mon gpx (grâce à son nom) je récupère un index qui me donne accès a des informations sur cette trace dont l'adresse du fichier gpx.
Code javascript : 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 var lecturegpxinfo = function(pixel){ var gpxclick = map.forEachLayerAtPixel(pixel, function (layer) {return layer;}); var test = gpxclick.get("name"); if (test.indexOf("gpx")>-1) { numerogpxsurvol = parseInt(test.replace("gpx","")); afficheprofil(numerogpxsurvol); } }; function afficheprofil(index){ // affichage du profil du gpx mesgpx[index].setVisible(false); // ligne qui permet de vérifier le bon appel de la fonction }); }; map.on('singleclick', function (evt) { if (evt.dragging) { return; } var pixel = map.getEventPixel(evt.originalEvent); afficheprofil(pixel); });
J’appelle bien une fonction, pour l'instant vide, mais la démarche est-elle correcte ? Si oui comment utiliser ol.control.ElevationPath ?
Merci pour votre aide.
Cette partie se trouve sur la page http://chateau.branlant.free.fr/tests/index5.php
Partager