【mars3d】mars3d写lable标签使用BillboardPrimitive这个API提升代码性能

1、绘制mars3d写lable标签使用DivGraphic这个API会在代码中动态生成html,但是地图中div郭队会影响性能

    const graphicImg = new mars3d.graphic.DivGraphic({
        attr: data.properties,
        position: data.geometry.coordinates,
        stopPropagation: true,
        style: initStyleOption(data.properties.videoType, data.properties.videoName),
        popup: `<div id="popVideoHLS" style="width: 300px;min-height: 123px">
              </div>`,
        popupOptions: {
            offsetY: getOffset(data.properties.videoType), // 显示Popup的偏移值,是DivGraphic本身的像素高度值
            template: `<div class="video-popup-panel animation-spaceInDown">
                      <div class="video-popup-text">{content}</div>
                      <span class="video-popup-close-button closeButton">×</span>
                </div>`,
            horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
            verticalOrigin: Cesium.VerticalOrigin.CENTER,
        },
    })
    layer.addGraphic(graphicImg)

2、使用BillboardPrimitive代替,也可以写出div效果

        // 创建label
        const graphic = new mars3d.graphic.BillboardPrimitive({
            position: label.geometry.coordinates,
            style: {
                image: imgUrl,
                horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
                verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
                visibleDepth: false,
                distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 10000),
                scaleByDistance: true,
                scaleByDistance_far: 130000,
                // scaleByDistance_farValue: 0.1,
                scaleByDistance_near: 0,
                // scaleByDistance_nearValue: 1,
                label: {
                    text: formatLabel(label.properties.name),
                    horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
                    verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
                    visibleDepth: false,
                    pixelOffset: [0, -75],
                    pixelOffsetScaleByDistance: new Cesium.NearFarScalar(0, 1, 6500, 0),
                    color: color,
                    background: true,
                    backgroundColor: '#fff',
                    backgroundOpacity: 0.7,
                    backgroundPadding: new Cesium.Cartesian2(10, 10),
                    distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 6000),
                    scaleByDistance: true,
                    scaleByDistance_far: 6000,
                    scaleByDistance_farValue: 0.1,
                    scaleByDistance_near: 0,
                    scaleByDistance_nearValue: 1,
                    font_size:50
                },
            },
            attr: label.properties,
        })
        graphic.on(mars3d.EventType.click, (event) => {
            console.log(event, 'event');
            map.flyToGraphic(graphic, {
                radius: 900,
                heading: 359,
                pitch: -47.2,
                duration: 1.5,
            })
        })
        divLayer.addGraphic(graphic)

你可以在label中写定样式,达到文本框的效果

效果呈现

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值