2012-10-16 141 views
0

我正在使用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>'; 

我不一定找人给我什么,我试图做整个代码,但真正的问题是这种拉数据并将其放在地图上的方法是否可行。我尝试了其他方法,每个方法都有自己的问题。

+0

http://stackoverflow.com/questions/3514785/loading-a-local-kml-file-using-google-maps –

回答

0

不知道为什么你没有得到或看到一个错误,这是不正确的:

downloadUrl("SQL_map.php", function(data) { 
        var xml = data.responseXML; 
        var kmlxml = new google.maps.KmlLayer(xml); 
        kmlxml.setMap(the_Map); 

KmlLayer需要可以通过谷歌的服务器进行访问的可公开访问的URL。

根据KML的复杂程度,您可能可以使用geoxml3,并将parseKmlString方法传递给包含KML(但不包含responseXML)的字符串。