Javascript:错误的数据被设置为地图

时间:2014-02-03 18:57:21

标签: javascript json

我有这个功能。该函数的输入是从json文件获得的数据。我有一个名为arrowMap的地图,然后设置为arrowsMap,而arrowMap又设置为arrowsDataMap。问题是面对的是在旧密钥的arrowsDataMap中覆盖数据。所以当我这样做时,arrowDataMap.get(“0”)。get(0).get(1)),我得到的数据是(arrowsDataMap.get(“1”)。get(0).get(1 ))和该位置的相同数据。所以数据基本上被覆盖了。任何帮助表示赞赏。

function animateLines(data) {
pointLength = data.points.length;
arrowLength = data.points["0"].point.length;

var viewEntryKey=0;
for (var viewEntryKey in data.points) {
    for (var i = 0; i < data.points[viewEntryKey].point.length; i++) {
        var arrowMap = new Map();

        arrowMap.set(1,data.points[viewEntryKey].point[i].latLng);
        arrowMap.set(2,data.points[viewEntryKey].point[i].size);
        arrowMap.set(3,data.points[viewEntryKey].point[i].angle);

        arrowsMap.set(i,arrowMap);
            //alert(arrowsMap.get(0).get(1));

}

arrowsDataMap.set(viewEntryKey,arrowsMap);
}



json file:

{
  "points": [
  {
    "point": [
      {
        "latLng": [-88.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "0.79"
      },
      {
        "latLng": [-88.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "0.69"
      }
      ,
      {
        "latLng": [-88.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "0.49"
      }
      ,
      {
        "latLng": [-88.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "0.29"
      }
      ,
      {
        "latLng": [-88.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "0.09"
      }
      ,
      {
        "latLng": [-88.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "-0.09"
      }
      ,
      {
        "latLng": [-88.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "-0.29"
      }
      ,
      {
        "latLng": [-88.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "-0.49"
      }
      ,
      {
        "latLng": [-88.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "-0.69"
      }
    ]
  },
  {
    "point": [
      {
        "latLng": [-89.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "0.79"
      },
      {
        "latLng": [-89.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "0.69"
      }
      ,
      {
        "latLng": [-89.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "0.49"
      }
      ,
      {
        "latLng": [-89.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "0.29"
      }
      ,
      {
        "latLng": [-89.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "0.09"
      }
      ,
      {
        "latLng": [-89.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "-0.09"
      }
      ,
      {
        "latLng": [-89.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "-0.29"
      }
      ,
      {
        "latLng": [-89.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "-0.49"
      }
      ,
      {
        "latLng": [-89.9999988477954, 29.999999681521295],
        "size": "0.15",
        "angle": "-0.69"
      }
    ]
  }
  ]
}

1 个答案:

答案 0 :(得分:0)

我觉得你应该为arrowsMap的每个成员重新审视data.points。因此,在第一个循环内部,在第二个循环开始之前,放置var arrowsMap = new Map();

由于您没有为每个箭头创建新的Map,因此保存的上一个箭头中的数据被下一个箭头覆盖。