cesium 一种很简单的primitive加载poi点的聚合方法

cesium没有提供primitive聚合的方法,一般可以直接修改源码:EntityCluster.js实现聚合,但是还可以使用如下方法

关键属性:DistanceDisplayCondition

BillboardCollection为例:

 

每个poi点给他一个显隐的距离限制,

至于这个距离限制到底是多少,就得靠自己去约束了,我是直接在数据库里添加了一个字段,来控制具体某一类型的poi视距到多少才进行显示。

数据库方面:

如下:

typename为 “ 汽车服务;加油站;加油站 ”  的可看作最远视距显示的POI;

然后typename中包含 “汽车服务;加油站”  的可看作中距离视距显示的POI;

最后typename中包含 “汽车服务”  的可在最近视距显示全部的POI;

 视距控制方面:

1.存储基于typename的层级

 2.如果是那一层的poi点,则返回相应的视距

POIPrimitive.prototype._clustering = function(typename_,lod){
  if (typename_.indexOf(lod.lod1) != -1) {
    //高视距
    return [100000,500000]
  } else if(typename_.indexOf(lod.lod2) != -1){
    //中视距
    return [8000,80000]
  }else {
    //低视距
    return [3000,3000]
  }
}

调用方面:

      this.$axiosInstance.searchPoiByclassname(params).then(res => {
        for (let i = 0; i < res.data.rows.length; i++) {

          //计算相应视距
          let dis = POIPrimitive_._clustering(res.data.rows[i].typename,node.lod);

          //画poi
          POIPrimitive_._add({
            position:[res.data.rows[i].lon, res.data.rows[i].lat, 0.0],
            label:{
              fillColor:Cesium.Color.fromCssColorString(node.labelcolor),
              text:res.data.rows[i].name,
              // 添加显隐视距限制
              distanceDisplayCondition:new Cesium.DistanceDisplayCondition(0, dis[0])
            },
            billboard:{
              image:node.img,
              // 添加显隐视距限制
              distanceDisplayCondition:new Cesium.DistanceDisplayCondition(0, dis[1])
            }
          })
        }

      });

效果:

                                                                            远视距 

                                                                             中视距                                                                                                                                       近视距 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值