2013-10-26 91 views
0

我想要使用JavaScript獲取多邊形的區域。爲此,我需要將我的JSON數組中的經度和緯度點轉換爲笛卡爾x和y座標。此循環和函數將數組中的每個經度值的經度值轉換爲x。我現在需要創建一個包含所有這些值的新數組。目前它正在爲JSON數組中的每個值創建一個新數組。下面是結果在控制檯:在JavaScript中用for循環填充數組

[445.555480625]        mapChoropleth.html:280 
[1, 445.55897]         mapChoropleth.html:280 
[2, 2: 445.62943062500005]      mapChoropleth.html:280 
[3, 3: 445.63478375]       mapChoropleth.html:280 
[4, 4: 445.64964499999996]      mapChoropleth.html:280 
[5, 5: 445.6483775]       mapChoropleth.html:280 
[6, 6: 445.61210562499997]      mapChoropleth.html:280 
[7, 7: 445.612394375]       mapChoropleth.html:280 
[8, 8: 445.6023443750001]      mapChoropleth.html:280 
[9, 9: 445.604339375]       mapChoropleth.html:280 
[10, 10: 445.571159375]      mapChoropleth.html:280 

這就是我正在嘗試的時刻,以填補新的數組:

for (var i=0;i<areaData.coordinates[0].length;i++){ 
     var lng = areaData.coordinates[0][i][1]; 
     var x = XLngToPixel(lng, '#map'); 
      function XLngToPixel(lng,elem){ 

       var array = new Array(); 
       var containerWidth=($(elem).width()); 
        lng=lng+180; 
        array[i] = $(elem).offset().left+((lng*containerWidth)/360); 
       return array; 
      } 
      console.log(YLatToPixel(lng, '#map')); 
    } 

任何幫助,將不勝感激!

+1

聲明數組for outside for循環,並在for循環內初始化它。 –

+0

@codeSpy這會如何改變? –

+0

@BenjaminGruenbaum我糾正了這是應該在循環之外聲明的數組。 –

回答

1

要創建一個包含結果的單一陣列,該陣列需要被你的循環之外創建:

var array = new Array(); 
for (var i=0;i<areaData.coordinates[0].length;i++){ 
    var lng = areaData.coordinates[0][i][1]; 
    var x = XLngToPixel(lng, '#map'); 
     function XLngToPixel(lng,elem) { 
      var containerWidth=($(elem).width()); 
      lng=lng+180; 
      array[i] = $(elem).offset().left+((lng*containerWidth)/360); 
      return array[i]; 
     } 
     console.log(YLatToPixel(lng, '#map')); 
} 

要創建的陣列緯度和經度:

var lats = new Array(); 
var lngs = new Array(); 
for (var i=0;i<areaData.coordinates[0].length;i++){ 
    var lng = areaData.coordinates[0][i][1]; 
    var x = XLngToPixel(lng, '#map'); 
     function XLngToPixel(lng,elem) { 
      var containerWidth=($(elem).width()); 
      lng=lng+180; 
      lngs[i] = lng; 
      lats[i] = $(elem).offset().left+((lng*containerWidth)/360); 

      return lats[i]; 
     } 
     console.log(YLatToPixel(lng, '#map')); 
} 

這是類似你在找什麼?

+0

考慮使用數組文字'[]'並且不要在循環中創建函數。 – Xotic750

+0

這兩個有效的觀點,我試圖幫助Milliam迭代代碼,而不是給他們一本教科書的答案,但是! –

+0

謝謝,將陣列移動到循環外部完成了這項工作! – wtmcm