2011-09-24 64 views
1

此javascript數組包含我發送給Google Maps API以在地圖中繪製路徑的座標。 有時座標[0]爲空,因爲它取決於以前可能存在或不存在的路線(使用Google地圖)。使用jQuery修改數組以獲取排序索引

這是我的代碼:

coordinates = []; 

(這裏與我找了以前的路徑(座標[0])在這種情況下,我們asuming,這是空,因此我們有這些值:。

coordinates[1] = '50,20'; //route 1 
coordinates[2] = '10,18'; //route 2 
coordinates[3] = '27,34'; //route 3 

在那之後,我畫的路徑在地圖上是這樣的:

travel_path = new google.maps.Polyline({ 
    path: coordinates 
}); 
travel_path.setMap(map); 

問題:當有座標[0](發生在沒有前一段行程路徑時).Polyline方法拋出錯誤,因爲它需要接收從0開始的有序索引的數組。

問題:可以將我的原始數組轉換爲(比較索引):

coordinates[0] = '50,20'; //route 1 
coordinates[1] = '10,18'; //route 2 
coordinates[2] = '27,34'; //route 3 

回答

2

coordinates.shift()從數組中刪除第一個元素。

var coordinates = []; 
//coordinates[0] = undefined; 
coordinates[1] = '50,20'; //route 1 
coordinates[2] = '10,18'; //route 2 
coordinates[3] = '27,34'; //route 3 
coordinates.shift(); 

coordinates.shift()原因導致這種情況發生:

coordinates[0] = coordinates[1]; 
coordinates[1] = coordinates[2]; 
coordinates[2] = coordinates[3]; 
//coordinates[3] is removed. 
0

用途:

travel_path = new google.maps.Polyline({ 
    path:(function(){ 
     var arrayCoord=[],k=0; 
     for(var key in coordinates){ 
      arrayCoord[k]=coordinates[key]; 
      ++k; 
     } 
     return arrayCoord; 
    })() 
}); 
travel_path.setMap(map); 
+0

它的工作原理,但其他的解決方案更快,更乾淨:) – andufo

1

像羅布說,使用shift(),你可以做一個檢查,看是否座標[0]未定義第一。

if(!coordinates[0]) 
    coordinates.shift(); 
+0

if(typeof coordinates [0] =='undefined')coordinates.shift(); – Darm

+0

'!coordinates [0]'做同樣的事情,而且更短:-P –

+0

您錯過了這一點。它不會做同樣的事情。座標[0] = 0呢? – Darm