推入2d阵列后无法访问对象元素?

时间:2014-10-17 21:07:32

标签: javascript arrays json google-maps

来自Ajax调用的这个Json数据

{
    "VehicleID": 1,
    "Tracks": [{
        "TrackID": 1,
        "trackPoints": [{
            "lat": 36.25514030456543,
            "lng": 33.501180542295344
        }, {
            "lat": 36.255140304562,
            "lng": 33.5011805422952
        }, {
            "lat": 36.255140304561,
            "lng": 33.5011805422951
        }]
    }, {
        "TrackID": 1,
        "trackPoints": [{
            "lat": 31.25514030456543,
            "lng": 31.501180542295344
        }, {
            "lat": 31.255140304562,
            "lng": 31.5011805422952
        }, {
            "lat": 31.255140304561,
            "lng": 31.5011805422951
        }]
    }]
}

使用谷歌地图 两个for循环用于迭代每个轨道中的轨道和点, 我将我做的大部分内容打印到控制台

for (var i = 0; i < numtracks; i++) {
     var numPoints = result.Tracks[i].trackPoints.length;
     arr[i] = new Array(numPoints); //creating 2d array for points
     console.log("*********Array number " + i + " Got created" + "and its lenght is " + arr[i].length + "   *******************");
     console.log("Lenght of track #" + i + " Points => " + numPoints);
     console.log("array lenghth for Points track #" + i + " => " + arr[i].length);

获取积分的第二个循环

for (var j = 0; j < result.Tracks[i].trackPoints.length; j++) {
    var x = result.Tracks[i].trackPoints[j].lat;
    var y = result.Tracks[i].trackPoints[j].lng;
    console.log("x= " + x + " for #" + j + "  Point");
    console.log("y= " + y + "  for #" + j + "  Point");

我正在将数据传递到google maps API

var p = new google.maps.LatLng(x, y);
console.log("p befor push lat for the " + p.lat());
console.log("p befor push lng for the " + p.lng());

将数据推入arr [i]。

arr[i].push(p);
//when acessing arr[i][j].lat();is not recgnising it
console.log("track #" + i + " , point #" + j + "pushed into array x= " + arr[i][j].lat() + " ,y=" + arr[i][j]);

这是控制台的输出

array lenghth for tracks => 2 trackss:96
Tracks lenght : 2 trackss:97
*********Array number 0 Got createdand its lenght is 3   ******************* trackss:110
Lenght of track #0 Points => 3 trackss:111
array lenghth for Points track #0 => 3 trackss:112
x= 36.25514030456543 for #0  Point trackss:116
y= 33.501180542295344  for #0  Point trackss:117
p befor push lat for the 36.25514030456543 trackss:119
p befor push lng for the 33.50118054229529 trackss:120
Uncaught TypeError: Cannot read property 'lat' of undefined 

1 个答案:

答案 0 :(得分:1)

尝试初始化arr,如下所示:

arr[i] = [];

然后像这样添加p对象:

arr[i][j] = p;