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
<?php
$dzial = $_GET["dzial"];
$atrybut = $_GET["atr"];
if (!$connection) {
}
if ($atrybut == ""){
$zapytanie = "SELECT * FROM `*` WHERE `category`=".$dzial;
$kml = array('<?xml version="1.0" encoding="UTF-8"?>'); $kml[] = '<kml xmlns="http://earth.google.com/kml/2.1">';
$kml[] = ' <Document>';
{
$kml[] = ' <Placemark id="placemark' . $row['id'] . '">';
$kml[] = ' <name>' . htmlentities($row['name']) . '</name>'; $kml[] = ' <description>' . htmlentities($row['address']) . '</description>'; $kml[] = ' <Point>';
$kml[] = ' <coordinates>' . $row['lng'] . ',' . $row['lat'] . '</coordinates>';
$kml[] = ' </Point>';
$kml[] = ' </Placemark>';
}
}
else
{
}
$kml[] = ' </Document>';
$kml[] = '</kml>';
$kmlOutput = join("\n", $kml); header('Content-type: application/vnd.google-earth.kml+xml'); ?>
mapa.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
</head>
<body onload="onLoad()">
<div id="map_canvas" style="width: 500px; height: 400px; float: left; border: 1px solid black;"></div>
<div id="sidebar" style="float: left; height: 400px; width: 150px; border: 1px solid black;">
<table id="sidebarTABLE">
<tbody id="sidebarTBODY">
</tbody>
</table>
</div>
<script type="text/javascript">
var map;
var layers = {
<?php
if (!$connection) {
}
$zapytanie = "SELECT `title`,`description`, `id` FROM `*` WHERE `section` = 4";
{
echo '"'. $str .'":{"url": "*generatekml.php?dzial='.$wiersz[2].'", "name": "'.$wiersz[0].$wiersz[2].'"},';
if ($wiersz[1]!=""){
$zapytanie1 = "SELECT `name`.`id` FROM `*` WHERE `category` =".$sekcje;
{
echo '"'. $str1 .'":{"url": "*generatekml.php?dzial='.$wiersz1[1].'", "name": "-> '.$wiersz1[0].'"},';
}
}
}
?>
};
function onLoad() {
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(52.75491333708034,19.40185546875), 6);
map.addControl(new GSmallMapControl());
map.enableScrollWheelZoom();
for(var layer in layers) {
addTR(layer, layers[layer].name);
}
}
function addTR(id) {
var layerTR = document.createElement("tr");
var inputTD = document.createElement("td");
var input = document.createElement("input");
input.type = "checkbox";
input.id = id;
input.onclick = function () { toggleGeoXML(this.id, this.checked) };
inputTD.appendChild(input);
var nameTD = document.createElement("td");
var nameA = document.createElement("a");
nameA.href = layers[id].url;
var name = document.createTextNode(layers[id].name);
nameA.appendChild(name);
nameTD.appendChild(nameA);
layerTR.appendChild(inputTD);
layerTR.appendChild(nameTD);
document.getElementById("sidebarTBODY").appendChild(layerTR);
}
function toggleGeoXML(id, checked) {
if (checked) {
var geoXml = new GGeoXml(layers[id].url);
layers[id].geoXml = geoXml;
if (layers[id].zoom) {
map.setZoom(layers[id].zoom);
} else {
map.setZoom(6);
}
if (layers[id].lat && layers[id].lng) {
map.setCenter(new GLatLng(layers[id].lat, layers[id].lng));
} else {
map.setCenter(new GLatLng(52.75491333708034,19.40185546875));
}
map.addOverlay(geoXml);
} else if (layers[id].geoXml) {
map.removeOverlay(layers[id].geoXml);
}
}
</script>
</body>
</html>
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 .