js skyline地图_Skyline Web 二次开发- 1.地图显示、Position、AttachEvent

本文介绍了如何进行Skyline Web JS的二次开发,包括加载地图工程文件、添加事件监听、创建坐标点并实现飞行到指定坐标。详细讲解了SGWorld66对象的API方法,如AttachEvent、Project.Open、Creator.CreatePosition和Navigate.FlyTo等,帮助开发者理解Skyline的事件处理和地图交互功能。
摘要由CSDN通过智能技术生成

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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值