2012-01-06 113 views
1

我正在使用Google Maps API。我試圖從數據庫中添加多段線和座標。任何人都可以告訴我如何使用標記管理器來添加多段線嗎?我認爲我的座標太多,而且越來越混亂。使用標記管理器可能會有幫助。有什麼建議麼?
我使用的代碼是:如何將多段線添加到Google地圖?

for ($i=0;$i<$truckCount;$i++) 
      { 
       $j=0; 
     $k=1; 
       do 
       { 
        $data = pg_fetch_row($result,$j); 
      $data1=pg_fetch_row($result,$k); 
        $j++; 
      $k++; 
       }while(condition) 
       echo"points[$i]=[new GLatLng($data[4], $data[5]),new GLatLng($data1[4], $data1[5])];"; 
     echo"polyline= new GPolyline(points,'#0000FF', 6, 0.5);"; 
     echo "setTimeout(function() {map.addOverlay(polyline);},2);"; 

      } 

我用GLog.write的(點)和我看到的,只有前兩個座標獲得通過,因此沒有線繪製

+0

'I <直到data' JS中?? – diEcho 2012-01-06 06:10:16

+0

這部分是在PHP中,因爲我從數據庫 – 2012-01-06 06:12:23

+0

檢索協調,直到數據是一個變量,我計算的「pg_num_rows($ result) – 2012-01-06 06:13:09

回答

0

您需要將新的GPolyline循環之外的部分。所以你將每個單獨的座標添加到你的數組中,然後在最後使用整個數組來創建折線。

for(i=0;i<till data;i++) 
{ 
    $data=pg_fetch_row($result,$i); 
    points[$i]= new GLatLng($data[4],$data[5]); // Lat,Long coordinates are at 5th and 6th column 
} 

var polyline = new GPolyline(points,color,4,1); 
map.addOverlay(polyline); 

更新:或者,如果你想在同一時間,那條一個的每一段,你可以嘗試創建一個新的數組僅會2個座標:起點和終點指向一個單獨的細分市場。你需要循環,直到array.length-1這一次(不知道你需要如何修改你的PHP數組,所以我會用純JavaScript語法來寫一些東西 - 你需要修改回PHP)

var coordinates = // your data array; 
var points,polyline; 

for(i=0;i < coordinates.length-1; i++) { 
    // recreate the array 
    points = []; 

    // add the first coordinate 
    points[0]= new GLatLng(coordinates[i].lat,coordinates[i].lon); 

    // add the 2nd coordinate 
    points[1]= new GLatLng(coordinates[i+1].lat,coordinates[i+1].lon); 

    polyline = new GPolyline(points,color,4,1); 
    map.addOverlay(polyline); 

    // at this point here you could add a setTimeout if still required 
} 
+0

我做到了,但由於我有很多協調,它只是弄亂了一個很多,並且顯着降低了效率,有沒有更好的方法來做到這一點,我可以延遲繪製各條線,例如十分之一秒,我嘗試使用「setTimeout」,但只是延遲並將它一起繪製在一起 – 2012-01-07 05:01:09

+0

看到我的更新回答 – duncan 2012-01-07 09:13:38

+0

你可以請看我的答案,找出可能是什麼問題 – 2012-01-08 20:41:28

0

這是我更新的代碼由一個

用於添加線中的一條(; $ I < 2000; $ I = 0 $ I ++)

  { 
       $data1 = pg_fetch_row($result,$i); 
       $data2 = pg_fetch_row($result,$i+1); 
       echo "points[$i] = newGLatLng($data1[4], $data1[5]);\n"; 
       echo "points[$i+1] = newGLatLng($data2[4],$data2[5]);\n"; 
       echo" var polyline = new GPolyline(points,'#0000FF', 6, 0.5);"; 
       echo "setTimeout(function() {map.addOverlay(polyline);},2);"; 

       } 
+0

你會得到任何JS錯誤? – duncan 2012-01-08 21:57:53

+0

我沒有收到任何這些錯誤,頁面加載,每其他標記被放置,但多線段 – 2012-01-09 01:27:41

+0

可以在setTimeout f中添加警報或console.log()以確保它被稱爲 – duncan 2012-01-09 10:13:25

相關問題