老规矩首先看下效果:
简单说下思路哈:
三维模式下 测距测面需要考虑的 是否 测量的是空间距离或要考虑地形的高低起伏以及加载模型的在模型表面的测量情况。所以分为空间距离/面积 和表面距离/面积;
直接的空间距离简单,测量点面距离,用 Cesium.Cartesian3.distance 即可;
表面的距离:
线段:
我的思路是将线段等分为多少段,然后每一段去插值多少点,然后用每一小段点的高度采样点去计算他们之间的距离。本质就是“微积分”的原理。
面积:
和线段一样,划分很多细小的面,将多边形面对应屏幕区域,构建泰森多边形。用的是 truf.js 去计算的。
参考博客:
Cesium基础-表面距离量算(依地形量算、依模型表面量算)_lying_19的博客-CSDN博客_表面距离
--
Cesium基础-表面面积量算(依地形量算、依模型表面量算)_lying_19的博客-CSDN博客
这个测量工具我封装了一个测量类,传入viewer 即可,大概看下类的构造吧:
调用方法如下:先实例化一个对象,然后调用方法即可。
封装的工具类资源地址:
封装cesium的测量工具类-Javascript文档类资源-CSDN下载
(对你有帮助就请动动小手,来一个关注点赞加收藏呗。囊中羞涩的小伙伴留下邮箱,看到会发的,着急还是用积分下载吧~)