Cesium--气泡弹窗

参考资料

  首先感谢以下博主们的帮助,本人刚接触Cesium不久,无奈只能拾人牙慧了。

  由于cesium没有自带的点击弹出气泡的功能,所以需要自己去开发一个这样的功能,网络上资源很多,看到基本思路都一致。以下奉上参考网址

  :https://blog.csdn.net/zlx312/article/category/7232371

 

 

实现思路

1、样式表

/*--------------------------气泡弹窗Start---------------------------*/
/*leaflet风格气泡窗口样式模板*/
.trackPopUp {
    display: none;
    color: rgb(255, 255, 255);
    height: 50px;
}

.leaflet-popup {
    position: absolute;
}

.leaflet-popup-close-button {
    position: absolute;
    top: 0;
    right: 0;
    padding: 4px 4px 0 0;
    text-align: center;
    font: 25px/25px Tahoma, Verdana, sans-serif;
    color: rgb(255, 255, 255);
    text-decoration: none;
    font-weight: bold;
    background: transparent;
}

.leaflet-popup-content-wrapper {
    max-height: 200px;
    overflow-y: auto;
    height: 133px;
    padding: 1px;
    text-align: left;
    border-radius: 12px;
    background-image: url('../images/pop/popbackground.png');
}

.leaflet-popup-content {
    margin: 5px 20px;
    line-height: 1.4;
    
}
.leaflet-popup-content div{
    text-align: center;
}

    .leaflet-popup-content div {
        font-size: 18px;
    }

    .leaflet-popup-content table {
        margin-top: 15px;
    }

        .leaflet-popup-content table tr {
            height: 25px;
        }
/*--------------------------气泡弹窗END---------------------------*/

  

 2、只是实现了单个标注点气泡弹窗功能,全部标注可以参考自己循环标注实现,另外地图移动和缩放实时更新窗体位置,除了更改源码,暂时没有太好的办法,因此此处未实现,当视图变化时,窗体会隐藏。

