美文网首页
(6)基于Leaflet实现标绘——聚集地(大蚕豆)

(6)基于Leaflet实现标绘——聚集地(大蚕豆)

作者: 仙人掌开不了花 | 来源:发表于2019-09-25 16:39 被阅读0次

    这是一个由很多个点组成的蚕豆形状的多边形,只需要三个点就可以计算得出一个聚集地图形。

    (图一)聚集地的示例图形

    如下图所示,有三个点(黄色方框)计算得到很多的点(红色圆圈)形成了最终的聚集地图形。

    (图二)聚集的点位置

    第一步:判断用于绘制聚集地图形的点的个数,若不足,则重新计算得到三个基本点。其中pnts是经纬度坐标转成平面坐标后的坐标。若只有两个点pnts[0]和pnts[1],那么这两个点的中点则为mid,mid与pnts[0]的距离的0.9倍则为d,那么mid沿着pnts[0]的方向逆时针旋转90°后距离mid有d远的点就是pnt。

    (图三)当用户绘制聚集地的点数不足3个时的计算图解

    此时,pnts将被重新赋值,有pnts[0]、pnt、pnts[1]构成绘制聚集地的基本点。

    (图四)计算基本点的代码

    第二步:计算各个基本点的法线上的两个点。

    (图五)计算法线端点的图解

    计算pnts[0]和pnts[2]的中点得到mid点,然后将mid、pnts[0]和pnts[1]加入到pnts中,这样做是为了方便计算mid和pnts[0]的法线端点,只需要一次循环就够了。

    (图六)计算法线端点的代码

    第三步:将聚集地分为4段,计算每一段上的所有的三次贝塞尔曲线点坐标。

    (图七)分解聚集地图形 (图八)分解聚集地图形后一次计算曲线上的点的代码

    第五步:将所有点假如一个数组中并转为经纬度赋值给多边形,刷新图形即可。

    相关文章

      网友评论

          本文标题:(6)基于Leaflet实现标绘——聚集地(大蚕豆)

          本文链接:https://www.haomeiwen.com/subject/lfxxsqtx.html