cesium 大量标注点位 Primitives与BillboardCollection结合

在这里插入图片描述

项目中的房屋点位有1000多个,使用entity造成渲染卡顿,经过我的网上翻阅,大多优秀的网友推荐了Primitives的写法
primitiveentity

  • primitive更多的是面向图形开发人员的底层API,暴露最小限度的抽象,更多使用图形学术语,具有更大的灵活性。

  • entity是更高级别的数据驱动API,它使用一致性设计的、高级别对象来管理一组相关性的可视化对象,其底层也是使用的primitive。

Cesium内部为我们提供了几个可渲染的集合像PointPrimitiveCollection、BillboardCollection等等,这里我们就可以用到BillboardCollection
在这里插入图片描述
上代码

 billboards = viewer.scene.primitives.add(new Cesium.BillboardCollection());
 // 加载房屋点位 数据请求
  const getHouse = () => {
    clearBillboard();
    requestApi.getHousePage({ currentPage: 1, pageSize: 9999 }).then((res) => {
      console.log(res, '房屋点位', billboards);
      const list = res.records;
      let position, point;
      list.forEach((item) => {
        const { id, community, gridsMini, housingEstate, lat, lng, structure } = item;
        position = Cesium.Cartesian3.fromDegrees(+lng, +lat, 0);
        point = { id, community, gridsMini, housingEstate, lat, lng, structure };
        addPrimitive(position, point);
      });
    });
  };
//   添加
  function addPrimitive(position, point) {
    const { community, gridsMini, housingEstate, lat, lng, structure } = point;
    console.log('添加了');
    billboards.add({
      id: point.id,
      width: 40,
      height: 31,
      position: position,
      image: houseImgUrl,
      verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
      data: { community, gridsMini, housingEstate, lat, lng, structure },
    });
  }

  /**移除billboards */
  const clearBillboard = () => {
    billboards.removeAll();
  };
 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值