Cesium加载大量广告牌并实现贴地

项目地址

https://github.com/zhengjie9510/webgis-demo

实现效果

请添加图片描述

实现方法

方式1:heightReference属性

使用 Billboard 自带的 heightReference 属性实现贴地。该方法的好处是实现简单,但如果数据量巨大(50000以上),加载会比较慢。
使用该方法需要在创建 BillboardCollection 时指定 scene 属性。

const collection = new Cesium.BillboardCollection({ scene: viewer.scene })

并在创建 Billboard 时将 heightReference 设置为 CLAMP_TO_GROUND。

collection.add({
	position: position,
	image: pinBuilder.fromColor(Cesium.Color.fromRandom({ alpha: 1.0 }), 20).toDataURL(),
	verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
	horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
	heightReference: Cesium.HeightReference.CLAMP_TO_GROUND
})

方式2:sampleTerrainMostDetailed方法

如果数据量较大,另一种可行的方法是先使用 sampleTerrainMostDetailed 获取点的高程,并存储到数据库中,之后直接从数据库中读取数据。该方式只在高程采样时较慢,后面的加载会非常快,比较适用于大量数据的加载显示。

// 1、生成大量随机点
const points = randomPoint(500, { bbox: [100, 25, 102, 27] })
// 2、Cartographic数组
const positions = []
for (let point of points.features) {
  const coordinates = point.geometry.coordinates
  const position = Cesium.Cartographic.fromDegrees(coordinates[0], coordinates[1])
  positions.push(position)
}
// 3、高程采样
const pinBuilder = new Cesium.PinBuilder();
const collection = new Cesium.BillboardCollection()
const terrainProvider = viewer.terrainProvider
const promise = Cesium.sampleTerrainMostDetailed(terrainProvider, positions);
Promise.resolve(promise).then(function (updatedPositions) {
  for (let position of updatedPositions) {
    collection.add({
      position: Cesium.Cartesian3.fromRadians(position.longitude, position.latitude, position.height),
      image: pinBuilder.fromColor(Cesium.Color.fromRandom({ alpha: 1.0 }), 20).toDataURL(),
      verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
      horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
    })
  }
  viewer.scene.primitives.add(collection)
});
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cesium是一种基于WebGL的开源地理空间软件开发工具包,可以用于创建高性能的3D地球和地理信息系统。Cesium开发团队不仅提供了功能强大的地球模型,还提供了一系列实用工具和模块,其中包括广告牌贴地贴模型。 广告牌贴地贴模型是一种在地球表面上展示2D图像的方式。传统的2D图片在地球模型上进行贴图时,会在观察角度改变时出现扭曲的情况。而通过Cesium广告牌贴地贴模型,可以实现解决这个问题。 使用Cesium制作广告牌贴地贴模型非常简单。首先,我们需要准备一张2D图片或者图标,可以是产品logo、企业标识、地标建筑等。接下来,通过Cesium提供的API,我们可以将这个2D图片放置在地球表面上的特定位置。 在Cesium中,贴图的位置和方向与地球表面的实际坐标位置相对应。这意味着我们可以根据需要将广告牌贴图放置在地球表面的任何位置。当观察者改变视角或者缩放地图时,Cesium会自动调整广告牌贴图的朝向和大小,以保证广告牌在不同视角下的合理展示。 通过Cesium广告牌贴地贴模型,企业可以将自己的品牌或产品标识形象地展示在全球地图上,提高品牌的曝光度和知名度。同时,对于旅游、房地产等行业,也可以将景点、房产项目等相关信息直观地展示在地球模型上。 总之,Cesium广告牌贴地贴模型为我们提供了一种简单而强大的方法,可以在地球模型上展示2D图片,实现了视角变化时贴图的自动调整。这为各行业的品牌推广和地理信息展示提供了全新的思路和可能性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值