I’m trying to list out a set of values, that only show the new updated values in an array, but unfortunately it is only printing out the last value in the array. How do I show all the values and not only the last one?
When I console.log out the longLat[itemIndex] this is what I see. They should be in the same array
Collapsed:
Expanded:
My code –
let longLat = []
for (let index of this.overwatchTargets) {
let coordsArr = [index["longitude"], index["latitude"], index["userName"], index["dateTimeCaptured"]]
longLat.push(coordsArr)
for (let itemIndex in longLat) {
// Update location coords
this.map.getSource('data-source').setData({
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"properties": {
'description': "Dispatcher: " + longLat[itemIndex][2] + "\n" + "\Lng/Lat\:" + longLat[itemIndex][0] + " / " + longLat[itemIndex][1] + "\n" + "\StartTime\: " + longLat[itemIndex][3]
},
"geometry": {
"type": "Point",
"coordinates": longLat[itemIndex] <--- This should show all elements in the array, but only shows the last one
}
}]
});
}
}
>Solution :
You are passing a single-element array several times instead of passing a single collection of coordinates.
Try creating a method of
indexToFeature(index) {
const {longitude, latitude, userName, dateTimeCaptured} = index;
return {
"type": "Feature",
"properties": {
'description': "Dispatcher: " + userName + "\n" + "\Lng/Lat\:" + longitude + " / " + latitude + "\n" + "\StartTime\: " + dateTimeCaptured
},
"geometry": {
"type": "Point",
"coordinates": [longitude, latitude, userName, dateTimeCaptured]
}
};
}
Then your main body can simply be
this.map.getSource('data-source').setData({
"type": "FeatureCollection",
"features": this.overwatchTargets.map(indexToFeature)
});
to call setData once, converting the entire array of overwatchTargets into an array of features.

