En otro post os explicamos como imprimir desde Php para generar un Pdf. Hoy os vamos a explicar como imprimir en nuestro Pdf un mapa estático de Google Maps. Como sabéis Google tiene toda una serie de APIs que nos permiten generar distintos tipos de contenido. Hoy nos vamos a centrar en Google Maps, que nos ofrece un servicio en el que pasándole una dirección nos devuelve una imagen de un mapa estático, es decir no navegable, no podemos interactuar con él, solo es una imagen de mapa.
Cuando estamos generando una página web, podemos renderizar en pantalla el mapa recibido desde Google, pero si lo añadimos en una variable Html para imprimir en Pdf, el mapa no se imprime correctamente.
Para solucionarlo, nosotros utilizamos el siguiente código :
$address = $latitud.",".$longitud;
$imagemap = 'http://maps.googleapis.com/maps/api/staticmap?key=MY_KEY¢er='.$address.'&zoom=15&size=640x400';
file_put_contents('mimapa.png',file_get_contents($imagemap));
$html.= '<img src="mimapa.png" width="80%" />';
¿Pero que es este código? Vamos a explicarlo a continuación.
Primero de todo generamos nuestra dirección, en nuestro caso tenemos almacenado la longitud y la latitud de la dirección que queremos mostrar. Pero podría ser una dirección en texto. Una vez tenemos la dirección generamos la cadena hacia googleapis con la dirección. Como podéis ver le tenemos que añadir nuestra propia clave de producto. Esta nos la dará Google, deberemos ir a su portal de desarrolladores y hacer la petición para los mapas estáticos. Los siguientes campos, el center es la dirección en la que queremos que se centre el mapa. Zoom es el zoom del mapa, si queremos que se muestre mucho mapa o un mapa más focalizado. Y por último le podemos indicar el tamaño de la imagen que nos llega.
Una vez tenemos generada esta cadena, podemos llamar a la función file_get_contents que nos devolverá el contenido de la imagen. En este caso tened en cuenta que puede ser que si la url que indicáis es https, el file_get_contents puede que no os funcione. En nuestro caso hemos utilizado el http sin problemas. Y sobre lo que se nos devuelve lo escribiremos en nuestro fichero png, gracias a la función file_put_contents.
El siguiente paso es escribir en la variable de html que ya vimos como utilizar en otro post, la imagen que acabamos de generar.
De esta manera cuando realicemos el render gracias a Dompdf se imprimirá el mapa correctamente.
Esperemos que os haya sido útil.