cesium自定义标签2

1,540 阅读3分钟

在三维地理信息系统(GIS)领域,Cesium 是一个广泛使用的开源JavaScript库,它为用户提供了在Web浏览器中展示3D地球以及丰富的地理空间数据的能力。为了增强Cesium的应用灵活性,我写了一个DivBillboard的类,这是第二版,第一版看这里 cesium自定义标签,第一版只是简单的标签,没有什么拓展性,样式也没什么,平平无奇。但是在这次第二版里面可以直接嵌入任意的vue组件了,大大提高了标签的美观度和可拓展性。 总的来说,支持任意vue组件或HTML作为标签,可以设置是否支持鼠标事件,随地图转换位置,在地球背面时会隐藏标签,能设置相机可视高度等。 废话不多说,以下是DivBillboard类的功能亮点及使用指南。源码在文末。

image.png

功能概览

DivBillboard类主要实现了以下核心功能:

  1. 自定义内容展示:通过传入HTML字符串或利用Vue组件,开发者能自由定制每个标记的外观和交互内容,比如图像、文本、甚至是复杂的Web组件。
  2. 地理定位:标记可以精确绑定到地球表面的任意坐标(通过Cartesian3表示),实现与地理空间数据的紧密结合。
  3. 动态渲染与更新:自动跟随地图视角的变化实时调整标记位置,确保始终面向用户,并且支持内容的动态更新,以响应数据变化或用户交互。
  4. 性能优化:根据相机距离智能控制标记的显隐,以提高远距离下的渲染性能。
  5. 鼠标交互控制:通过配置项启用或禁用标记上的鼠标事件,便于开发交互式应用。

使用方法

创建标记实例

首先,你需要一个初始化的Cesium Viewer实例,以及想要显示的内容(HTML字符串或Vue组件)。以下是一个基本示例:

image.png

import DivBillboard from './DivBillboard.vue'; // 引入定义好的DivBillboard类
const viewer = new Viewer('cesiumContainer'); // 初始化Cesium Viewer
const position = Cesium.Cartesian3.fromDegrees(longitude, latitude, altitude);
const divBillboard = new DivBillboard(viewer, position, '<h1>Hello, World!</h1>', MyVueComponent);

动态更新内容

如果需要在运行时更改标记的内容,可以调用setContent方法:

divBillboard.setContent('<h2>New Content Here</h2>');

销毁标记

当不再需要某个标记时,可以通过调用destroy方法进行资源清理:

divBillboard.destroy();

应用场景

  • 信息提示窗口:为地图上的特定点位添加详细的图文信息说明。
  • 实时数据展示:在工业监控、气象系统中展示实时更新的数据指标。
  • 交互式导览:结合自定义Vue组件,开发互动性强的导览或游戏应用。
  • 个性化标注:为用户提供在地图上标记兴趣点的能力,提升用户参与度。

总之,DivBillboard类是Cesium开发中增强内容丰富性与交互性的强大工具,通过灵活运用可以极大提升GIS应用的用户体验和功能多样性。

源码

完整源码和使用案例 请看这里,这三个div标签组件的代码也在里面。里面还有其他一些我写案例东西,可以的话请给个star