首页 / 浏览问题 / 三维GIS / 问题详情
iserver上发布的三维场景怎样调用到自己的html页面中?
56EXP 2019年09月26日

比如说,我要加载这个链接中的场景:http://localhost:8090/iserver/services/3D-CBD/rest/realspace/scenes/CBD.openrealspace

相关的js代码如下这样写有什么不对?

var scene = null;
            var sceneControl = null;
            var htmlUrl = localhost:8090;
            var altitudeMode = 0;
            var tag = null;
            var index = 0;
            //判断网页的打开方式是本地打开还是通过网络打开
            //不同的打开方式url赋值不同
            if(htmlUrl == "")
            {
                htmlUrl = "http://localhost:8090";
            }
            else
            {
                htmlUrl = "http://" + htmlUrl;
            }
            var sceneUrl = htmlUrl + "/iserver/services/3D-CBD/rest/realspace";

            function onPageLoad() {
                //初始化三维场景控件
                try{
                    //初始化三维场景控件实例,参数为包含控件的HTML元素
                    sceneControl = new SuperMap.Web.UI.Controls.SceneControl($get("sceneControlDiv"), initCallback, failedCallback);
                }catch(e){
                    //若没有安装插件,则抛出该异常
                    if (e.name == SuperMap.Web.Realspace.ExceptionName.PlugInNotInstalled) {
                        var url = htmlUrl + "/iserver/iClient/for3D/plugin/Setup.exe";
                        document.write("<a href='"+url+"'>未检测到 SuperMap iClient3D for  Plugin 插件,请单击此处下载并安装插件。</a>");
                        return;
                    }
                    //若使用非IE浏览器,则抛出该异常
                    else if (e.name == SuperMap.Web.Realspace.ExceptionName.BrowserNotSupport) {
                        document.write("<p>SuperMap iClient3D for  Plugin 目前仅支持 InternetExplorer 浏览器,请更换浏览器后重新尝试加载本页面。</p>");
                        return;
                    }
                    //抛出其他异常
                    else{
                        alert(e.message);
                    }
                }
            }

            //控件初始化完成后的回调函数,初始化完成之后才能进行数据加载
            function initCallback() {
                //获取地球控件场景,控件和场景是一对一的捆绑关系
                scene = sceneControl.get_scene();

                //指定场景的服务器地址
                var sceneAddress = sceneUrl;

                //指定场景名字
                var sceneName = "CBD";

                //打开场景
                scene.open(sceneUrl, sceneName);
            }

1个回答

大致看了下代码,感觉没什么问题。如果这个代码没有打开场景,那么建议做如下几个检查:

1、检查安装的插件客户端版本和代码调用的插件客户端版本是否一致。

2、设置断点,看看走到了哪一步出现了问题。
5,560EXP 2019年09月26日
...