Witam, mam problem ze skryptem generującym kml a bardziej z jego wczytaniem do javascript, aby naniósł mi znaczniki na mapę. A więc plik kml tworzy się poprawnie, ponieważ po zapisaniu zawartości to pliku .kml wszystko działa dobrze.
genaratekml.php
  1. <?php
  2.  
  3.  
  4. $dzial = $_GET["dzial"];
  5. $atrybut = $_GET["atr"];
  6. $connection=mysql_connect ('*', '*', '*');
  7. if (!$connection) {
  8. die ('Nie połączono z serwerem baz danych: '. mysql_error());
  9. }
  10.  
  11. if ($atrybut == ""){
  12. $zapytanie = "SELECT * FROM `*` WHERE `category`=".$dzial;
  13. $idzapytania = mysql_query($zapytanie);
  14. $kml = array('<?xml version="1.0" encoding="UTF-8"?>');
  15. $kml[] = '<kml xmlns="http://earth.google.com/kml/2.1">';
  16. $kml[] = ' <Document>';
  17. while ($row = @mysql_fetch_assoc($idzapytania))
  18. {
  19.  
  20. $kml[] = ' <Placemark id="placemark' . $row['id'] . '">';
  21. $kml[] = ' <name>' . htmlentities($row['name']) . '</name>';
  22. $kml[] = ' <description>' . htmlentities($row['address']) . '</description>';
  23. $kml[] = ' <Point>';
  24. $kml[] = ' <coordinates>' . $row['lng'] . ',' . $row['lat'] . '</coordinates>';
  25. $kml[] = ' </Point>';
  26. $kml[] = ' </Placemark>';
  27. }
  28.  
  29. }
  30. else
  31. {
  32. }
  33. $kml[] = ' </Document>';
  34. $kml[] = '</kml>';
  35. $kmlOutput = join("\n", $kml);
  36. header('Content-type: application/vnd.google-earth.kml+xml');
  37. echo $kmlOutput;
  38. ?>

mapa.php
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  5. </head>
  6. <body onload="onLoad()">
  7. <div id="map_canvas" style="width: 500px; height: 400px; float: left; border: 1px solid black;"></div>
  8. <div id="sidebar" style="float: left; height: 400px; width: 150px; border: 1px solid black;">
  9. <table id="sidebarTABLE">
  10. <tbody id="sidebarTBODY">
  11. </tbody>
  12. </table>
  13. </div>
  14.  
  15. <script type="text/javascript">
  16. var map;
  17. var layers = {
  18. <?php
  19. $connection=mysql_connect ('*', '*', '*');
  20. if (!$connection) {
  21. die ('Nie połączono z serwerem baz danych: '. mysql_error());
  22. }
  23. $zapytanie = "SELECT `title`,`description`, `id` FROM `*` WHERE `section` = 4";
  24.  
  25. $idzapytania = mysql_query($zapytanie);
  26. while ($wiersz = mysql_fetch_row($idzapytania))
  27. {
  28.  
  29. $str = str_replace(' ', '', $wiersz[0]);
  30. echo '"'. $str .'":{"url": "*generatekml.php?dzial='.$wiersz[2].'",
  31. "name": "'.$wiersz[0].$wiersz[2].'"},';
  32. if ($wiersz[1]!=""){
  33. $sekcje = strip_tags($wiersz[1]);
  34.  
  35. $zapytanie1 = "SELECT `name`.`id` FROM `*` WHERE `category` =".$sekcje;
  36.  
  37. $idzapytania1 = mysql_query($zapytanie1);
  38.  
  39. while ($wiersz1 = mysql_fetch_row($idzapytania1))
  40. {
  41. $str1 = str_replace(' ', '', $wiersz1[0]);
  42. echo '"'. $str1 .'":{"url": "*generatekml.php?dzial='.$wiersz1[1].'",
  43. "name": "-> '.$wiersz1[0].'"},';
  44. }
  45. }
  46. }
  47. ?>
  48. };
  49.  
  50. function onLoad() {
  51. map = new GMap2(document.getElementById("map_canvas"));
  52. map.setCenter(new GLatLng(52.75491333708034,19.40185546875), 6);
  53. map.addControl(new GSmallMapControl());
  54. map.enableScrollWheelZoom();
  55.  
  56. for(var layer in layers) {
  57. addTR(layer, layers[layer].name);
  58. }
  59.  
  60. }
  61. function addTR(id) {
  62. var layerTR = document.createElement("tr");
  63. var inputTD = document.createElement("td");
  64. var input = document.createElement("input");
  65. input.type = "checkbox";
  66. input.id = id;
  67. input.onclick = function () { toggleGeoXML(this.id, this.checked) };
  68. inputTD.appendChild(input);
  69. var nameTD = document.createElement("td");
  70. var nameA = document.createElement("a");
  71. nameA.href = layers[id].url;
  72. var name = document.createTextNode(layers[id].name);
  73. nameA.appendChild(name);
  74. nameTD.appendChild(nameA);
  75. layerTR.appendChild(inputTD);
  76. layerTR.appendChild(nameTD);
  77. document.getElementById("sidebarTBODY").appendChild(layerTR);
  78. }
  79.  
  80. function toggleGeoXML(id, checked) {
  81. if (checked) {
  82. var geoXml = new GGeoXml(layers[id].url);
  83. layers[id].geoXml = geoXml;
  84. if (layers[id].zoom) {
  85. map.setZoom(layers[id].zoom);
  86. } else {
  87. map.setZoom(6);
  88. }
  89. if (layers[id].lat && layers[id].lng) {
  90. map.setCenter(new GLatLng(layers[id].lat, layers[id].lng));
  91. } else {
  92. map.setCenter(new GLatLng(52.75491333708034,19.40185546875));
  93. }
  94. map.addOverlay(geoXml);
  95. } else if (layers[id].geoXml) {
  96. map.removeOverlay(layers[id].geoXml);
  97. }
  98. }
  99.  
  100. </script>
  101.  
  102. </body>
  103. </html>
  104.  

Dodałem * w miejsca danych serwera. Najdziwniejsze dla mnie jest to,że jak się kliknie na link który generuje się w tablicy z checkboxami to ściąga się plik poprawny (generate.php) którego typ to kml. Czyli wszystko poprawnie...ale niestety nie wyświetla znaczników na mapie. Myślę,że to jest spowodowane rozszerzeniem php a nie kml. Z góry dzięki za sugestie .