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

37 篇文章 0 订阅
8 篇文章 4 订阅

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

rectangle 的边是沿着经纬线的。

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

请添加图片描述

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

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

请添加图片描述

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

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

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

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

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

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

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

Polygon vs rectangle curvature - CesiumJS - Cesium Community

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

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

不过我仔细一看时间,这个话题的讨论发生在 2016 年。
请添加图片描述
看到这里,不禁内心一喜,看来这功能,应该早就已经加进来了吧。

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

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

其实,只要你用的 cesium 的版本不低于 1.54 版本,默认情况下,就支持通过参数来控制多边形边的绘制方式了。
请添加图片描述
为了验证一下,我在 codepen.io 上创建了一个 demo:

ArcType

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

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

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

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

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

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

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值