楼主: 森友js
1750 0

[数据挖掘理论与案例] 通过创建GeoLine给地图添加烟花图效果 [推广有奖]

  • 0关注
  • 0粉丝

大专生

35%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
38.0054
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
273 点
帖子
20
精华
0
在线时间
29 小时
注册时间
2020-10-19
最后登录
2023-7-12

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
ThingJS除了提供多种类型的模型外,还预置了多种粒子效果,包括:水、火、烟、雨、雪等,每种粒子效果按照不同的使用场景又有多种表现形式,可以满足在不同的天气条件下数字孪生可视化场景中的情况。那能不能在数字孪生可视化地图上添加效果呢?下面我就通过创建GeoLine(地理线)给数字孪生可视化地图添加烟花图效果。





几个关键点:

1. 烟花的火花颜色,大小,位置这三个变量。

2. 烟花飞出的方向:只向上。

3. 烟花的颜色:烟花也就是GeoLine(地理线)一共设置了三种颜色:黄、紫、蓝。

4. 线生长循环开启,烟花会在数字孪生可视化地图上循环出现。





代码如下:

  1. var app = new THING.App();
  2. // 设置app背景为黑色
  3. app.background = [0, 0, 0];

  4. var thingLayer = app.create({
  5. type: "ThingLayer",
  6. name: "thingLayer01"
  7. });

  8. // 引用地图组件脚本
  9. THING.Utils.dynamicLoad(["https://www.thingjs.com/uearth/uearth.min.js"], function () {
  10. app.create({
  11. type: "Map",
  12. url: 'https://www.thingjs.com/citybuilder_console/mapProject/config/TVRFek5ETTRDaXR5QnVpbGRlckAyMDE5',
  13. complete: function (event) {
  14. var building = app.query(/建筑/)[0].data.features;
  15. var points1 = app.query(/旅游/)[0].data.features;
  16. var points2 = app.query(/医疗服务/)[0].data.features;
  17. var points3 = app.query(/大型购物广场/)[0].data.features;
  18. var newPoints2 = points2.filter((i, index) => index % 10 == 0);

  19. createBuilding(building, 'building')
  20. createMeshLine(points1, "#FF9933FF");
  21. createMeshLine(newPoints2, "#FF00FFFF");
  22. createMeshLine(points3, "#00CCFFFF");
  23. }
  24. });
  25. });

  26. /**
  27. * 创建GeoBuilding
  28. */
  29. function createBuilding(building, name) {
  30. building.map(item => {
  31. var coordinates = item.geometry.coordinates;
  32. var height = item.properties.height;
  33. var building = app.create({
  34. type: "GeoBuilding",
  35. name: name,
  36. coordinates, // 支持Polygon和MultiPolygon,格式可参考geoJson规范
  37. height: height,
  38. renderer: {
  39. type: 'vector',
  40. color: [61, 63, 70],// 面填充颜色
  41. opacity: 1, // 填充不透明度
  42. }
  43. });
  44. thingLayer.add(building);
  45. })
  46. }

  47. /**
  48. * 创建GeoLine
  49. */
  50. function createMeshLine(points, color) {
  51. points.map(item => {
  52. var height = Math.random() * 2000 + 3000;
  53. var geoLine = app.create({
  54. type: 'GeoLine',
  55. name: color,
  56. coordinates: [item.geometry.coordinates, item.geometry.coordinates],
  57. heightArray: [0, height * 0.1],
  58. // userData: { 'name': '花家地南街' },
  59. renderer: {
  60. type: 'vector', //GeoLine渲染类型 支持纯色(vector)和贴图(image)两种模式
  61. lineType: 'Line', //可以是Line Plane Pipe Route
  62. // imageUrl: 'https://www.thingjs.com/citybuilder_console/upload/lineIcons/3d/lightFlow_strip05.png',//线的贴图url, type是image时生效
  63. // color: [255, 255, 255], //线的颜色, type是vector时生效
  64. colorMapping: {
  65. 0: "#00000000",
  66. 0.7: "#33333300",
  67. 0.8: "#333333FF",
  68. 1: color,
  69. },
  70. // effect: true, //是否开启发光特效
  71. // width: 10, //只在线类型为Plane,Pipe下生效,代表线的宽度
  72. // numPass: 0.5, // 通道数,在贴图时贴图叠加的次数,次数越多颜色越亮,type是image时生效
  73. speed: 0.4, //线贴图流动速度,默认是0,不流动 speed可以大于0也可以小于0,代表流动方向
  74. // growSpeed: 0.4, //线生长速度,默认是0,不生长,lineType是Line,Plane时生效
  75. // growLoop: true //线生长是否循环,默认是true,lineType是Line,Plane时生效
  76. }
  77. });
  78. thingLayer.add(geoLine);
  79. })
  80. }
复制代码


最后就可以在数字孪生可视化地图上发射烟花了。本文分享了自己是如何实现在数字孪生可视化地图上产生烟花效果的,同时祝大家天天有精彩!

—————————————————







二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:line OLI Lin GEO eol

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-9-20 07:41