因项目要高web的skyline开发,确切说是terraExplorer pro的开发,参考skyline的官方示例,直接运行javascript的例子(例子代码如下),却爆出错误“对象不支持此属性或方法”,调试发现是SGWorld的属性和方法好像在javascript中不识别,导致不识别的可能原因中,我首先排除了拼写错误,错误的可能只能是声明的对象可能错了,后来发现声明的对象是在“object”标签中实现的,其中有一个“CLSID”,这个标示其实是GUID,它是Globally Unique Identifier的简称,中文翻译为“全局唯一标示符”,在Windows系统中也称之为Class ID,缩写为CLSID,指windows系统对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件分配一个唯一表示它的ID代码,用于对其身份的标示和与其他对象进行区分。问题就出在这里,因为我发现不同terraExplorer pro的版本中声明SGWorld的CLSID是不同的,可能是我的版本与当前示例中的CLSID的正好不同,后来发现果然是,我的版本是6.0的,而示例的版本是针对最新的6.1版本的,这是造成此原因的罪魁祸首啊,改回6.0的版本,即
CLSID:3a4f91b0-65a8-11d5-85c1-0001023952c1,一切ok了
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>HTML Example</title> <script type="text/javascript"> function Init() { try { var flyPath = "http://www.skylineglobe.com/SkylineGlobe/WebClient/PresentationLayer/WebClient/SkyglobeLB.fly"; // attach callback to the load finished event SGWorld.AttachEvent("OnLoadFinished", OnProjectLoadFinished); // Load default developer fly file from www.skylineglobe.com web site. // default load is in async mode SGWorld.Project.Open(flyPath); alert("Opening project " + flyPath + " in async mode"); } catch (e) { alert("Error: " + e.description); } } function OnProjectLoadFinished() { alert("Received project loaded event. Click OK to fly to Washington DC."); var Washington = SGWorld.Creator.CreatePosition(-77.036667, 38.895111, 1500); SGWorld.Navigate.FlyTo(Washington); } </script> </head> <body onload="Init()"> <object id="TE" classid="clsid:3a4f9192-65a8-11d5-85c1-0001023952c1" style="width: 600px;height: 600px"></object> <object id="SGWorld" classid="CLSID:3a4f91b1-65a8-11d5-85c1-0001023952c1" style="visibility: hidden;height: 0"></object> </body> </html>