当前位置: 首页 > news >正文

Cesium绘制可编辑线

Cesium

第一章 绘制可编辑线

Screen-2024-09-17-202059的副本


文章目录

  • Cesium
  • 一、绘制线
  • 二、编辑线
  • 三、使用


一、绘制线

1、方法

  //场景相机控制viewer.scene.screenSpaceCameraController.enableRotate = false; //cesium相机控制 绘制和编辑时 禁止转动场景// 鼠标样式修改viewer._container.style.cursor = "crosshair"; //修改鼠标样式 ,精确选择鼠标样式//事件监听handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); //处理用户输入事件左键单击 开始绘制 双击绘制结束   1、点击事件handler.setInputAction((e) => {}, Cesium.ScreenSpaceEventType.LEFT_CLICK);2、鼠标移动handler.setInputAction((e) => {}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);3、鼠标双击handler.setInputAction((e) => {}, Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);

2、实现

    /* CallbackProperty 动态更新属性 * 可以实时地改变实体的状态而不需要频繁地重新设置整个属性*/viewer.entities.add({id: generateUUID(),polyline: {positions: new Cesium.CallbackProperty((e) => {return  tempPositions;}, false),...style, // style 为 线的样式},});

二、编辑线

线 是由两个以上点构成的,一条线绘制完成后 可以获取到 线上的 点。通过修改点的位置从而达到更新线的目的

1、找到点的位置 index
2、移动点修改位置// 编辑 点 实体的坐标
const editPoint = this.viewer.entities.getById(target.id.id);
const position = this.editPoint?.position.getValue();// selectEntity 为 选中的polyline实体
const polylinePostions = selectEntity._polyline.positions.getValue() // polyline 线上的点坐标//监听到鼠标移动后 将新的 坐标位置 赋值给 线上index的点 可实现编辑效果polylinePostions[index] = cartesian;selectEntity.polyline.positions = new Cesium.CallbackProperty((e) => {return polylinePostions;},false);

三、使用

const polyline = new Polyline(viewer)const startDraw = () => {polyline.startDraw({ hasEdit: true ,// 是否编辑 默认为falsestyle:{} // 线的样式,详细可以参考cesium的api)
}

提示:完整实现方式 99元 付费获取(实现不易,感谢支持)私信联系 看到回

http://www.lryc.cn/news/440155.html

相关文章:

  • 【算法】差分思想:强大的算法技巧
  • 微软开源项目 Detours 详细介绍与使用实例分享
  • Numba基础
  • [JAVA]介绍怎样在Java中通过字节字符流实现文件读取与写入
  • oracle停止当前运行的JOB或kill会话
  • SpringBoot 消息队列RabbitMQ 消息可靠性 数据持久化 与 LazyQueue
  • CLIP论文中关键信息记录
  • sshj使用代理连接服务器
  • 【Leetcode:1184. 公交站间的距离 + 模拟】
  • VRRP 笔记
  • 【洛谷】P3743 小鸟的设备 的题解
  • 算法面经手撕系列(2)--手撕BatchNormlization
  • mysql-搭建主从复制
  • MiniMaxi-共创智能新体验新手入门
  • Docker torchserve 部署模型流程
  • mybatis开启日志
  • MobaXterm : Network error: Connection refused(连接被拒绝)
  • 电脑的主板,内存条插多少合适?
  • C++:初始化列表
  • [000-01-008].第05节:OpenFeign特性-重试机制
  • Android 11(API 级别 30)及以上版本中,将Bitmap保存到设备上
  • django orm增删改查操作
  • 禁忌搜索算法(TS算法)求解实例---旅行商问题 (TSP)
  • Rust 所有权 简介
  • linux-网络管理-防火墙配置
  • 【springboot】实现文件上传和下载
  • 【RabbitMQ】RabbitMQ如何保证数据的可靠性,RabbitMQ如何保证数据不丢失,数据存储
  • Redis 篇-初步了解 Redis 持久化、Redis 主从集群、Redis 哨兵集群、Redis 分片集群
  • 算法基础-二分查找
  • LeetCode:1184. 公交站间的距离 一次遍历数组,复杂度O(n)