Skyline地图数据加载方法,这个是最基础的操作步骤,然后再进行拓展,通过API文档可以查询到所有Js的方法引用说明。
注意事项
在Skyline Web Js 二次开发中,凡是TerraExplorer里面的功能在API中都有对应的方法,可以根据TE里面的菜单名称找到对应的方法(如:Navigate菜单下的所有功能对应API中Navigate下的所有方法),可以方便快捷的进行二次开发,有些功能方法藏的比较深,需要自行理解和发掘。
需求分解
加载工程文件
添加事件信息
创建坐标点位
飞行到坐标点
每次移动屏幕相机画面,获取坐标点信息,并显示在消息栏中
方法说明
SGWorld66.AttachEvent(bstrEventName,DispFunc);
添加事件,这里值得一提,Skyline的API文档实在是太烂了,因为在说明里,并没有明确指出具体事件的名称,其实它所指的事件名称就在API文档ISGWorld的列表里面,On打头的都是可使用的事件QAQ。
SGWorld66.Project.Open();
打开工程文件
SGWorld66.Creator.CreatePosition(X,Y,Altitude,AltitudeType,Yaw,Pitch,Roll,Distance);
创建坐标点,X和Y表示坐标值,Altitude为点位的高度值的可选参数,AltitudeType为高度类型的可选参数,Yaw为偏航(即左右旋转度数,范围0-360度,0为北,90为东,180为南,270为西),Pitch为俯仰角度(0为水平面,+90度为仰视最大角度,-90度为俯视最大角度,测试时建议先用俯视角度进行测试比较容易确定具体点位),Roll为翻滚(没用过。),Distance为距离(即离目标点位的距离,这个参数建议最好设置从50开始,否则从原点0进行测试,你会发现视角严重偏离),一般来说设置X,Y,Alititude这3个参数,即可显示出效果,其余的参数用于图片覆盖旋转角度、设置飞行路径等会用到,需要不断尝试
SGWorld66.Navigate.FlyTo(target,Pattern);
飞行到目标位置,target有4种类型(1.对象ID字符串 2.对象ITerraExplorerObject66 3.工程目录树中的GroupID值ProjectTree GroupID 4.坐标点对象IPosition66 object);Pattern为可选参数,即飞行方式,详见API
SGWorld66.Navigate.GetPosition(AltitudeType);
获取导航位置,AltitudeType类型为可选参数,详见API;返回值类型为IPosition66,坐标类型对象,对象属性值详见API
SGWorld66.Window.ShowMessageBarText(Text,Alignment,Timeout);
在消息显示栏中显示信息,Text为文本信息,Alignment为显示的位置的可选参数(0-左 1-中 2-右),Timeout为显示时间的可选参数
Jsp源码
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
/**
* 初始化
*/
function Init() {
try {
var flyPath = "http://192.168.1.224:8090/default0505.fly";
//添加onloadFinished事件
SGWorld66.AttachEvent("OnLoadFinished", OnProjectLoadFinished);
//打开工程
SGWorld66.Project.Open(flyPath);
} catch (e) {
alert("Error: " + e.description);
}
}
/**
*onloadFinished事件方法
*/
function OnProjectLoadFinished() {
//创建位置
var China = SGWorld66.Creator.CreatePosition(116.38752366300,39.99765237460,15000,0,352,-90);
//相机定位到声明的位置
SGWorld66.Navigate.FlyTo(China);
}
/**
*鼠标移动事件
*/
function OnMouseMoved(){
//获取相机当前位置信息
var current = SGWorld66.Navigate.GetPosition();
//在消息栏显示出相机相关信息
SGWorld66.Window.ShowMessageBarText("X:" + current.X +" Y:" + current.Y + " Z:" + current.Altitude + " Yaw:" + current.Yaw);
}