1. у меня линия задается как слой :
store.state.map.addSource('trace', {type: 'geojson', data: data});
store.state.map.addLayer({
'id': 'trace',
'type': 'line',
'source': 'trace',
'paint': {
'line-color': 'red',
'line-opacity': 0.75,
'line-width': 7
}
});
2. потом начинает рисоваться будучи красной, на 300 точке я меняю на зеленый, но меняется вся линия полностью, а надо чтобы менялась только та часть что идет с 300ой точки :
( store.state.map.setPaintProperty('trace', 'line-color’, ‘green’);
Код:
let i = 0;
this.timer = window.setInterval(() => {
if (i < coordinates.length) {
if (i < 300) {
data.features[0].geometry.coordinates.push(
coordinates[i]
);
store.state.map.getSource('trace').setData(data);
store.state.map.panTo(coordinates[i]);
i++;
store.state.map.flyTo({'center': coordinates[i], 'zoom': 10, 'speed': 0.15});
}
} else if (i >= 300 && i <= 400) {
data.features[0].geometry.coordinates.push(
coordinates[i]
);
store.state.map.setPaintProperty('trace', 'line-color’, ‘green’);
store.state.map.getSource('trace').setData(data);
store.state.map.panTo(coordinates[i]);
store.state.map.flyTo({'center': coordinates[i], 'zoom': 5, 'speed': 0.7});
i++;
} else if (i > 400) {
data.features[0].geometry.coordinates.push(
coordinates[i]
);
store.state.map.setPaintProperty('trace', 'line-color’, ‘red’);
store.state.map.getSource('trace').setData(data);
store.state.map.panTo(coordinates[i]);
store.state.map.flyTo({'center': coordinates[i], 'zoom': 12, 'speed': 0.5});
i++;
}
} else {
window.clearInterval(this.timer);
}
}, 75);