我有这个功能。该函数的输入是从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"
}
]
}
]
}
答案 0 :(得分:0)
我觉得你应该为arrowsMap
的每个成员重新审视data.points
。因此,在第一个循环内部,在第二个循环开始之前,放置var arrowsMap = new Map();
。
由于您没有为每个箭头创建新的Map
,因此保存的上一个箭头中的数据被下一个箭头覆盖。