Cesium面试题
Cesium开发面试题
1、请简要介绍一下Cesium的基本功能。
答:Cesium是一款3D地球可视化引擎,可以在Web浏览器中显示高度真实感的3D地球场景,包括地形、地表纹理、3D建筑、水域等。它提供多种漫游和导航方式,支持多种地形和影像数据格式,以及3D Tiles、CZML等技术,可以用于实时位置追踪、天文数据显示、地下和空中场景等应用场景。
2、请解释一下Cesium中的3D Tiles技术是什么,以及它的作用是什么。
答:3D Tiles是一种用于高效地加载和显示大规模的3D地球数据的技术,可以将复杂的3D数据分层并进行高度优化。Cesium中的3D Tiles技术可以支持大规模的3D地球数据,包括城市、建筑、地形等,提高了数据的加载速度和显示效率。
3、CZML是Cesium中的一个数据格式,它是什么,以及它用于描述什么样的场景?
答:CZML(Cesium Language)是一种描述和显示动态的地球场景的数据格式,它可以用于描述航班轨迹、气象数据、卫星运行轨迹等。CZML中可以包含实体的位置、速度、方向等信息,以及可视化效果的设置。
4、请解释一下Cesium中的ImageryProvider是什么,以及它的作用是什么。
答:ImageryProvider是Cesium中的一个数据提供器,用于提供地图和影像数据。它可以从多种来源获取数据,比如Web Map Service(WMS)、Web Map Tile Service(WMTS)等,并在地球表面上显示出来。通过使用ImageryProvider,开发者可以轻松地获取并显示各种地图和影像数据。
5、如何加载飞线
答:1、创建polyLine实体
2、计算带有弧度效果的点集数组作为polyline的positions属性参数
6、如何设置飞线动效材质
答:1、创建cesium自定义材质类
2、创建shader,原理是通过贴图UV移动来实现流光效果
7、如何在cesium地球上添加柱状图
答:1、创建entity实体,使用box属性;
2、dimensions设置长宽;
3、position设置中心点位置;
4、heightReference属性设置贴地属性;
8、如何让柱状图跟随数据变化
答:1、创建SampledPositionProperty对象
2、在不同的时间点绑定对应的值
将填充好的SampledPositionProperty赋值给dimensions,实现位置随时间的偏移
9、如何加载天气图的效果
答:1、使用Wind3D类实现
实现原理是将nc格式的数据解析之后运用primitive绘制
2、Cesium官网有github的分享案例,需要修改鼠标事件影响该类绘制时的显示隐藏
10、如何给cesium地球替换表面图层
答:1、主要是在viewer的imageryLayers地图层级内对单独的layer图层的显示隐藏或者添加与移除,imageryLayers有add与remove方法
2、viewer.imageryLayers.addImageryProvider(layer, num); |
主要是这两个API
3、注意不同的地图图层加载会有对应的投影方式,比如web墨卡托投影和wgs84
11、cesium如何进行坐标转换
答:1、//经纬度转屏幕坐标 |
12、cesium如何实现标记的添加
答:1、创建entity实体对象使用billboard对象场景图标挥着使用billboard collection使用primitive创建
13、cesium如何实现鼠标拾取弹窗功能
答:1、创建new Cesium.ScreenSpaceEventHandler(canvas)对象
2、注册鼠标点击事件
3、使用let pick = viewer.scene.pick(movement.position); 选取当前的entity
14、如何设置cesium中的抗锯齿方法
答:1、使用fxaa方法,效果较差
2、使用msaa方法,但需要浏览器支持webGL2的api方法