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 à :
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');
    }
Les exports de données sont fonctionnels.

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 :

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 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.

Je vous remercie de votre aide

Bernard