2014-02-03 3 views
0

У меня есть эта функция. Ввод функции - это данные, полученные из json-файла. У меня есть карта с именем arrowMap, которая затем устанавливается на arrowsMap, которая, в свою очередь, устанавливается в arrowsDataMap. Проблема заключается в том, что данные перезаписываются в arrowsDataMap по старым ключам. Поэтому, когда я делаю это arrowsDataMap.get («0»). Get (0) .get (1)), я получаю данные, которые были в (arrowsDataMap.get («1»). Get (0) .get (1)) и те же данные в этом месте. Поэтому данные по существу перезаписываются. Любая помощь приветствуется.Javascript: неверные данные устанавливаются на карту

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

Где arrowsMap created? У меня такое чувство, что нужно воссоздавать для каждого члена 'data.points'. Итак, в первом цикле, перед запуском второго цикла, поместите 'var arrowsMap = new Map();' или что-то подобное. – forgivenson

+0

Я создал его вне функции с помощью стрелокDataMap. Я попробовал решение, которое вы предложили, и это сработало! Большое вам спасибо @forgivenson – user3267015

+0

Добро пожаловать! Я сказал это как ответ, чтобы вы могли отметить этот вопрос, как ответили. – forgivenson

ответ

0

У меня есть ощущение, что вы должны recreat arrowsMap для каждого члена data.points. Итак, в первом цикле, перед началом второго цикла, поставьте var arrowsMap = new Map();.

Поскольку вы не создавали новую Map для каждой стрелки, данные из предыдущей стрелки, которые были сохранены, были перезаписаны следующей стрелкой.

Смежные вопросы