cesium如何让自定义气泡弹窗位置固定

Cesium源码 · wmwstz · 于 5年前 发布 · 8989 次阅读

自己已经实现了弹窗,但是每次点击模型不同的位置,弹窗位置也不同,有没有什么方法能让够无论点击模型的什么位置,弹窗的位置固定。

共收到 4 条回复 osgb
admin#15年前 0 个赞
  1. 你的弹窗是做到坐标系里面的infoBox还是单纯的网页div
  2. 如果你的弹窗是做到坐标系里面的就简单了,你只需要获取当前pick模型的position也就是坐标,然后把你的infoBox放到对应坐标即可。
  3. 如果你是嵌入的类似于div之类的基于html的浮动块,建议不一定准确,无论怎么放你的弹窗都可能有问题,除非,当鼠标键盘交互的时候隐藏弹窗,然后获取点击时基于屏幕的xy坐标即可。
wmwstz#25年前 0 个赞

是在坐标系里面的。我把那个模型的坐标拿出来给气泡,但是气泡的位置是第一次点击模型时候出现的位置,之后再点击其他模型,气泡位置就不会动,不知道是不是我这个函数有问题

   var id = Cesium.defaultValue(picked.id, picked.primitive.id);
   if (Cesium.defined(id)) {
                $('#trackPopUpLink').empty();
                $('#trackPopUpLink').append(obj.content);
                //新气泡窗口位置更新
                var c = new Cesium.Cartesian2(popUpx[id-1], popUpy[id-1]);
                        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)');
                        }
                        positionPopUp(c); // 更新位置
                        $('#trackPopUp').show();
admin#35年前 0 个赞
  1. 你把c打印出来看对不对。
  2. 如果每次点击c都不一样,那估计就是没更新上。
  3. 你加个断点看看positionPopUp是否执行。 PS: 你用的div的坐标?但是你里面是一个三维空间啊,你的trackPopUpcontent和cesium坐标系有关系吗?
wmwstz#45年前 0 个赞

我是把模型的经纬度给弹窗,然后转换成屏幕坐标,但是好像是有误差,就是弹窗出现的位置都是偏离模型的,是不是要准备两套坐标?

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics