015:cesium根据坐标值宽度高度,显示走廊状corridor图形

本文是大剑师兰特分享的Vue+Cesium教程,详细讲解了如何根据坐标值和宽度高度显示走廊状Corridor图形。提供源代码示例,适合想要在vue项目中使用cesium进行3D可视化的开发者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者: 还是大剑师兰特 ,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,优快云知名博主,深耕openlayers、leaflet、mapbox、cesium,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。

查看本专栏目录 - 本文是第 015个示例

一、示例效果图

二、示例简介

本示例介绍如何在vue+cesium中根据坐标值宽度高度,显示走廊状corridor图形。

直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果.

三、配置说明

1)查看基础设置:https://xiaozhuanlan.com/topic/1374609285
或者同样查看:

### 如何在 Cesium 中创建或渲染普通墙体 在 Cesium 中,可以通过 `Cesium.Primitive` 或者更高级别的 API 来实现墙体的绘制和渲染。以下是两种常见的方法来创建墙体。 #### 方法一:使用 `Cesium.PolygonGraphics` 通过定义一个多边形并将其拉伸到一定高度,可以模拟墙体的效果。这种方法适用于简单的平面墙体。 ```javascript viewer = new Cesium.Viewer('cesiumContainer'); var wallEntity = viewer.entities.add({ polygon: { hierarchy: Cesium.Cartesian3.fromDegreesArray([ -72.0, 45.0, -68.0, 45.0, -68.0, 47.0, -72.0, 47.0 ]), extrudedHeight: 1000.0, // 墙体的高度 material: Cesium.Color.RED.withAlpha(0.5) // 设置颜色透明度 } }); viewer.zoomTo(wallEntity); ``` 上述代码片段展示了如何利用多边形的 `extrudedHeight` 属性来创建一个垂直于地面的墙体效果[^1]。 #### 方法二:使用 `Cesium.CorridorGraphics` 如果需要创建一条沿着路径延伸的墙体,则可以考虑使用走廊图形 (`CorridorGraphics`)。它允许指定一组经纬度坐标作为路径,并设置宽度高度属性。 ```javascript var corridorEntity = viewer.entities.add({ corridor : { positions : Cesium.Cartesian3.fromDegreesArrayHeights([ -90.0, 40.0, 0, -80.0, 40.0, 0 ]), width : 200000.0, // 走廊宽度 (米) height : 5000.0 // 高度 (可选参数,默认为零) }, material : Cesium.Color.BLUE.withAlpha(0.5) }); ``` 这里我们构建了一条蓝色半透明的走廊物体,它可以被看作是一堵连续变化方向上的墙壁。 #### 使用自定义几何体(Custom Geometry) 对于更加复杂的场景需求,比如倾斜角度不固定的墙面或者带有纹理贴图的情况,可能就需要借助原始几何数据结构来自由设计每一个顶点位置及其法线向量等细节信息了: ```javascript function createWallGeometry(options){ var geometry = new Cesium.GeometryInstance({ geometry : new Cesium.WallGeometry({ positions : options.positions.map(function(pos){return Cesium.Cartographic.toCartesian(Cesium.Ellipsoid.WGS84.cartographicRadiansToCartesians([pos.longitude * Math.PI / 180,pos.latitude*Math.PI/180]));}), maximumHeights : options.maximumHeights || [], minimumHeights : options.minimumHeights || [] }), attributes:{ color:Cesium.ColorGeometryInstanceAttribute.fromColor(new Cesium.Color(...options.color)) } }); return geometry; } // Example Usage: let customGeomOptions={ 'positions':[ {'longitude':-75,'latitude':40}, {'longitude':-74,'latitude':40} ], 'maximumHeights':[1000], 'minimumHeights':[0], 'color':[1,0,0,.5] }; const primitive=new Cesium.Primitive({ geometryInstances:createWallGeometry(customGeomOptions), appearance:new Cesium.PerInstanceColorAppearance({closed:false}) }); viewer.scene.primitives.add(primitive); ``` 这段脚本提供了一个函数用于生成特定配置下的墙型几何实例对象,并最终添加至视图器中的基本原语集合里显示出来。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

还是大剑师兰特

打赏一杯可口可乐

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

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

打赏作者

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

抵扣说明:

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

余额充值