我正在使用 Google 地图创建一个地图,该地图可以通过调用 PHP 脚本以 XML 的形式输出 KML 层,从而从数据库中提取(和切换)各种数据层。当我运行下面的代码时,什么也没有发生,也没有控制台错误。我知道返回的 XML 是正确的,因为在我的测试中它与有效的 XML 数据层完全相同。
html
function downloadUrl(url,callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
callback(request, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
$(document).ready(function() {
$('.kml_item').toggle(
function() {
$(this).animate({backgroundColor: '#ffffff'}, 200);
downloadUrl("SQL_map.php", function(data) {
var xml = data.responseXML;
var kmlxml = new google.maps.KmlLayer(xml);
kmlxml.setMap(the_Map);
});
SQL_map.php 的相关部分
header("Content-type: text/xml");
echo '<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<Style id="a">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/ms/icons/yellow-dot.png</href>
</Icon>
</IconStyle>
</Style>';
// Iterate through the rows, printing XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
echo '<Placemark><name>' . parseToXML($row['name']) . '</name><styleUrl>#a</styleUrl><point><coordinates>' . $row['lat'] . ',' . $row['lng'] . '</coordinates></point><description>' . parseToXML($row['name']) . '</description></Placemark>';
}
// End XML file
echo '</Document>
</kml>';
我不一定要找人来为我尝试做的事情提供完整的代码,但真正的问题是这种提取数据并将其放置在地图上的方法是否可行。我尝试了其他几种方法,每种方法都有自己的问题。