Я использую слой точек, представленный в глобусе gl библиотека. Но я не могу обновить данные после установки Globe().pointsData.
В следующем примере я создал экземпляр Globe, а затем написал тестовый скрипт, который вызывается через 2 секунды. Но по прошествии 2 секунд на глобусе ничего не обновляется, хотя точки данных были обновлены.
const N = 1;
var gData = [...Array(N).keys()].map(() => ({
lat: 5,
lng: 10,
size: 0.5,
color: 'red'
}));
var world = Globe()
.globeImageUrl('//unpkg.com/three-globe/example/img/earth-night.jpg')
.pointsData(gData)
.pointAltitude('size')
.pointColor('color')
(document.getElementById('globeViz'))
function resolveAfter2Seconds() {
return new Promise(resolve => {
setTimeout(() => {
resolve('resolved')
}, 2000);
});
}
async function asyncCall() {
console.info('calling');
const result = await resolveAfter2Seconds();
// Updating the data here
gData[0].size = 1
gData[0].lat = 30
// Setting the updated points
world.pointsData = gData
console.info(world.pointsData)
}
asyncCall();
Я не уверен, должен ли я вызвать что-то, что вызовет обновление, которое отразится на самом глобусе. Это не очевидно из апис.
Реализация Codepen — здесь.





Глядя на их API уровня точек, похоже вместо pointsData = gData нужно использовать pointsData(gData)
async function asyncCall() {
console.info('calling');
const result = await resolveAfter2Seconds();
gData[0].size = 1
gData[0].lat = 30
gData[0].color = 'green'
world.pointsData(gData)
}