Cesium案例之单体化

标签: Cesium 分类: Gis 创建时间:2021-03-22 06:55:12 更新时间:2025-01-17 10:39:22

单体化,听起来有点高大上,其实就是拾取模型,比如点击一个模型弹出一段信息框,显示该模型的信息。因为3Dtiles是一个整体,所以不能像threejs一样加载一个独立的模型,就可以直接为这个模型添加点击事件,于是就有了叫单体化的过程。官方示例中,就是一个典型的例子,可以点击某一幢建筑物,同时在右侧显示这幢建筑物的信息,另外一个示例,对于Pick效果展示的可能更加充分。

参考文章:
1.分类单体化的说明 (这就是如何进行点击选中一座房子的问题)
2.Cesium 案例分析 –单体化分析(分栋、分层)
3.cesium 3dtiles模型单体化点击高亮效果 (这里提供了一个结合Geoserver实现的单体化,鼠标点击倾斜模型,获取对应的点击坐标点;然后根据pick获取到的坐标点,结合geoserver发布的wfs服务,进行空间查询,匹配对应的geojson数据;最后根据获取到的geojson数据源来绘制显示高亮效果,并且弹出对应气泡窗口。)
4.CESIUM例子学习(九)——Primitive(4) (这里的代码其实也和上面的参考文章2的代码差不多,使用的是Primitive进行绘制)

鼠标拾取模型

这种其实非常的简单,就是通过监听鼠标的点击事件,判断是否选中了一个对象,选中了对象,则修改该对象的颜色,弹出对象的信息框。

1
2
3
4
5
6
7
8
9
// 监听鼠标事件
new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas).setInputAction(function (pick) {
var pickObj = viewer.scene.pick(pick.position);
if(Cesium.defined(pickObj)){
console.log(pickObj.getProperty("color"))
// 改变模型颜色
pickObj.color=Cesium.Color.DARKBLUE;
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
参考文章:
1.Cesium 鼠标事件监听 (这篇文章讲解了如何对鼠标事件进行监听,以及有哪几类鼠标事件)
2.鼠标滑动点击选择模型 (这是官方的例子,实现了鼠标滑动和点击模型,这里有一个显示infobox的地方,我刚开始一值没找到这个infobox在哪里创建的,因为在点击事件中根本就没有创建infobox啊,只是将selectedEntity.description值初始化了,后来我才发现,原来我在创建viewer的时候,有一个infoBox属性,我给禁用了,所以就显示不出来信息框)
3.cesium 控制infobox中显示的内容
4.Cesium中的几种坐标和相互转换 (因为Cesium中有各种各样的坐标,所以需要进行相互的转换)
5.cesium给自定义的区域添加高亮 (这用了KML形式,感觉文不对题)
6.Cesium开发:模型实体高亮 (这是通过改变模型的颜色实现的)
7. younggis /Cesium-Examples Cesium示例,包括3DTiles、雷达扫描、动态扩散点、渐变立体墙、渐变建筑物、视场角大小、日照分析、空间三角形、可视域分析、动画、站心坐标转换、地形开挖、方量计算、FlowLine等
文章目录
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。