Pages: 1
- Sujet précédent - Librairie html2canvas : décalage WMS et couches vectorielles au print - Sujet suivant
#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
Pages: 1
- Sujet précédent - Librairie html2canvas : décalage WMS et couches vectorielles au print - Sujet suivant