cesium 实战系列之独栋建筑选中特效
在某个项目中有这样一个需求在众多建筑中选中其中的一个并给其加上选中效果我在网上找了很多篇文章都是说的模棱两可的要不就是根本不能实现要不就是实现出来的效果不对我这里给出我的实现思路和效果。最终效果实现思路通过鼠标拾取事件获取建筑物信息我这里是拿到建筑物的bsm唯一标识码然后通过后端拿到建筑物的geojson数据根据geojson和建筑物高度生成面之后拉伸高度就有了这个建筑物的外部轮廓然后利用canvas 生成渐变色材质给entity的material贴图即可。有了geojson也就可以知道中心点坐标然后再生成其他图标将他们放在合适的位置即可。代码实现点击获取建筑物信息后端请求获取geojsoninitMapListener() { var that this; handler.setInputAction((movement) { //获取点击模型 let pick viewer.scene.pick(movement.position); if (pick instanceof Cesium.Cesium3DTileFeature) { that.api .queryBuildingRange({ BSM: pick.getProperty(bsm) }) .then((res) { if (res.build_range) { createBuildEntity( JSON.parse(res.build_range), pick.getProperty(jzgd) ); } }); } }, Cesium.ScreenSpaceEventType.LEFT_CLICK); },根据geojson生成建筑物外轮廓attach渐变色材质。//生成渐变色材质 var getColorRamp function () { var ramp document.createElement(canvas); let ctx ramp.getContext(2d); var grad ctx.createLinearGradient(0, 0, 200,200) // 创建一个渐变色径向/圆对象 grad.addColorStop(0, rgba(18,56,254,0.60)); // 设置渐变颜色 grad.addColorStop(1, rgba(167,254,254,0.37)); ctx.fillStyle grad; // 设置fillStyle为当前的渐变对象 ctx.fillRect(0,0,500,500); // 绘制渐变图形 return ramp; } //根据geojson生成建筑物外轮廓 function createBuildEntity(geojson,height) { viewer.dataSources.removeAll(); Cesium.GeoJsonDataSource.load(geojson).then(function(dataSource) { viewer.dataSources.add(dataSource); // viewer.flyTo(dataSource) let entities dataSource.entities.values; for (let i 0; i entities.length; i) { let entity entities[i]; entity.polygon.material new Cesium.ImageMaterialProperty({ image: getColorRamp(), transparent: true }) entity.polygon.outline true; entity.polygon.outlineColor Cesium.Color.fromCssColorString(#02d8fe) // 将高度拉伸至35米 entity.polygon.extrudedHeight height2; } }); }根据建筑物中心坐标生成其余entities放上去。function addLeftEntity(lng,lat,height){ removeEntityById(left_1); removeEntityById(left_2); let position0 Cesium.Cartesian3.fromDegrees(lng,lat,height) let entity viewer.entities.add({ id: left_1, position: position0, billboard: { image: static/img/center.png, scale: 0.5, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, verticalOrigin: Cesium.VerticalOrigin.CENTER, disableDepthTestDistance: Number.POSITIVE_INFINITY,//被建筑物遮挡问题 } }) var polyline1 viewer.entities.add({ id:left_2, polyline: { positions: [ Cesium.Cartesian3.fromDegrees(lng,lat,height), Cesium.Cartesian3.fromDegrees(lng,lat,height60), Cesium.Cartesian3.fromDegrees(lng0.0002,lat,height60) ], width: 1, material: new Cesium.PolylineDashMaterialProperty({ color: Cesium.Color.WHITE, dashLength: 20 //短划线长度 }) } }); }至此就结束了至于弹框内容就是个div通过经纬度转换平面像素给定位置显示出来即可这里就不过多介绍。

相关新闻

外观专利仅形式审查,拿证易维权难,证书之下专利根基早已藏隐患

外观专利仅形式审查,拿证易维权难,证书之下专利根基早已藏隐患

一、授权率接近100%背后的陷阱某企业老板拿着外观设计专利证书去法院维权,法院第一句话是:“请先出具专利权评价报告。”他找到国家知识产权局做了评价报告,结论栏写着:“全部不符合授权条件。”——理由是申请前已有相近似设计公…

2026/10/24 4:37:20 阅读更多 →
光纤收发器AB端配对原理与实战排查指南

光纤收发器AB端配对原理与实战排查指南

1. 光纤收发器AB端:一个看似简单却常被误解的“方向”问题“光纤收发器A端和B端,到底哪个是接收?” 这个问题,乍一听像是刚入行网络工程师或者弱电施工人员才会纠结的“小白”问题。但在我十多年的项目交付和运维经历中&#xff0…

2026/10/24 9:43:27 阅读更多 →
魔兽争霸3兼容性救星:WarcraftHelper免费辅助工具全解析

魔兽争霸3兼容性救星:WarcraftHelper免费辅助工具全解析

魔兽争霸3兼容性救星:WarcraftHelper免费辅助工具全解析 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 深夜十一点,你兴致勃勃…

2026/10/26 8:55:01 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/25 22:36:10 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/26 4:52:12 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/26 5:00:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/26 3:16:46 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 13:21:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →