首页 / 浏览问题 / 三维GIS / 问题详情
vue中,mounted中视图改变方法为返回相机视角坐标,进入页面,视角不能移动
35EXP 2022年05月18日

使用产品:iserver 10i   操作系统:win10 x64

数据类型:文件型

问题详细描述:

第一个问题:为在前端实现随着相机视角的移动,同时返回相机位置的数据。在vue框架中的mounted中使用this.viewer.camera.changed.addEventListener为相机移动绑定方法 ,在绑定方法中返回相机位置,加载页面会出现两种情况,一是三维不能加载,二是三维加载完成后视角无法移动。

第二个问题:这个绑定方法会有一个Number类型的自动返回参数,按照方法描述来看,应该返回的参数是视角位置,然而却仅仅只有一个double类型数字,希望可以帮助解释一下一个数字的意义

  mounted() {
    // DOM初始化完成进行地图初始化
    if (typeof Cesium !== "undefined") {
      window.startupCalled = true;
      this.onload(Cesium);
    }
    this.viewer.camera.changed.addEventListener(function (position) {
     console.log(this.viewer.camera.position);
    });
  },

1个回答

1.建议您设置一个标记,放置重复调用,如下代码的flag所示:let viewer = getViewer();
    let flag = false;//防止重复调用
    viewer.scene.camera.changed.addEventListener(function () {
        //获取当前相机高度
        let height = Math.ceil(viewer.camera.positionCartographic.height);
        if (height > 100000) {
            if(flag){return}
            flag = true;
            //设置地图环境光,调整地图颜色等操作
            //...
        } else {
            if(!flag){return}
            flag = false;
            //设置地图环境光,调整地图颜色等操作
            //...
        }
    })

2.您是说返回的position吗,这个应该是一个平面坐标,您确定是仅有一个double数字吗?方便截图发一下返回值吗
4,101EXP 2022年05月18日

首先很感谢您的回复,卡死问题已顺利解决!

至于第二个问题中changed方法中返回值,我已贴图见下,每一行都是一个单独的返回值。

您好,您需要这个返回值是需要做什么用呢?这个返回值是方法自带的返回值,如果说实际用处的话是不大的。
看到这个方法的命名,本以为是移动结束的视角坐标,想直接拿来用,如果没意义的话就不考虑了。

感谢您的回复。
...