首页 / 浏览问题 / 三维GIS / 问题详情
打开场景问题
31EXP 2017年05月24日
//指定场景的服务器地址
            var sceneAddress = top.GetConfig().conf.dm_scenme_Url;

            //指定图层名称
            var sceneName = SuperMap3D.Singal.SceneName;

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

打开场景时出现"无法获取未定义或 null 引用的属性“Scene”"异常

1个回答

您好,提示这个说明您的scene没有赋值呀。

先把scene设置为全局变量,写了这句scene = sceneControl.get_scene()也就赋值成功了。

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() 
			{
				//获取Realspace控件的场景,控件和场景是一对一的捆绑关系
				scene = sceneControl.get_scene();
				//获取跟踪图层
				trackingLayer = scene.get_trackingLayer3D();
			}

			//控件初始化失败后的回调函数
			function failedCallback() 
			{
				alert("Realspace initialized failed!");
			}

3,389EXP 2017年05月24日
我设置了的啊

//三维地图页面脚本 作者:程贻平 日期:2017年5月15日
var sceneControl = null;
var scene = null;

function initCallback() {
    //将场景的视点移动到中国区域
    /*var camera = new SuperMap.Web.Realspace.Camera(104.348, 28.708, 10288740.0);
     sceneControl.get_scene().get_flyingOperator().flyTo(camera);*/

    //获取Realspace控件的场景,控件和场景是一对一的捆绑关系
    scene = sceneControl.get_scene();
    init();
    //将场景的视点移动到中国区域
    //var bound = new SuperMap.Bounds(73, 4, 136, 54);
    //scene.open(sceneUrl, "Provinces_R");
    //lyr3d = scene.get_layer3Ds().get_item(0);
}
那可能需要你调代码看一下了。看看有没有字母写错之类的。

这是调试的这条语句scene.open(sceneAddress, sceneName);

这样,您先运行一下您这个包里自带的的示范页面,看看能不能打开场景,排除一下js库是否有问题。
...