J'ai une série de coordonnées que je trace sur une visualisation de heatmap générée par l'API à l'aide de l'API Google Maps. Les données changent tous les jours et je voudrais capturer la carte thermique et la sauvegarder en tant qu’image PNG ou JPG par programme à partir de PHP, de sorte que la carte d’un jour donné puisse être rappelée sans régénérer la carte et un certain nombre de données. les cartes pourraient être séquencées ensemble pour montrer les changements animés sur une période donnée. Je dois également pouvoir exporter un rapport PDF comprenant une carte thermique, ce qui ne fonctionnerait évidemment pas avec un cadre de page Web dynamique.
Est-ce que quelqu'un sait:
pour enregistrer une carte thermique générée par Google dans un fichier PNG ou JPG statique, autrement que de prendre manuellement une capture d’écran puis de la recadrer jusqu’aux limites de la carte? La solution doit fonctionner dans un environnement d'hébergement partagé sans interface graphique, car elle sera déployée sur de nombreux utilisateurs avec de nombreuses configurations d'hébergement différentes. La majorité d'entre eux ne seront pas des experts qualifiés en Linux ni un VPS. ou
d’un autre outil permettant de tracer les coordonnées sur une carte et d’en produire des visualisations telles que des cartes thermiques, qui peuvent être enregistrées dans des fichiers PNG ou JPG, à partir de PHP et en utilisant uniquement les classes PHP librement disponibles ou installées par défaut PHP modules? (c'est mon itinéraire préféré si quelqu'un a des outils en tête)
Je travaille sur un projet avec une fonction similaire demandée. J'ai besoin de faire un rapport qui doit contenir des données et en plus des cartes (santé, cluster et marqueurs). À l'heure actuelle, je le fais côté client, avec html2canvas, mais comme vous, j'aimerais le faire côté serveur.
google.maps.event.addListener(DivMap, 'tilesloaded', function(){
setTimeout(function(){ //Trying to ensure full map render
Map2Image("DivMap","store_mapImage.php","png");
},1000);
});
Et cette fonction
function Map2Image(MapDiv,phpup,format){
var transform=$(".gm-style>div:first>div").css("transform")
var comp=transform.split(",") //split up the transform matrix
var mapleft=parseFloat(comp[4]) //get left value
var maptop=parseFloat(comp[5]) //get top value
$(".gm-style>div:first>div").css({ //get the map container. not sure if stable
"transform":"none",
"left":mapleft,
"top":maptop,
})
}
html2canvas(document.getElementById(MapDiv),{
useCORS: true,
onrendered: function(canvas){
$.post(phpup,{image:canvas.toDataURL("image/"+format)});
$(".gm-style>div:first>div").css({
left:0,
top:0,
"transform":transform
});
}
});
}
Cette fonction est basée sur this answer.
NOTE: Je sais que c'est un très vieux billet (de 2014), mais je le poste parce que je pense que cela peut être utile pour quelqu'un. Mieux encore, quelqu'un peut nous donner la meilleure solution.
Il est possible de prendre des captures d'écran par programme plutôt que manuellement. Je le fais sur mon site de tableaux et graphiques. Les graphiques sont générés côté client à l'aide de JavaScript, mais j'ai besoin d'images miniatures créées à partir d'eux.
J'utilise Java au lieu de PHP, mais il devrait être similaire.
Voici n article sur la prise en main de Selenium par PHP qui inclut un exemple de capture d'écran .