Bonjour,
Je suis en train de modifier une page html qui me permet d'afficher des cartes avec l'API Leaflet.
Dans cette page je peux exporter les données geojson d'une couche en cliquant sur un bouton dirigeant vers un lien dans la page dont voici le code :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part <a href="#" id='exportgpx' data-toggle="tooltip" title="Enregistrer les waypoints et/ou tracés au format gpx">Gpx</a>
Coté javacript, ce lien aboutit à :
Les exports de données sont fonctionnels.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 document.getElementById('exportgpx').onclick = function(e) { // Extract GeoJson from featureGroup var data = exportlayers.toGeoJSON(); var gpx = togpx(data); // Stringify the GeoJson var convertedData = 'text/gpx;charset=utf-8,' + encodeURIComponent(gpx); // Create export var name = prompt('Enter file name','data'); // second param can be empty, it is the default value document.getElementById('exportgpx').setAttribute('href', 'data:' + convertedData); document.getElementById('exportgpx').setAttribute('download',name + '.gpx'); }
Maintenant je désire enchaîner deux commandes, d'une part une sélection de couches à exporter avec une checkbox à choix multiples, puis une fois les choix réalisés, les valider pour export dans une couche et poursuivre par l'export vers le fichier gpx sans cliquer sur le bouton "exportgpx" sur la page, mais en simulant son appui. J'ai utilisé ce code :
Je constate que l'export ne se fait pas à la première validation, mais en renouvelant cette validation. Je pense que la simulation d'appui doit être en cause, mais je ne sais comment y remédier.
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 function valid(){ var exportlayers = L.featureGroup(); var checkboxes1 = document.getElementById("lieux1"); if (checkboxes1.checked){ layerGroup001.addTo(exportlayers);} var checkboxes2 = document.getElementById("lieux2"); if (checkboxes2.checked){ layerGroup002.addTo(exportlayers);} var checkboxes3 = document.getElementById("lieux3"); if (checkboxes3.checked){ layerGroup003.addTo(exportlayers);} const evt = new MouseEvent("click", { view: window, bubbles: true, ); document.getElementById('exportgpx').dispatchEvent(evt); document.getElementById('exportgpx').onclick = function(e) { var data = exportlayers.toGeoJSON(); var gpx = togpx(data); var convertedData = 'text/gpx;charset=utf-8,' + encodeURIComponent(gpx); var name = prompt('Enter file name','data'); // second param can be empty, it is the default value document.getElementById('exportgpx').setAttribute('href', 'data:' + convertedData); document.getElementById('exportgpx').setAttribute('download',name + '.gpx'); } }
Je vous remercie de votre aide
Bernard
Partager