cesium 多边形线类型引发的思考

默认情况下,如果你用 entity 创建一个 rectangle 对象,你会发现他长下面这个样子。


20220426154332.png

rectangle 的边是沿着经纬线的。

但是如果你用 entity 创建一个 polygon 对象,你会发现,和 rectangle 长得不太一致,虽然,传入的坐标是一致的。

20220426154747.png

观察一下,我们会发现,polygon 的边并不是沿着经纬度生成的。

这样看好像不太直观,那我们把两个对象同时生成,就能更清楚的看出来差别了。

20220426155327.png

当然为了区分,我给 polygon 加了点透明度,能够看的更清楚些。

说来惭愧,很早接触 cesium 就发现了这个问题了,但是一直没静下心来仔细研究过这个问题。

恰逢最近在项目中有碰到这个问题,需要解决,于是就开始研究了一下缘由。

对于一个合格的程序员来说,碰到问题,当然要首先在网上搜一搜,看看有没有现成的解决方案。

毕竟,谁不想,“站在巨人的肩膀上”呢?

正如我所料,还真的找到了相关的讨论。

在 cesium 官方论坛发现了相关的话题:

Polygon vs rectangle curvature - CesiumJS - Cesium Community

有人问,为什么用矩形和多边形,绘制出来的样式不一致。

然后有人回复,因为两者的绘制方式不同,rectangle 是沿着经纬线绘制的,而多边形的边是沿着大地线绘制的。而且在后面,还友善的给了 github issue 链接地址,说官方正考虑增加多边形支持经纬线方式绘制这个功能。

不过我仔细一看时间,这个话题的讨论发生在 2016 年。


image.png

看到这里,不禁内心一喜,看来这功能,应该早就已经加进来了吧。

果不其然,顺着 issue 看过去,在 2019 年的时候,这个问题就被解决了。

Add Rhumb Line Support to Polygon and Polyline Geometries by shehzan10 · Pull Request #7492 · CesiumGS/cesium · GitHub

其实,只要你用的 cesium 的版本不低于 1.54 版本,默认情况下,就支持通过参数来控制多边形边的绘制方式了。


image.png

为了验证一下,我在 codepen.io 上创建了一个 demo:

ArcType

可以发现,当采用 RHUMB 类型的线的时候,确实多边形的边绘制方式也是沿着经纬线的。

其实写这篇文章的目的,并不单纯只是为了记录如何发现 cesium 里面多边形也是支持 Rhumb 类型这个事情。

其实是想感慨一下,很多时候,学习某个新的框架或者编程语言,都会遇到这样的困境。

很多时候,并不能理解,为什么有这个 api,为什么有这个属性, 这些功能的作用到底是啥,只有真正的到了对应的应用场景的时候,才会突然明白,其作用是为何。

所以编程语言、框架乃至系统,才要不断地更新完善,因为会不断地有新的需求进来。而对于新的功能,也只有到需要面对的时候,能解决自己痛点的时候,才会明白的更透彻些。

毕竟,如果没有直接的接口能解决自己的需求,就得自己做对应的开发工作,来满足自己的需求了。

如果自己的需求被满足了以后,然后把对应的需求部分所做的工作贡献出来,回馈给社区,就能进一步推动产品的发展,让产品功能更丰富。

某种意义上来说,编程语言、框架何尝又不是一种产品呢?只不过,大多数情况下,我们都是这些产品的用户而已。

你可能感兴趣的:(cesium 多边形线类型引发的思考)