文章目录

  • 1.实现效果
  • 2.实现方法
    • 2.1加载GeoJson道路线状数据
    • 2.2设置每个entity的样式
    • 2.3材质设置

Cesium实战系列文章总目录: 传送门

1.实现效果

2.实现方法

2.1加载GeoJson道路线状数据

使用Cesium的GeoJsonDataSource接口添加线状道路geojson文件。

  // 道路穿梭线Cesium.GeoJsonDataSource.load("./data/road1.geojson").then(function(dataSource) {this.viewer.dataSources.add(dataSource);const entities = dataSource.entities.values;for (let i = 0; i < entities.length; i++) {let entity = entities[i];entity.polyline.width = 1.7;entity.polyline.material = new Cesium.Spriteline1MaterialProperty(1000, './data/pictures/spriteline1.png');}});

2.2设置每个entity的样式

遍历加载后文件的entity,将其材质设置为自定义的传输线材质。

2.3材质设置

参考gitee上的开源代码,将材质文件保存为单独的js文件,在进行entity材质赋值时直接调用即可。主要的逻辑实现代码是下文中的几行WebGL代码。

/***  精灵穿梭路光效果,*  参考gitee开源*  entity的材质使用MaterialProperty,而primitive使用的是material。*  @Data:2022-01-11*/function Spriteline1MaterialProperty(duration, image) {this._definitionChanged = new Cesium.Event()this.duration = durationthis.image = imagethis._time = performance.now()
}
Object.defineProperties(Spriteline1MaterialProperty.prototype, {isConstant: {get: function() {return false},},definitionChanged: {get: function() {return this._definitionChanged},},color: Cesium.createPropertyDescriptor('color'),duration: Cesium.createPropertyDescriptor('duration')
})
Spriteline1MaterialProperty.prototype.getType = function(time) {return 'Spriteline1'
}
Spriteline1MaterialProperty.prototype.getValue = function(time,result
) {if (!Cesium.defined(result)) {result = {}}result.image = this.imageresult.time =((performance.now() - this._time) % this.duration) / this.durationreturn result
}
Spriteline1MaterialProperty.prototype.equals = function(e) {return (this === e ||(e instanceof Spriteline1MaterialProperty && this.duration === e.duration))
}
Cesium.Spriteline1MaterialProperty = Spriteline1MaterialProperty
Cesium.Material.Spriteline1Type = 'Spriteline1'
Cesium.Material.Spriteline1Source = `
czm_material czm_getMaterial(czm_materialInput materialInput)
{
czm_material material = czm_getDefaultMaterial(materialInput);
vec2 st = materialInput.st;
vec4 colorImage = texture2D(image, vec2(fract(st.s - time), st.t));
material.alpha = colorImage.a;
material.diffuse = colorImage.rgb * 1.5 ;
return material;
}
`// st :二维纹理坐标// czm_material:保存可用于照明的材质信息
Cesium.Material._materialCache.addMaterial(Cesium.Material.Spriteline1Type, {fabric: {type: Cesium.Material.Spriteline1Type,uniforms: {color: new Cesium.Color(1, 0, 0, 0.5),image: '',transparent: true,time: 20,},source: Cesium.Material.Spriteline1Source,},translucent: function(material) {return true},
})

