cesium实现自定义弹窗

文章详细描述了一个使用Cesium库创建自定义弹窗的过程,包括弹窗内容的Vue组件渲染、位置更新以及如何处理因场景拖动导致的弹窗偏移问题。通过调整底部偏移高度和监控场景渲染事件,确保弹窗能正确跟随地图坐标显示。

cesium实现自定义弹窗

弹窗内容渲染类

/**
 * @descripion: 弹窗渲染类
 */

import Vue from "vue";

export default class Bubble {
   
   

    /**
     *
     * @param viewer 场景
     * @param position  弹窗位置
     * @param propsData 弹窗内部的属性数据值 {k:v}
     * @param bubbleType 弹窗类型 vue组件
     * @param offsetHeight 底部偏移高度,弹窗底部偏移高度需要设置一个合适的值,否则很容易导致场景拖动的时候,弹窗存在偏移
     */
    constructor(viewer, position, bubbleType, propsData, offsetHeight) {
   
   
        this.viewer = viewer;
        this.offsetHeight = offsetHeight;
        this.position = position;

        // 判断弹窗内容是否是vue组件文件
        if (!bubbleType || !bubbleType['beforeCreate'] || !bubbleType['render']) {
   
   
            throw new Error('弹窗类型不正确!')
        }

        let WindowVm = Vue.extend(bubbleType);

        // 根据模板创建一个面板
        this.vmInstance = new WindowVm({
   
   
            propsData: propsData
        }).$mount();
        this.vmInstance.closeEvent = e => {
   
   
            this.close();
        }
        // 将字符串模板生成的内容添加到DOM上
        this.viewer.cesiumWidget.container.appendChild(this.vmInstance.$el);

        this.addPostRender();
    }

    //添加场景事件
    addPostRender() {
   
   
        this.viewer.scene.postRender.addEventListener(this
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值