当前位置: 首页 > 知识库问答 >
问题:

javascript - 普通用户绑定了不同的uid,通过模拟器进行不同uid发送websocket,然后管理员用户就可以看见不同uid的车辆在上面跑?

廉子民
2023-09-18

请问大佬们,当不同的普通用户绑定了不同的uid,通过后台模拟器实现发送不同的websocket数据,管理员用户如何实现可以渲染多个车辆模型在cesium地图上面跑?目前我只有一个车辆模型在上面跑动,如果后台发送多个不同的websocket数据的时候,车辆模型渲染就会一闪的一闪的出现车辆模型,求大佬们指教一下,万分谢谢

  // 接收websocket数据  const onMessage = async (event) => {    const data = JSON.parse(event.data);    if (data.data == undefined) {      console.log('未响应');    } else {      if (data.data.state !== undefined) {        return;      } else {        // console.log('=====', data.data);        processPositionParams(data.data);        updateCarModelPosition(positionParams);// 实时更新车辆移动位置        if (!polylineInitialized) {          initializePolyline(positionParams); // 初始化轨迹线          polylineInitialized = true;// 标记轨迹线已初始化        } else {          updatePolylinePosition(positionParams); // 更新轨迹线位置        }      }    }  };// 车辆模型渲染let carModelData = null;function updateCarModelPosition(positions) {  if (positions.length === 0) {    return;  }  const latestPosition = positions[positions.length - 1];  const cartesian3 = Cesium.Cartesian3.fromDegrees(latestPosition.longitude, latestPosition.latitude, 0.4);  if (!carModelData) {    createCarModel(cartesian3, latestPosition.Angle);  } else {    carModelData.position = cartesian3;    const headingPitchRoll = new Cesium.HeadingPitchRoll(      Cesium.Math.toRadians(latestPosition.Angle + 90),      Cesium.Math.toRadians(0),      Cesium.Math.toRadians(0)    );    carModelData.orientation = Cesium.Transforms.headingPitchRollQuaternion(cartesian3, headingPitchRoll);  }}function createCarModel(cartesian3, angle) {  const headingPitchRoll = new Cesium.HeadingPitchRoll(    Cesium.Math.toRadians(angle + 90),    Cesium.Math.toRadians(0),    Cesium.Math.toRadians(0)  );  const scaleByDistance = new Cesium.NearFarScalar(200, 120, 1200, 0.6);  const distanceDisplayCondition = new Cesium.DistanceDisplayCondition(0, 10000);  carModelData = viewer.entities.add({    position: cartesian3,    orientation: Cesium.Transforms.headingPitchRollQuaternion(cartesian3, headingPitchRoll),    model: {      uri: "http://127.0.0.1:5501/car/scene.gltf",      scale: 75,      scaleByDistance,      distanceDisplayCondition,    },    id: 'carModel' // 添加id属性  });}

共有1个答案

墨阳羽
2023-09-18

用对象来存全部车辆模型,这样的话你可以根据每个WebSocket消息里的UID来跟踪和更新每个车辆模型。还有就是更新updateCarModelPosition和createCarModel函数

 类似资料:
  • 我想建立一个Android应用程序,允许用户发送通知和数据消息给其他用户。我最近才开始使用Firebase,而Firebase云消息传递对我来说仍然很困惑。 我已经实现了使用Firebase实例ID将消息发送到特定的设备。然而,在我的应用程序中,用户可以使用不同的设备注销和登录他们的账户,所以这不是我真正想要的。我阅读了文档,它非常令人困惑,它们提到了向用户组发送消息和主题(只有应用程序可以订阅,

  • 问题内容: 实际的UID,有效的UID,以及某些系统甚至具有“已保存的UID”。所有这些的目的是什么,尤其是最后一个? 问题答案: 每个UNIX进程都有3个与之关联的UID。超级用户特权是UID = 0。 真实的UID 这是创建此流程的用户/流程的UID。仅当正在运行的进程的EUID = 0时才可以更改。 有效的UID 此UID用于评估执行特定操作的进程的特权。如果EUID!= 0,则可以将EUI

  • 问题内容: 我正在为我的Firebase应用程序构建一个管理面板,希望可以更轻松地管理用户。我希望能够通过电子邮件查找用户,然后在必要时将其删除。我了解,如果注册了用户以及他们向其注册了哪个提供程序,则fetchSignInMethods将返回一个值,但是仍然可以查询Authentication树(而非数据库树)以通过电子邮件搜索用户吗?能够从Authentication节点获取与电子邮件相关联的

  • 问题内容: 我正在尝试从Jenkins管道中的Docker容器内部执行SSH命令。我正在使用CloudBees Docker管道插件 来旋转容器并执行命令,并使用SSH代理插件来管理我的SSH密钥。这是我的Jenkinsfile的基本版本: SSH命令运行时,出现以下错误: 问题答案: 我仔细查看了日志,发现Docker Pipeline插件通过将UID作为命令行参数传递来自动告诉容器与主机上登录

  • id 命令 可以查询用户的UID、GID 和附加组的信息。命令比较简单,格式如下: [root@localhost ~]# id 用户名 【例 1】 [root@localhost ~]# id lamp uid=501(lamp) gid=501(lamp) groups=501(lamp) #能看到uid(用户ID)、gid(初始组ID), groups是用户所在组,这里既可以看到初始组,如果

  • 我有一个PHP文件,点击提交按钮,另一个PHP脚本正在执行。在第二个PHP脚本中,正在执行一个外壳脚本,其中正在与另一台服务器进行SSH连接。 我遇到的问题是,到另一台服务器的SSH连接只能由特定用户完成。但是,PHP脚本是由www数据执行的,因此我无法将用户更改为需要ssh连接的用户,因为每次都需要密码。 我还尝试从第一个PHP文件执行shell脚本,但仍然没有成功。 我的操作系统是UBUNTU