function (viewer) {
        var handler3D = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
        var scene = viewer.scene;
        var infoDiv = '<div id="trackPopUp" class="trackPopUp">' +
			                 '<div id="trackPopUpContent" class="leaflet-popup" style="top:5px;left:0;">' +
	                           '<a class="leaflet-popup-close-button" href="#">×</a>' +
	                           '<div class="leaflet-popup-content-wrapper">' +
	                             '<div id="trackPopUpLink" class="leaflet-popup-content"></div>' +
	                           '</div>' +
	                         '</div>' +
			           '</div>';
        $("#cesiumContainer").append(infoDiv);
        //绑定鼠标单击
        handler3D.setInputAction(function (movement) {
            var pick = scene.pick(movement.position);
            if (pick && pick.id) {
                $('#trackPopUp').show();
                var content = '<div>' + pick.id._name + '</div><table ><tbody>';
                for (var i = 0; i < pick.id._monitoItems.length; i++) {
                 content += '<tr><td>' + pick.id._monitoItems[i].name + ':</th><td>' + pick.id._monitoItems[i].value + pick.id._monitoItems[i].units + '</td></tr>';                  
                }
                content += '</tbody></table>'
                var obj = { position: movement.position, content: content };
                infoWindow(obj);
                function infoWindow(obj) {
                    var picked = scene.pick(obj.position);
                    if (Cesium.defined(picked)) {
                        var id = Cesium.defaultValue(picked.id, picked.primitive.id);
                        if (id instanceof Cesium.Entity) {
                            $(".cesium-selection-wrapper").show();
                            $('#trackPopUpLink').empty();
                            $('#trackPopUpLink').append(obj.content);
                            function positionPopUp(c) {
                                var x = c.x - ($('#trackPopUpContent').width()) / 2;
                                var y = c.y - ($('#trackPopUpContent').height());
                                $('#trackPopUpContent').css('transform', 'translate3d(' + x + 'px, ' + y + 'px, 0)');
                            }
                            var c = new Cesium.Cartesian2(obj.position.x, obj.position.y);
                            $('#trackPopUp').show();
                            positionPopUp(c); // Initial position
                            $('.leaflet-popup-close-button').click(function () {
                                $('#trackPopUp').hide();
                                $('#trackPopUpLink').empty();
                                $(".cesium-selection-wrapper").hide();
                                return false;
                            });
                            return id;
                        }
                    }
                }
            }
            else {
                $('#trackPopUp').hide();
            }

        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
        //绑定地图移动
        handler3D.setInputAction(function (movement) {
            $('#trackPopUp').hide();
        }, Cesium.ScreenSpaceEventType.LEFT_UP);
        //绑定地图缩放
        handler3D.setInputAction(function (movement) {
            $('#trackPopUp').hide();
        }, Cesium.ScreenSpaceEventType.WHEEL);
        //绑定滚轮点击事件
        handler3D.setInputAction(function (movement) {
            $('#trackPopUp').hide();
        }, Cesium.ScreenSpaceEventType.MIDDLE_DOWN);
    },

  

 

 

结果展示

  

 

转载于:https://www.cnblogs.com/cijian005/p/9309779.html

### 回答1: cesium-popup-es6是一个基于ES6语法编写的Cesium.js的弹窗组件,用于在Cesium地图上显示自定义的弹窗内容。 这个组件主要包含了以下几个部分: 1. Popup类:这是弹窗的主要类,负责创建和管理弹窗的各种属性和方法。通过使用Popup类,可以很方便地在地图上创建弹窗,并设置弹窗的位置、大小、内容等。 2. 事件监听:cesium-popup-es6还提供了一些事件监听的方法,可以在弹窗的打开、关闭以及其他交互操作时进行相应的处理。例如,可以监听鼠标点击事件来关闭弹窗,或者监听地图的移动事件来更新弹窗的位置。 3. 样式定制:该组件允许用户通过设置自定义的CSS样式来定制弹窗的外观和风格。这使得用户可以根据自己的需要来修改弹窗的颜色、字体、边框等样式属性,从而实现个性化的弹窗显示效果。 4. 兼容性:cesium-popup-es6能够很好地与Cesium.js的其他功能和插件进行集成,同时对不同的浏览器和设备也具备良好的兼容性。这意味着无论是在PC端还是移动端,无论是在Chrome还是在Safari等浏览器上,cesium-popup-es6都能够正常运行。 总的来说,cesium-popup-es6文档提供了关于如何使用和定制这个弹窗组件的详细说明,方便开发者在Cesium.js地图项目中加入自定义的弹窗功能。无论是展示地理信息、交互操作还是其他相关需求,cesium-popup-es6都能够帮助开发者实现一个易于使用和美观的弹窗效果。 ### 回答2: cesium-popup-es6 是一个基于 Cesium.js 的弹出窗口组件,该组件使用 ES6 编写。它为用户提供了在 Cesium 场景中高度可定制的弹出窗口功能。 组件的文档详细介绍了 cesium-popup-es6 的使用方法和各个配置项的说明。首先,你需要通过 npm 或者其他构建工具下载并引入该组件。然后,在你的代码中创建一个 Popup 实例并传入相应的参数,包括弹出窗口的内容、位置、大小、样式等。 文档中还介绍了组件的主要功能,包括弹出窗口显示和隐藏的方法,以及与 Cesium 场景的交互。你可以通过调用 show 方法来显示弹出窗口,通过调用 hide 方法来隐藏弹出窗口。组件还提供了许多配置项,例如你可以自定义弹出窗口的样式、位置以及与其它元素的交互等。 文档中也提供了丰富的示例代码,以帮助用户更好地理解和使用 cesium-popup-es6 组件。这些示例代码覆盖了各种场景,包括在固定位置显示弹出窗口、在鼠标点击位置显示弹出窗口等。 总的来说,cesium-popup-es6 文档提供了详细的使用说明和示例代码,帮助用户了解和使用该弹出窗口组件。用户可以根据自己的需求进行定制,实现丰富多样的弹出窗口效果。 ### 回答3: cesium-popup-es6 是一个基于ES6语法的Cesium.js库的文档。 该文档主要用于指导开发者在使用cesium-popup-es6库时的操作步骤和相关功能的使用方法。 文档的目录结构清晰明了,按照功能模块进行分类,方便开发者快速找到需要的信息。 在文档的开头部分,首先介绍了cesium-popup-es6的基本概述,包括其功能特点和适用场景,帮助开发者了解该库的作用和优势。 接下来,文档详细介绍了cesium-popup-es6的安装和配置步骤。通过简明的指导,开发者可以快速将该库引入到自己的项目中,并进行相应的配置。 然后,文档详细说明了cesium-popup-es6库的各种功能和使用方法。比如,如何创建和定位弹出窗口、如何设置窗口内容和样式、如何捕获窗口的事件等等。每一项功能都给出了具体的代码示例和详细的说明,方便开发者理解和应用。 文档还提供了一些常见问题的解答和一些建议的最佳实践,帮助开发者在使用cesium-popup-es6库时避免一些常见的问题和错误。 最后,文档附带了一些附录,包括cesium-popup-es6的API参考和一些相关的资源链接,方便开发者查阅进一步的信息和深入理解该库。 总之,cesium-popup-es6 文档是一份详尽而全面的文档,对于开发者学习和使用cesium-popup-es6库非常有帮助,可以提高开发效率并简化开发过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值