我有被格式化這樣的對象:Javascript:對象被推入陣列覆蓋對方?
var telemetry_data = {
T36: [
//Date, lat, long
[20120516, 25.40294163, -80.46972051],
[20120518, 25.40306787, -80.46967025],
[20120521, 25.40234592, -80.46980265]
],
T43: [
[20120523, -25.4076545, -80.46945134],
[20120525, -25.40761155, -80.46756243]
]
};
這表明不同動物(T ##)在不同的日期的位置。我想在Google地圖上放置一個標記,顯示某個特定日期的動物位置,以及一條多段線顯示其到達目的地的路徑。我在折線部分遇到問題。請看下面。一切似乎一直工作到path[tegu_name[j]].push(tegu_location);
,其中path[tegu_name[j]]
看起來像它只被最後一個位置覆蓋,而不是被添加到陣列的位置。對於某些動物(T23,T34,T35,T36),儘管存在正確日期的位置,但陣列仍保持完全空。有任何想法嗎?我有一種感覺,我犯了一些愚蠢的錯誤,但我無法弄清楚。
Live:http://crocdoc.ifas.ufl.edu/projects/tegumap/(將日期更改爲5月18日,以便通過多個位置運行這部分代碼,並且可以從[776行]中僅看到一個位置的控制檯打印對象,當前位置爲紫色點)
完全JS:http://crocdoc.ifas.ufl.edu/projects/tegumap/js/tegumap.js
//Telemetered tegus
var tegu_location;
var path = new Object();
var line = new Object();
//For each tegu
for (var j = 0; j < tegu_name.length; j++) {
var tegu_key = telemetry_data[tegu_name[j]];
//For each date
for (var k = 0; k < tegu_key.length; k++) {
path[tegu_name[j]] = new Array();
if (tegu_key[k][0] <= date) {
console.log("use point at date "+tegu_key[k][0]);
tegu_location = new google.maps.LatLng(tegu_key[k][1], tegu_key[k][2]);
path[tegu_name[j]].push(tegu_location);
} else {
marker = new google.maps.Marker({
icon: point_tracked,
shape: point_shape,
map: map,
position: tegu_location
});
marker_container.push(marker);
}
console.log(path[tegu_name[j]]);
}
line[tegu_name[j]] = new google.maps.Polyline({
path: path[tegu_name[j]],
strokeColor: '#32cd32',
strokeOpacity: 0.6,
strokeWeight: 3
});
line[tegu_name[j]].setMap(map);
}
我很少感覺如此幸福的感覺如此愚蠢。我肯定是在錯誤的地方尋找我的問題。我最大的感謝!現在一切似乎都正常。 – petroica
今天我也有這樣的感覺。很高興它爲你工作。 – Steve