请教一下大佬们,我这么写会出现不同uid的数据,轨迹线会出现连接,要求的是不同的uid的连接是单独的。求大佬们帮忙解答一下~谢谢!
const onMessage = async (event) => {
const data = JSON.parse(event.data);
if (data.data == undefined || data.data.state !== undefined) {
console.log('未响应');
return;
} else {
const uid = data.data.uid; //
if (!polylineEntities[uid]) {
initializePolyline(uid, positionParams); // 初始化轨迹线
} else {
updatePolylinePosition(uid, positionParams); // 更新轨迹线位置
}
}
};
// 初始化创建新的轨迹线
let polylineEntities = {};
function initializePolyline(uid, positions) {
polylineEntities[uid] = viewer.entities.add({
polyline: {
positions: new Cesium.CallbackProperty(() => {
return Cesium.Cartesian3.fromDegreesArray(positions.flatMap(pos => [pos.longitude, pos.latitude]));
}, false),
width: 5,
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 500), //设置可见距离 1000米可见
scaleByDistance: new Cesium.NearFarScalar(100, 100, 500, 100), //设置随图缩放距离和比例
material: Cesium.Color.RED,
},
});
}
// 更新轨迹线位置
function updatePolylinePosition(uid, positions) {
const polylineEntity = polylineEntities[uid];
if (polylineEntity) {
polylineEntity.polyline.positions = new Cesium.CallbackProperty(() => {
return Cesium.Cartesian3.fromDegreesArray(positions.flatMap(pos => [pos.longitude, pos.latitude]));
}, false);
polylineEntity.polyline.show = checkedLines.value;
}
}