Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Tue 11 February 2025 21:59

liege67
Participant assidu
Lieu: Liège
Date d'inscription: 10 Apr 2014
Messages: 203

Librairie html2canvas : décalage WMS et couches vectorielles au print

bonjour

dans une page HTML / Leaflet, je galère depuis 2 jours sur une impression avec la librairie html2canvas
j'ai un fond OSM (ou tout autre WMS) sur lequel 2 couches GEOJSON ou GEOJSONL viennent s'afficher sans aucun décalage mais dès que je demande une impression avec html2canvas , l'image qui arrive dans le popup ou la page HTML affiche correctement le WMS mais les couches vectorielles sont affichées à une autre échelle. j'ai essayé de temporiser l'affichage des vecteurs, mais cela ne change rien
toutes les couches sont en EPSG 4326

voici mon code

        // Recentrer la carte sur le polygone cliqué et forcer le niveau de zoom à 18
        map.fitBounds(layer.getBounds());

        // Vérifier le statut du bouton printHTML pour ouvrir une nouvelle page HTML ou afficher le popup
        if (isPrintHTMLButtonActive) {
            // Attendre que le mouvement de la carte soit terminé
            map.once('moveend', function() {
                // Utiliser html2canvas pour capturer une image de la carte
                html2canvas(document.querySelector("#map"), {
                    useCORS: true // Enlever la ligne scale pour éviter les problèmes de décalage
                }).then(function(canvas) {
                    var mapImage = canvas.toDataURL('image/png');

                var newWindow = window.open("", "popupWindow", "width=600,height=400,scrollbars=yes");
                newWindow.document.write("<html><head><title>Informations sur la forêt</title></head><body>" +
                                         "<img src='" + mapImage + "' alt='Carte actuelle' width='600'><br>" + popupContent +
                                         "</body></html>");
                newWindow.document.close();
                });
            });
        } else {
            if (map.getZoom() >= minZoomLevelPopUp) {
                layer.bindPopup(popupContent).openPopup();
            }
        }
    });

    // Fonction pour vérifier le niveau de zoom lors du chargement initial
    function togglePopup() {
        if (map.getZoom() < minZoomLevelPopUp && layer.isPopupOpen()) {
            layer.closePopup();
        }
    }
   
    // Ajouter un écouteur d'événement pour le zoom sur la carte
    map.on('zoomend', togglePopup);
}


si par le plus grand des hasards qq'un a la solution ...

merci

jean marc

Hors ligne

 

#2 Tue 11 February 2025 22:42

liege67
Participant assidu
Lieu: Liège
Date d'inscription: 10 Apr 2014
Messages: 203

Re: Librairie html2canvas : décalage WMS et couches vectorielles au print

résolu :-)

var map = L.map('map', {
    renderer: L.canvas()
}).setView([initialLatitude, initialLongitude], initialZoomLevel);

ajout du renderer: L.canvas()dans la définition de la map
et Canvas peut offrir des performances meilleures que SVG (qui est le moteur de rendu par défaut) pour des ensembles de données volumineux ou complexes.

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo