首页 / 浏览问题 / 三维GIS / 问题详情
地图切换的时候网页卡死
6EXP 2020年12月02日

我要进行一个地图切换的操作 代码如下 每次if判断的时候我都进行了scene.layers.removeAll(); 操作 按理来说网页就会消除资源就不会卡

可是为什么3秒之后网页基本上就卡死了 请问这里是消除语句的问题 还是代码结构的问题 有什么能够解决的办法嘛

setInterval(function () {
    {
        getDataFromBack();
    }
}, 10000);

//请求后端接口,实现动态添加点,并获取获取地图切换后的url
function getDataFromBack() {
    $.ajax({
        type: "get",
        url: "/find",
        async: false,//同步,为了获取返回值
        dataType: "json",
        data: {},
        success: function (data) {
            add(data[0].x, data[0].y, data[0].z);
            // console.log(data);
            mapId = data[0].mapID;
            floor = data[0].floor;
            Xcord = data[0].x;
            url = "";
            if (mapId == 1) {
                if (floor == 1) {
                    url = "http://10.108.251.36:8899/iserver/services/3D-f1-f1/rest/realspace";
                    var viewer = new Cesium.Viewer('cesiumContainer');
                    var scene = viewer.scene;
                    var promise = scene.open(url);
                    scene.layers.removeAll();
                    console.log("移除成功");
                } else if (floor == 2) {
                    url = "http://10.108.251.36:8899/iserver/services/3D-f2-f2/rest/realspace";
                } else if (floor == 3) {
                    url = "http://10.108.251.36:8899/iserver/services/3D-f3-f3/rest/realspace";
                } else if (floor == 4) {
                    url = "http://10.108.251.36:8899/iserver/services/3D-f4-f4/rest/realspace";
                }
            }
        },
    });
    return url;
}

1个回答

您好,您这边是每十秒就调用一次请求然后使用scene.open()方法添加三维服务图层吗?
6,077EXP 2020年12月02日
您好,本来是一秒一次的 ,但是那样太卡没法测试 就改成了10s

因为要根据后台的数据实时的更新前端的位置,所以是这样写的
您每次请求的时候都会执行一次scene.open()吗

您好   我做了修改之后不会卡死了但是网页每秒scene.open()一次 我就没法对地图进行操作了,例如移动放大之后,他就会再刷新一次 变成最开始的样子,请问可以怎么解决这个问题

setInterval(function () {
    {
        getDataFromBack();
    }
}, 1000);

//请求后端接口,实现动态添加点,并获取获取地图切换后的url
function getDataFromBack() {
    $.ajax({
        type: "get",
        url: "/find",
        async: false,//同步,为了获取返回值
        dataType: "json",
        data: {},
        success: function (data) {
            add(data[0].x, data[0].y, data[0].z);
            console.log(data);
            mapId = data[0].mapID;
            floor = data[0].floor;
            Xcord = data[0].x;
            url = "";
            if (mapId == 1) {
                if (floor == 1) {
                    url = "http://10.108.251.36:8899/iserver/services/3D-f2-f2/rest/realspace";
                    scene.layers.remove(promise);
                    var promise = scene.open(url);
                    console.log("移除成功1");
                    // scene.layers.removeAll();
                } else if (floor == 2) {
                    url = "http://10.108.251.36:8899/iserver/services/3D-f2-f2/rest/realspace";
                    scene.layers.remove(promise);
                    var promise = scene.open(url);
                    console.log("移除成功2");
                } else if (floor == 3) {
                    url = "http://10.108.251.36:8899/iserver/services/3D-f3-f3/rest/realspace";
                    scene.layers.remove(promise);
                    var promise = scene.open(url);
                    console.log("移除成功3");
                } else if (floor == 4) {
                    url = "http://10.108.251.36:8899/iserver/services/3D-f4-f4/rest/realspace";
                    scene.layers.remove(promise);
                    var promise = scene.open(url);
                    console.log("移除成功4");
                }
每次scene.open()都是创建了一个新的场景,所以会刷新
...