Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/11/2012, 11:33
mrjotajota
 
Fecha de Ingreso: noviembre-2012
Ubicación: Buenos Aires, Argentina
Mensajes: 1
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta Generar archivo KML para descarga

Estimados,
tengan todos Uds. buen día.
Estoy desarrollando un script con PHP y MySQL, donde me conecto a una base de datos, recolecto unos datos de una tabla y con ellos, genero un Archivo KML (de esos que son legibles por Google Earth), y finalmente, lo hago descargar automáticamente por el usuario. Ahora bien, el problema aparece al descargar el archivo generado y querer abrirlo con Google Earth, el cual me da un error al leer el archivo.
Analizando el mismo, veo que, al generarlo, el script me agrega al inicio del mismo, varios espacios en blanco a modo de "sangría" o "tabulación". Si la elimino a mano, es perfectamente compatible con lo que quiero hacer, pero no logro elimianr esos espacios.
Les copio a continuación el script:


Código PHP:
Ver original
  1. <?php
  2.         //Conexión a la base de datos
  3.     $Servidor = 'nombre_servidor';
  4.     $Usr = 'usuario';
  5.     $Pwd = 'clave';
  6.     $base = "nombre_base";
  7.     $db = mysql_connect($Servidor,$Usr,$Pwd) or die(mysql_error());
  8.     mysql_select_db($base);            
  9.                
  10.     $result = mysql_query("SELECT * FROM tabla1",$db);
  11.  
  12. // Creo un ARRAY e inserto en él una fila para cada línea del KML final.
  13.  
  14. $kml[] = '<?xml version="1.0" encoding="UTF-8"?>';
  15. $kml[] = '<kml xmlns="http://earth.google.com/kml/2.1">';
  16. $kml[] = ' <Document>';
  17. $kml[] = ' <Style id="fijaStyle">';
  18. $kml[] = ' <IconStyle id="fijaIcon">';
  19. $kml[] = ' <Icon>';
  20. $kml[] = ' <href>http://maps.google.com/mapfiles/kml/pal2/icon63.png</href>';
  21. $kml[] = ' </Icon>';
  22. $kml[] = ' </IconStyle>';
  23. $kml[] = ' </Style>';
  24.  
  25. // Iteraciones dentro del bucle WHILE, escribiendo un nodo por cada fila de la consulta.
  26. while ($row = @mysql_fetch_assoc($result))
  27. {
  28.   $kml[] = ' <Placemark id="placemark' . $row['id_camara'] . '">';
  29.   $kml[] = ' <name>' . htmlentities($row['Domicilio']) . '</name>';
  30.   $kml[] = ' <description>' . htmlentities($row['Domicilio1']) . '</description>';
  31.   $kml[] = ' <styleUrl>#fija'.'Style</styleUrl>';
  32.   $kml[] = ' <Point>';
  33.   $kml[] = ' <coordinates>' . $row['Longitud'] . ','  . $row['Latitud'] . '</coordinates>';
  34.   $kml[] = ' </Point>';
  35.   $kml[] = ' </Placemark>';
  36.  
  37. }
  38.  
  39. // Fin del Archivo XML
  40. $kml[] = ' </Document>';
  41. $kml[] = '</kml>';
  42.  
  43. //Genero el archivo y lo pongo para descarga directa.
  44. $kmlOutput = join("\n", $kml);
  45. header('Content-type: application/vnd.google-earth.kml+xml');
  46. echo $kmlOutput;
  47.  
  48. ?>

Si alguno lo prueba, verá que, al descargar el archivo y abrirlo para editarlo, se encontrará con todo el código escrito correctamente, a excepción de la primera línea en donde se ve lo siguiente:

Linea 1 generada: " <?xml version="1.0" encoding="UTF-8"?>"
y debiera aparecer sin los espacios del comienzo:

Linea 1 correcta: "<?xml version="1.0" encoding="UTF-8"?>"

* La documentación de como generar el KML la obtuve del siguient sitio web:
"https://developers.google.com/kml/articles/phpmysqlkml?hl=es"

Aguardo comentarios.
Gracias y saludos!