iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >基于Cesium如何绘制栅栏
  • 875
分享到

基于Cesium如何绘制栅栏

2023-06-30 19:06:27 875人浏览 八月长安
摘要

这篇文章主要介绍“基于Cesium如何绘制栅栏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于Cesium如何绘制栅栏”文章能帮助大家解决问题。最终效果创建 dynamicWallMaterial

这篇文章主要介绍“基于Cesium如何绘制栅栏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于Cesium如何绘制栅栏”文章能帮助大家解决问题。

最终效果

基于Cesium如何绘制栅栏

创建 dynamicWallMaterialProperty.js 文件

首先需要一个 dynamicWallMaterialProperty.js 文件,然后在cesium引入一下子。

dynamicWallMaterialProperty.js 文件内容就是下面这个,理论上直接复制过去就可以了。

(function () {    function DynamicWallMaterialProperty(options) {    this._definitionChanged = new Cesium.Event();    this._color = undefined;    this._colorSubscription = undefined;    this.color = options.color || Color.BLUE;    this.duration = options.duration || 1000;    this.trailImage = options.trailImage;    this._time = (new Date()).getTime();  }    function _getDirectionWallShader(options) {    if (options && options.get) {      var materail = "czm_material czm_getMaterial(czm_materialInput materialInput)\n\      {\n\          czm_material material = czm_getDefaultMaterial(materialInput);\n\          vec2 st = materialInput.st;";      if (options.freely == "vertical") { //(由下到上)        materail += "vec4 colorImage = texture2D(image, vec2(fract(st.s), fract(float(" + options.count + ")*st.t" + options.direction + " time)));\n\ ";      } else { //(逆时针)        materail += "vec4 colorImage = texture2D(image, vec2(fract(float(" + options.count + ")*st.s " + options.direction + " time), fract(st.t)));\n\ ";      }      //泛光      materail += "vec4 fraGColor;\n\          fragColor.rgb = (colorImage.rgb+color.rgb) / 1.0;\n\          fragColor = czm_gamMacorrect(fragColor);\n\          material.diffuse = colorImage.rgb;\n\          material.alpha = colorImage.a;\n\          material.emission = fragColor.rgb;\n\          return material;\n\      }";      return materail    }  }  Object.defineProperties(DynamicWallMaterialProperty.prototype, {    isConstant: {      get: function () {        return false;      }    },    definitionChanged: {      get: function () {        return this._definitionChanged;      }    },    color: Cesium.createPropertyDescriptor('color')  });  var MaterialType = 'wallType' + parseInt(Math.random() * 1000);  DynamicWallMaterialProperty.prototype.getType = function (time) {    return MaterialType;  };  DynamicWallMaterialProperty.prototype.getValue = function (time, result) {    if (!Cesium.defined(result)) {      result = {};    }    result.color = Cesium.Property.getValueOrClonedDefault(this._color, time, Cesium.Color.WHITE, result.color);    result.image = this.trailImage;    if (this.duration) {      result.time = (((new Date()).getTime() - this._time) % this.duration) / this.duration;    }    viewer.scene.requestRender();    return result;  };  DynamicWallMaterialProperty.prototype.equals = function (other) {    return this === other ||      (other instanceof DynamicWallMaterialProperty        && Cesium.Property.equals(this._color, other._color))  };  Cesium.Material._materialCache.addMaterial(MaterialType, {    fabric: {      type: MaterialType,      unifORMs: {        color: new Cesium.Color(1.0, 0.0, 0.0, 0.5),        image: Cesium.Material.DefaultImageId,        time: -20      },      source: _getDirectionWallShader({        get: true,        count: 3.0,        freely: 'vertical',        direction: '-'      })    },    translucent: function (material) {      return true;    }  });  Cesium.DynamicWallMaterialProperty = DynamicWallMaterialProperty;})();

上边代码呢,就是 dynamicWallMaterialProperty.js 文件的全部内容,然后嘞,在文件引入一下。

  <script type="text/javascript" src="./dynamicWallMaterialProperty.js"></script>

然后嘞,就可以编写逻辑代码了呀!

function dataProces() {    let data = [      [        116.398322, 39.929032      ],      [        116.408096, 39.929364      ],      [        116.408599, 39.919736      ],      [        116.398609, 39.919404      ], [        116.398322, 39.929032      ],    ]    let coor = Array.prototype.concat.apply(      [],      data    );    let datasouce = map_common_aDDDatasouce('wall');    datasouce.entities.add({      wall: {        positions: Cesium.Cartesian3.fromDegreesArray(coor),        positions: Cesium.Cartesian3.fromDegreesArray(coor),        maximumHeights: new Array(data.length).fill(300),        minimunHeights: new Array(data.length).fill(0),        material: new Cesium.ImageMaterialProperty({          transparent: true,//设置透明          image: "./img/wjw.png",          repeat: new Cesium.Cartesian2(1.0, 1),          // color: Cesium.Color.RED,        }),        // material: new Cesium.DynamicWallMaterialProperty({ trailImage: './img/wjw.png', color: Cesium.Color.RED, duration: 1000 })      },    });  }

然后调用上面的方法就可以了!!

但是上面代码使用了一个方法,就是 map_common_addDatasouce ,网上很多案例都使用了这个方法,但是呢,这个方法又不说是啥,然后我在调用的时候直接就是找不到了,但是好在找到了这个方法。

  function map_common_addDatasouce(datasouceName) {    let datasouce = viewer.dataSources._dataSources.find(t => {      return t && t.name == datasouceName;    });    if (!datasouce) {      datasouce = new Cesium.CustomDataSource(datasouceName);      viewer.dataSources.add(datasouce);    }    return datasouce;  }

关于“基于Cesium如何绘制栅栏”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: 基于Cesium如何绘制栅栏

本文链接: https://www.lsjlt.com/news/331225.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于Cesium如何绘制栅栏
    这篇文章主要介绍“基于Cesium如何绘制栅栏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于Cesium如何绘制栅栏”文章能帮助大家解决问题。最终效果创建 dynamicWallMaterial...
    99+
    2023-06-30
  • 基于Cesium绘制栅栏的示例代码
    目录最终效果创建 dynamicWallMaterialProperty.js 文件网上的资料要不收费,要不代码不全,很多跟绘制墙体有关的案例要不缺放法要不干嘛的,我自己根据网上的方...
    99+
    2024-04-02
  • 如何使用matplotlib绘制栅格数据
    要使用matplotlib绘制栅格数据,可以按照以下步骤进行操作:1. 导入matplotlib库和numpy库:```python...
    99+
    2023-09-20
    matplotlib
  • 基于RecyclerChart的KLine如何绘制Scale
    这篇文章主要介绍“基于RecyclerChart的KLine如何绘制Scale”,在日常操作中,相信很多人在基于RecyclerChart的KLine如何绘制Scale问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-07-05
  • 基于Python如何绘制世界地图
    本篇内容介绍了“基于Python如何绘制世界地图”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.准备开始之前,你要确保Python和pip...
    99+
    2023-07-04
  • 基于Cesium实现绘制圆形,正方形,多边形,椭圆图形标注
    目录官方案例绘制矩形绘制多边形绘制椭圆绘制圆形绘制立方体绘制椭圆柱体绘制多边柱体绘制圆柱体立体串串好难形容 又平面又立体的板板“回”字绘制立方体,扭转一定角度...
    99+
    2024-04-02
  • 基于Cesium如何实现加载显示热力图
    这篇“基于Cesium如何实现加载显示热力图”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“基于Cesium如何实现加载显示热...
    99+
    2023-07-02
  • 基于Python如何绘制流星雨效果
    今天小编给大家分享一下基于Python如何绘制流星雨效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。浪漫的流星雨展示&nb...
    99+
    2023-06-29
  • 基于Python如何实现绘制一个足球
    今天小编给大家分享一下基于Python如何实现绘制一个足球的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前情提要其核心代码为...
    99+
    2023-07-05
  • 基于Echarts如何实现绘制立体柱状图
    本篇内容主要讲解“基于Echarts如何实现绘制立体柱状图”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于Echarts如何实现绘制立体柱状图”吧!实现方法先写一个常规的柱状图在这个基础上进行...
    99+
    2023-07-05
  • 基于RecyclerChart的KLine怎么绘制
    本篇内容主要讲解“基于RecyclerChart的KLine怎么绘制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于RecyclerChart的KLine怎么绘制”吧!下面是gif的效果代码如...
    99+
    2023-07-05
  • 基于RecyclerChart的KLine绘制详解
    本章节是KLine的绘制的第二章节,在原来的基础上绘制5、10、20日均线。下面是gif的效果。 其实只是把线性图表的绘制逻辑搬到这边一起,上篇文章提到在一个For循环里处理,减少...
    99+
    2023-03-03
    RecyclerChart KLine绘制 RecyclerChart KLine
  • 基于Pythonmatplotlib库绘制箱线图
    目录1. 关于箱线图 及 plt.boxplot()方法2. 绘制一幅简单的箱线图3. 绘制一幅更精致的图像4. 异常值的标准5. 异常值的输出1. 关于箱线图 及 plt.boxp...
    99+
    2024-04-02
  • 基于C#如何实现在图片上绘制文字
    本篇内容介绍了“基于C#如何实现在图片上绘制文字”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果代码public partial...
    99+
    2023-07-04
  • 基于Python绘制520表白代码
    目录一、绘制成品二、绘制代码1.导入库2.选择背景音乐3.绘制心的外轮廓4.填充心并写告白信5.画心动线一、绘制成品 二、绘制代码 实现本文效果的整体思路是:加载库—选...
    99+
    2024-04-02
  • 基于RecyclerChart的KLine怎么绘制Volume
    这篇文章主要介绍“基于RecyclerChart的KLine怎么绘制Volume”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于RecyclerChart的KLine怎么绘制Volume”文章能帮...
    99+
    2023-07-05
  • Android基于Mapbox V10 绘制LineGradient轨迹
    目录前言普通的 cameraStyle设定Layer绘制轨迹LineLayer前言 当Mapbox升级到V10(我直接到当前的最新V10.3)版本后,就可以就此实现自己想要实现的功能...
    99+
    2024-04-02
  • C语言基于EasyX绘制时钟
    本文实例为大家分享了C语言基于EasyX绘制时钟的具体代码,供大家参考,具体内容如下 函数说明: void line(     int x1,     int y1,     int...
    99+
    2024-04-02
  • 如何基于Python绘制一个摸鱼倒计时界面
    这篇文章将为大家详细讲解有关如何基于Python绘制一个摸鱼倒计时界面,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现过程首先要知道、除了静态文字之外的比如当前日期、距离节日放假的天数等都是动态返回的,...
    99+
    2023-06-22
  • 基于Matlab怎么绘制小提琴图
    今天小编给大家分享一下基于Matlab怎么绘制小提琴图的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。violinChart ...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作