Vue + Cesium 缓冲分析实现

14 篇文章 10 订阅
13 篇文章 0 订阅

目录

一、缓冲分析效果图

二、部分关键代码

1、点缓冲分析

2、线缓冲分析

3、面缓冲分析

4、生成缓冲区

三、vue中调用

1、引入缓冲分析对应类

2、点线面的缓冲分析调用方法

四、缓冲分析类源码


一、缓冲分析效果图

二、部分关键代码

1、点缓冲分析

  /**
   * @author: 
   * @Date: 2022-03-15 18:00:49
   * @note: 注意事项
   * @description: 创建点的缓冲区
   */
  createPointBuffer() {
    this.addPoint()
    const coordinate = this.cartesianToLatlng(this.positions[0]).slice(0, 2);
    let pointF = turf.point(coordinate)
    let buffered = turf.buffer(pointF, this.radius)
    let coordinates = buffered.geometry.coordinates;
    let points = coordinates[0]
    let degreesArray = this.pointsToDegreesArray(points);
    this.createBuffer(Cesium.Cartesian3.fromDegreesArray(degreesArray))
  }

2、线缓冲分析

  /**
   * @author:
   * @Date: 2022-03-15 18:00:00
   * @note: 注意事项
   * @description: 创建线缓冲区
   */
  createLineBuffer() {
    var points = this.getLngLats(); // 坐标数组
    var polylineF = turf.lineString(points);
    var bufferd = turf.buffer(polylineF, this.radius);
    var coordinates = bufferd.geometry.coordinates;
    points = coordinates[0]
    var degreesArray = this.pointsToDegreesArray(points)
    this.createBuffer(Cesium.Cartesian3.fromDegreesArray(degreesArray))
  }

3、面缓冲分析

  /**
   * @author: 
   * @Date: 2022-03-15 17:57:41
   * @note: 注意事项
   * @description: 计算多边形缓冲区
   */  
    createPolygonBuffer() {
    var points = this.getLngLats(); // 坐标数组
    points.push(points[0])
    var polygonF = turf.polygon([points]);
    var bufferd = turf.buffer(polygonF, this.radius);
    var coordinates = bufferd.geometry.coordinates;
    points = coordinates[0]
    var degreesArray = this.pointsToDegreesArray(points)
    this.createBuffer(Cesium.Cartesian3.fromDegreesArray(degreesArray))
  }

4、生成缓冲区

  /**
   * @author: 
   * @Date: 2022-03-15 18:01:35
   * @note: 注意事项
   * @description: 生成缓冲区坐标数据
   */
  createBuffer(array) {
    const bufferPolygon = this.viewer.entities.add({
      polygon: {
        hierarchy: new Cesium.PolygonHierarchy(array),
        material: Cesium.Color.RED.withAlpha(0.5),
        classificationType: Cesium.ClassificationType.BOTH
      },
    });
    this.bufferEntities.push(bufferPolygon)
  }

三、vue中调用

1、引入缓冲分析对应类


import bufferAnalysisUtil from '../../../../bufferAnalysisUtil'

2、点线面的缓冲分析调用方法

    /**
     * @author: 
     * @Date: 2022-03-16 14:29:53
     * @note: 注意事项
     * @description: 缓冲分析
     */    
    bufferTool(){
      switch (this.bufferLabel) {
        case 'Point':
          m_bufferAnalysis.active({type:'Point',radius: Number(this.input) / 1000})
          break;
        case 'Line':
          m_bufferAnalysis.active({type:'Line',radius: Number(this.input) / 1000})
          break;
        case 'Polygon':
          m_bufferAnalysis.active({type:'Polygon',radius: Number(this.input) / 1000})
          break;
        case 'clear':
          m_bufferAnalysis.deactive()
          break;
      }
    },

四、缓冲分析类源码

下载:缓冲分析类 bufferAnalysisUtil

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要在Vue实现Cesium的VR功能,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Vue.js和Cesium。你可以使用npm或yarn来安装它们: ```shell # 安装Vue CLI npm install -g @vue/cli # 创建一个新的Vue项目 vue create cesium-vr-app # 进入项目目录 cd cesium-vr-app # 安装Cesium依赖 npm install cesium ``` 2. 现在,在你的Vue项目中,你可以创建一个CesiumVR组件。在src/components目录下创建一个新的文件CesiumVR.vue,然后在其中编写你的CesiumVR代码: ```vue <template> <div id="cesiumContainer" style="width: 100%; height: 100%;"></div> </template> <script> import * as Cesium from 'cesium/Cesium'; export default { mounted() { this.viewer = new Cesium.Viewer('cesiumContainer', { vrButton: true, // 启用VR按钮 vrButtonOptions: { // VR按钮配置选项 defaultVRButton: true, vrButtonElement: document.getElementById('vrButton') } }); }, beforeDestroy() { if (this.viewer && !this.viewer.isDestroyed()) { this.viewer.destroy(); } } }; </script> <style scoped> #cesiumContainer { position: absolute; top: 0; left: 0; } #vrButton { position: fixed; top: 10px; right: 10px; } </style> ``` 3. 接下来,在你的根组件(App.vue)中使用CesiumVR组件。在App.vue中,引入CesiumVR组件并将其添加到模板中: ```vue <template> <div id="app"> <cesium-vr></cesium-vr> </div> </template> <script> import CesiumVR from './components/CesiumVR.vue'; export default { components: { CesiumVR } }; </script> <style> #app { height: 100vh; } </style> ``` 4. 最后,在你的项目中运行以下命令以启动开发服务器: ```shell npm run serve ``` 现在,你应该能够在浏览器中看到一个具有VR功能的Cesium场景。用户可以通过单击VR按钮将应用程序切换到虚拟现实模式,然后使用适当的设备(如头戴式显示器)来浏览和与地球进行交互。请注意,为了在浏览器中使用VR功能,需要先确保你的设备和浏览器支持WebVR或WebXR技术。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

向着太阳往前冲

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

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

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

打赏作者

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

抵扣说明:

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

余额充值