Cesium基础知识三

标签: Cesium 分类: Gis 创建时间:2021-03-23 05:40:53 更新时间:2023-10-20 11:23:25

1.绘制多边形

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 添加多边形
viewer.entities.add({
name: "Red polygon on surface",
polygon: {
hierarchy: Cesium.Cartesian3.fromDegreesArray([
120.3506,30.338851,
120.3536,30.338851,
120.3536,30.340851,
120.3506,30.340851,
120.3506,30.338851,
]),
material: Cesium.Color.RED,
},
});
参考文章:
1.cesium–绘制多边形polygon (这里其实不仅仅是绘制一个多边形了,而是绘制了一个环形)
2.Polygon (这是官网的绘制多边形的例子)

2.取消事件监听

当我们使用addEventListener在clock上添加事件监听的时候,cesium可以自动调用里面的函数,就类似于requestAnimationFrame函数。

1
2
3
4
5
6
// 添加事件监听
_this.eventListener = _this.viewer.clock.onTick.addEventListener(function() {
_this.render(_this.geometry);
});
// 取消事件监听
_this.eventListener();
参考文章:
1.如何在Cesium中停用onTick方法 (这里有两种方法取消监听的事件,但是对于第二种,有些让人疑惑,其实啊,使用addEventListener添加事件监听之后,返回的是一个函数,调用这个函数,就可以直接取消事件的监听)
2.CesiumJS - How can I control viewer time and ticks? (这里没有说到点子上)
3.cesium地球旋转 (这其实是一个地球自动旋转的例子)

3.测量

参考文章:
1.Cesium开发工具篇 | 04量测工具与调试面板 (出来测量相关代码以外,还介绍了两个工具的使用CesiumInspector了解渲染效果和性能调优控件、Cesium3DTilesInspector监视、观察3D Tiles数据的控件)

4.给多边形添加标注

获取多边形的中心,并且添加标注

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 添加标注
var polyPositions = polygon.hierarchy.getValue(Cesium.JulianDate.now()).positions;
var polyCenter = Cesium.BoundingSphere.fromPoints(polyPositions).center;//中心点
polyCenter = Cesium.Ellipsoid.WGS84.scaleToGeodeticSurface(polyCenter);
let cartographic = Cesium.Cartographic.fromCartesian(polyCenter, viewer.scene.globe.ellipsoid, new Cesium.Cartographic());
// 转换为经纬度
let lat = Cesium.Math.toDegrees(cartographic.latitude);
let lng = Cesium.Math.toDegrees(cartographic.longitude);
let height = cartographic.height;
entity.position=Cesium.Cartesian3.fromDegrees(lng, lat,height); // 设置标注的位置
entity.label= new Cesium.LabelGraphics({
position: Cesium.Cartesian3.fromDegrees(lng, lat,height),
text:entity.name,
color : Cesium.Color.fromCssColorString('#fff'),
font:'normal 32px MicroSoft YaHei',
showBackground : false,
scale : 0.5,
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
});
参考文章:
1.cesium 获取 多边形 polygon 中心点,给 polygon 加label 中心点是世界坐标,如果要经纬度坐标还需要转换
2.Add a Label to the Polygon in Cesium
3.cesium绘制几何体polygon,并直接标注label的小技巧 这里给出了标注的位置 entity.position
4.LabelGraphics 中文api文档

5.加载geojson数据

6.Primitive

参考文章:
1.Cesium(三) 几何图形与外观 Primitive由两个部分组成:几何形状(Geometry)、外观(Appearance )
2.Primitive绘制点线面

7.图标点

参考文章:
1.cesium实现图片与文字合成新图标 思路是在聚合图标上动态添加聚合数量来生成新图标,参考了Cesium源码中的PinBuilder自定义图片或文字的方式和向Cesium提供的向图片中写文字的函数writeTextToCanvas。具体的实现方法是先异步加载原始图标,使用H5的Canvas对象,先画出图片,再追加文字,最后将Canvas保存,即可生成图片与文字合成后的新图标。
2.cesium中加载点图标 使用 Cesium.BillboardCollection 进行图标点的保存
3.Cesium三维地球上添加点、线、面、文字、图标(图片)、模型等标绘 也是通过 billboard 进行的配置。1.面向图形开发人员的底层API,通常称为“Primitive API”。该API暴露最小限度的抽象,使用图形学术语,具有很大的灵活性,需要具有图形学编程的知识。2.高级别的数据驱动的API,称为“Entity API”。该API使用一致性设计的、高级别的对象,来管理一组相关性的可视化对象,其底层使用Primitive API。
4.Cesium Primitives加载大量图标点 使用entity的方式加载大量图标点会出现卡顿现象,cesium提供了BillboardCollection可以实现大量图标点的显示(测试过5万图标点还是比较流畅的)

8.Camera控制

Heading:Heading is the rotation about the negative z axis. ( Heading 是围绕 Z 轴旋转 ) ,就是左右摇头
Pitch: Pitch is the rotation about the negative y axis. ( Pitch 是围绕 Y 轴旋转 ,就是 上下点头
Roll: Roll is the rotation about the positive x axis ( Roll 是围绕 X 轴旋转 ),倒立看

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 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.
幸福是年华的沉淀,微笑是寂寞的悲伤。