cesium实现道路穿梭线效果相关推荐

  1. cesium实现道路闪烁线效果

    文章目录 1.实现效果 2.实现方法 2.1实现思路 2.2具体代码 2.2.1材质 2.2.2调用 Cesium实战系列文章总目录: 传送门 1.实现效果 2.实现方法 2.1实现思路 通过修改线的 ...

  2. GIS实战应用案例100篇(十六)-CASS道路横断面线,如何折线变直线?

    前言 CASS绘制的道路横断面线是一条垂直纵断面线的直线.而实地采集的断面点连线,是一条折线.应该采用折线还是直线?如何将折线变成直线? 怎么解决折线变曲线的操作步骤: 1.绘制纵断面线 在命令行输入 ...

  3. html怎么在字体中加波浪线,CSS3实现文字波浪线效果

    前言 css的设计之巧妙,实现之精妙,细细寻味,其妙非凡,妙不可言.这波浪线,取巧的运用了linear-gradient属性,合角度.颜色.位置于一体,配合background-size,backgr ...

  4. echart实现3d地图_3D飞线效果——让线“飞”起来的秘密

    在城市规划.统计.交通等行业,地图可视化已成为最直接也最吸引眼球的一种表达方式.例如人群迁徙.人口流动.OD出行.职住分析.客流来源等众多场景都需要用到飞线效果呈现. 2D飞线效果图 随着可视化技术的 ...

  5. canvas绘制飞线效果

    在我们做的可视化大屏项目中,经常会遇到飞线的效果. 在我们的大屏编辑器中,可以通过拖拽+配置参数的方式很快就能够实现.下面是我们使用大屏编辑器实现的一个项目效果: 中间地图就有飞线的效果. 抛开编辑器 ...

  6. shader实现飞线效果(three.js练习)

    一.先看看效果 二.实现方法: 1.飞线的相关配置数据准备 // 飞线效果的相关配置数据 const flyData = [{start: { //起始点位置x: 0,y: 0,z: 0},end: ...

  7. php加波浪线不解析,给文字加波浪线效果

    这次给大家带来给文字加波浪线效果,给文字加波浪线效果的注意事项有哪些,下面就是实战案例,一起来看一下. 前言 css的设计之巧妙,实现之精妙,细细寻味,其妙非凡,妙不可言.这波浪线,取巧的运用了lin ...

  8. android 图片底部波浪线,Android实现波浪线效果(xml bitmap)

    我们要实现的效果如下: 在这之前先带大家了解一下xml bitmap,何为xml bitmap? xml bitmap是一个用xml定义的文件放在资源目录,定义的对象是图片,为bitmap定义别名,这 ...

  9. html怎么下划波浪线,CSS3如何实现文字波浪线效果

    CSS3如何实现文字波浪线效果 发布时间:2021-06-29 11:40:23 来源:亿速云 阅读:92 作者:小新 这篇文章主要介绍CSS3如何实现文字波浪线效果,文中介绍的非常详细,具有一定的参 ...

最新文章

  1. H.264 RTP payload 格式
  2. SPF难以解决邮件伪造的现状以及方案
  3. 对 cas 操作的理解
  4. c语言中日期间的天数怎么计算,关于计算两个日期间天数的代码,大家来看看...
  5. ffmpeg 无法找到libpostproc的问题
  6. 请求头User-Agent作用?
  7. 百度亮相NeurIPS 首届Expo:向世界科普了中国自动机器学习框架
  8. win7企业版怎么都激活不了,看这里
  9. 怎么截取长图/滚动截图?(一文教你迅速截长图)?
  10. USBKEY全解析---概要介绍
  11. Ubuntu 谷歌浏览器下载
  12. 简单写一下未来10年的职业规划
  13. 离线数仓DIM层和DWD层,联表后表和字段命名规则
  14. 经纬度手动简单调整整位置
  15. OSG 添加文字(显示中英文)
  16. 未来电信业的发展方向 VOIP的中国之路
  17. 搜索引擎蜘蛛的基本原理及工作流程
  18. 模拟黑洞图像_全息图像模拟黑洞计划一一物理学家们的下一个宏伟目标
  19. win7一打开计算机就卡,win7设置虚拟内存后导致电脑卡怎么办,几个小技巧解决
  20. linux 电池驱动

热门文章

  1. openwrt 使用google-authenticator为openssh做totp登录认证
  2. android中停止服务,在Android中停止服务
  3. Jquery中如何根据元素对象获取该对象的ID值
  4. 关于React Native Android打包报Duplicate resources错的解决方法
  5. Linux 管理联网 设置主机名( nmtui图形化 和 hostnamectl命令 )
  6. 用jQuery仿写出马里奥小游戏
  7. 【2019.06.16】Django + 微信小程序 实现微信小程序1——小程序基本信息,开发规范
  8. AppCompatActivity报错
  9. 手把手教你用Python调用SCIP求解最优化模型
  10. 彻底厘清application.properties的编码问题