2013-01-05 53 views
0

我需要從xml創建Javascript數組。一切都好。XML to JavaScript Array [Google Maps]

我必須創建數組這樣的:

point = [ 
       new google.maps.LatLng(40.9921196514,47.8604733650), 
       new google.maps.LatLng(40.9922511293,47.8606186245), 

     ]; 

代碼

downloadUrl("poly.php", function(data) { 
     var xml = data.responseXML; 
     var polys = xml.documentElement.getElementsByTagName("poly"); 
     for (var i = 0; i < polys.length; i++) { 

      var pid = polys[i].getAttribute("pid"); 


    point = [ 
      new google.maps.LatLng(parseFloat(polys[i].getAttribute("plat")), parseFloat(polys[i].getAttribute("plng"))); 
     ]; 

i`ve這樣做,但它不工作。((

PS我從MySQL中獲取數據。

...

XML:

<polys> 
<poly pid="1" pstatus="status1" plat="40.992638" plng="47.860474"/> 
<poly pid="2" pstatus="status2" plat="40.992252" plng="47.860619"/> 
</polys> 
+0

請解釋你看到錯誤嗎?奇怪的行爲?它究竟在做什麼與你期望的不同? – Mathletics

+0

我使用Alert(點);不要讓我看到任何東西。但是當使用point = [ new google.maps.LatLng(40.9921196514,47.8604733650), new google.maps.LatLng(40.9922511293,47.8606186245), ];就像它工作 – brio

+0

請給我們一個例子 - '' - 元素 –

回答

1

我可以假設你使用谷歌從該util.js功能downloadUrl

當是:data已經是一個文件,也沒有必要訪問data.responseXML

每次嘗試訪問的xml屬性將導致一個錯誤,因爲xmlundefined

替換此:

var xml = data.responseXML; 
    var polys = xml.documentElement.getElementsByTagName("poly"); 

有:

var polys = data.documentElement.getElementsByTagName("poly"); 

有一個語法錯誤:

point = [ 
      new google.maps.LatLng(parseFloat(polys[i].getAttribute("plat")), parseFloat(polys[i].getAttribute("plng"))); 
     ]; 

刪除分號:

("plng"))); 
//---------^ 

但要獲得期望的結果,你必須創建點對多點陣列外環:

var point=[]; 

,並添加經緯度的內循環點:「不工作」

point.push(new google.maps.LatLng(parseFloat(polys[i].getAttribute("plat")), 
            parseFloat(polys[i].getAttribute("plng")))); 
+0

感謝您的回答。 Bu沒有工作:((.. Myjs頁面就像那個http://jsfiddle.net/JFR3n/ ... [我在主頁面包含util.js] – brio

+0

所以謝謝,我會用xml點來做。 (40.992252,47.86041900000004),(40.992252,47.86061900000004)它顯示了這個拉特長..但我的拉特多頭像這樣:(40.992638 \t 47.860474)(40.992252 \t 47.860619)... ..什麼是:00000007&00000004? (( – brio

+0

不是一個解決方案,但也許有趣:http://stackoverflow.com/questions/13307066/why-am-i-not-getting-exact-longitude-when-i-click- on-a-marker/13307262#13307262 –