cesium在vue中进行架构设计与实现

13 篇文章 5 订阅

一、代码架构

二、图层配置

说明cesium中entity没有图层的概念,本架构通过自定义entity类型分组实现图层分层

entityType的类型:b3dm(倾斜摄影)、billboard(图标)、point(点)、rectangle(矩形区域可以加载图片)、ArcGisMapServerImagery(arcgis服务切片)、UrlTemplateImagery(xyz的地图切片)等

三、符号配置

1、图层符号

2、标注符号

四、渲染设置

1、图层渲染分为简单符号、分级、唯一值三种方式

2、标注符号设置

渲染方式同上

五、图层事件配置

为entity配置事件

1、点击事件

2、鼠标移动事件

六、视角初始配置

七、运行效果展示

 

 如果对您有帮忙,非常感谢您支持一下创造者的付出!

 感谢支持技术分享, 请扫码点赞支持:

技术合作交流qq:2401315930

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用 Cesium 的 `BillboardCollection` 类来实现Vue 框架点击创建 billboard 的功能。 首先,在 Vue 组件的 data 定义一个变量来存储 billboard 集合: ``` data() { return { billboardCollection: new Cesium.BillboardCollection() } } ``` 然后,在组件的 mounted 钩子函数,将 billboard 集合添加到场景: ``` mounted() { this.viewer.scene.primitives.add(this.billboardCollection); } ``` 接着,在组件的 template 绑定点击事件,在事件处理函数添加新的 billboard: ``` <template> <div @click="addBillboard">Click to add a billboard</div> </template> <script> export default { methods: { addBillboard() { // 获取鼠标点击的位置 let pickedObject = this.viewer.scene.pick(this.viewer.camera.getPickRay(this.viewer.canvas.clientWidth / 2, this.viewer.canvas.clientHeight / 2)); if (Cesium.defined(pickedObject)) { let position = this.viewer.scene.globe.ellipsoid.cartesianToCartographic(pickedObject.position); // 创建新的 billboard let billboard = this.billboardCollection.add({ position: Cesium.Cartesian3.fromRadians(position.longitude, position.latitude, position.height + 100), image: 'path/to/image.png' }); } } } } </script> ``` 在这个例子,我们使用了 Cesium 的 `pick` 方法来获取鼠标点击的位置,然后使用 `Cartesian3.fromRadians` 将经纬度坐标转换为笛卡尔坐标,最后使用 `BillboardCollection.add` 方法添加新的 billboard。 希望这些信息能帮助您实现Vue 框架使用 Cesium 创建 billboard 的功能。 ### 回答2: 在Vue框架实现点击创建billboard功能,可以按照以下步骤进行: 1. 首先,在Vue项目引入Cesium库,可以通过npm安装或直接引入Cesium.js文件。 2. 在Vue组件,可以在`mounted`钩子函数创建Cesium的Viewer对象,并将其初始化为指定DOM元素的父元素,如: ``` mounted() { this.viewer = new Cesium.Viewer(this.$refs.mapContainer); } ``` 其`$refs.mapContainer`是在模板定义的一个ref,用于获取地图容器的DOM元素。 3. 在模板定义一个按钮,并绑定一个点击事件,如: ```vue <template> <div> <button @click="createBillboard">创建Billboard</button> <div class="map-container" ref="mapContainer"></div> </div> </template> ``` 4. 在Vue组件的methods选项定义`createBillboard`方法,用于创建billboard。在该方法,可以使用Cesium的`Cesium.Cartesian3`类创建一个位置,然后通过`Cesium.BillboardCollection`类创建一个billboard,并设置其属性,最后将billboard添加到scene。代码示例如下: ```vue methods: { createBillboard() { // 创建位置 var position = Cesium.Cartesian3.fromDegrees(103, 30); // 创建BillboardCollection并设置属性 var billboard = this.viewer.scene.primitives.add( new Cesium.BillboardCollection() ); billboard.add({ position: position, image: "path/to/billboard-image.png", scale: 1.0, }); }, } ``` 其,`Cesium.Cartesian3.fromDegrees`根据经纬度创建一个位置,`Cesium.BillboardCollection`用于存储和渲染多个billboard,`image`属性指定billboard的图片路径,`scale`属性用于设置billboard的大小。 5. 最后,通过点击按钮,调用`createBillboard`方法即可在地图上创建一个billboard。 这样,就在Vue框架实现了点击创建billboard功能。 ### 回答3: 在Vue框架实现点击创建Billboard功能,可以按照以下步骤实现: 1. 首先,将Cesium集成到Vue项目。可以通过npm安装Cesium,然后在Vue组件引入Cesium相关的库文件。 2. 在Vue组件的data选项添加一个数组billboards,用于存储所有的Billboard对象信息。在初始状态下,该数组为空。 3. 在Vue组件的template添加一个Cesium的Canvas元素,用于渲染Cesium场景。可以将该Canvas元素的id设为"cesiumContainer"。 4. 在Vue组件的methods选项添加一个方法handleClick,用于处理点击事件。在该方法内,获取点击事件的坐标,在3D场景添加一个Billboard对象,并将其位置设为点击坐标。然后,将该Billboard对象的信息添加到billboards数组保存。 5. 在Vue组件的mounted钩子函数,通过Cesium的Viewer对象初始化3D场景,并将Canvas元素绑定到该Viewer对象上。同时,监听Canvas元素的点击事件,当点击事件发生时,调用handleClick方法。 6. 在Vue组件的template,使用v-for指令循环遍历billboards数组,并根据每个Billboard对象的信息,在Canvas显示对应的Billboard元素。 通过以上步骤,就可以在Vue框架实现点击创建Billboard功能。当用户在Canvas点击时,会在点击位置创建一个Billboard,并在屏幕上显示出来。同时,Billboard对象的信息也会保存在billboards数组,以便后续的操作和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴诚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值