2013-10-17 67 views
0

我想繪製使用ammap的線,我卡住生成開始和結束點的座標數組。我必須與具有case_study的關鍵JSON數組如下圖所示Javascript數組援助

var data = { 
    "countries_involved": [ 
    {"c_id": 6, "country": "India", "longitude": "21", "latitude": "78.0000", "involvement": 3, "case_study": 4}, 
    {"c_id": 7, "country": "Canada", "longitude": "62", "latitude": "105.3809", "involvement": 3, "case_study": 4}, 
    {"c_id": 8, "country": "Comoros", "longitude": "12", "latitude": "44.2333", "involvement": 1, "case_study": 5}, 
    {"c_id": 9, "country": "Madagascar", "longitude": "20", "latitude": "47.0000", "involvement": 1, "case_study": 5}, 
    {"c_id": 10, "country": "Mauritius", "longitude": "20", "latitude": "57.5000", "involvement": 1, "case_study": 5} 
    ], 
    "country_details": [ 
    {"name": "Kenya", "longitude": "-1", "latitude": "36.8000", "case_study": 4}, 
    {"name": "Kenya", "longitude": "-1", "latitude": "36.8000", "case_study": 5} 
    ] 
}; 

我使用jQuery過濾器的格式如下

{longitudes: [country_details.longitude,countries_involved.longitude], latitudes: [country_details.latitude,countries_involved.latitude],} 

返回數據這裏是內我的功能循環

for (var i = 0; i < data.country_details.length; i++) 
{ 
    var obj = { 
    id: data.country_details[i]['name'].replace(/\s+/g, ''), 
    color: "#000000", 
    svgPath: targetSVG, 
    title: data.country_details[i]['country'], 
    latitude: data.country_details[i]['longitude'], 
    longitude: data.country_details[i]['latitude'], 
    scale: 1.5, 
    zoomLevel: 2.74, 
    lines: data.countries_involved.filter(function(involved) { 
     return involved.case_study === data.country_details[i].case_study 
    }).map(function(item) { 
     return {latitudes: [data.country_details[i].latitude, item.latitude], longitudes: [data.country_details[i].longitude, item.longitude]} 
    }) 
    }; 
} 

不過,我只得到一個陣列,只爲起點和終點沒有意義item.latitudeitem.longitude沒有評估。任何人都可以幫忙嗎?

+1

我看到「緯度」和「經度」中的值。有什麼問題? http://jsfiddle.net/qSf3d/2/ – McGarnagle

+0

不能在我的電腦上工作,這就是我的console.log [對象{緯度= [2],經度= [2]},對象{緯度對象{緯度= [2],經度= [2]},對象{緯度= [2],經度= [2]},對象{緯度= [2],[經度= [2]},對象{緯度= [2],經度= [2]},對象{緯度= [2],經度= [2]}] –

+0

結果應該是這樣的{經度:[start_longitude ,end_longitude],緯度:[start_latitude,end_latitude],} –

回答

2

在此片的代碼:

data.countries_involved.filter(function(involved){ 
    return involved.case_study === data.country_details[i].case_study 
}).map(function(item){ 
    return { 
     latitudes: [data.country_details[i].latitude, item.latitude], 
     longitudes: [data.country_details[i].longitude, item.longitude] 
    }; 
}); 

變量 'i' 是沒有定義。

我相信在內置javascript數組'map'和'filter'函數的情況下,您正在迭代的集合中的索引將作爲第二個參數傳遞。所以申報的「i」在這兩條線的第二個參數:

data.countries_involved.filter(function(involved, i){ 
// and: 
}).map(function(item, i){ 

編輯: Array.prototype.map和Array.prototype.filter不是所有瀏覽器。要使用jQuery地圖和過濾器,請執行以下操作:

$($.grep(data.countries_involved, function(involved){ 
    return involved.case_study === data.country_details[i].case_study 
})).map(function(idx, item){ 
    return { 
     latitudes: [data.country_details[i].latitude, item.latitude], 
     longitudes: [data.country_details[i].longitude, item.longitude] 
    }; 
}).get() 
+0

對不起,忘記提及代碼位於for循環中以獲取國家,然後在上述功能中附加各自涉及的國家 –

+0

恐怕不清楚..你能寄出周圍的代碼嗎? –

+0

我已更新代碼以顯示周圍環境 –