Skyline Web 二次开发- 1.地图显示、Position、AttachEvent

    Skyline地图数据加载方法,这个是最基础的操作步骤,然后再进行拓展,通过API文档可以查询到所有Js的方法引用说明。

注意事项

在Skyline Web Js 二次开发中,凡是TerraExplorer里面的功能在API中都有对应的方法,可以根据TE里面的菜单名称找到对应的方法(如:Navigate菜单下的所有功能对应API中Navigate下的所有方法),可以方便快捷的进行二次开发,有些功能方法藏的比较深,需要自行理解和发掘。

需求分解

  1. 加载工程文件
  2. 添加事件信息
  3. 创建坐标点位
  4. 飞行到坐标点
  5. 每次移动屏幕相机画面,获取坐标点信息,并显示在消息栏中

方法说明

  • 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源码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<html>
  <script type="text/javascript" >
  /**
   * 初始化
   */
  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);
	}
  </script>
  <body onload = "Init();">
	<!--定义一个TerraExplorer 3D窗口对象-->
	<object id="TE" classid="clsid:3a4f9192-65a8-11d5-85c1-0001023952c1" onmousemove="OnMouseMoved()" style="width: 80%;height: 100%"></object>
    <!--定义TerraExplorer对象SGWorld65-->
    <object id="SGWorld66" classid="CLSID:3A4F9199-65A8-11D5-85C1-0001023952C1" style="visibility:hidden;height:0 "></object>
    <!--定义一个TerraExplorer 信息窗口对象-->
    <object id="TEInformationWindow" classid="CLSID:3a4f9193-65a8-11d5-85c1-0001023952c1" width="15%" height="100%">
	</object>
     </div>
  </body>

</html>

 

转载于:https://my.oschina.net/discussjava/blog/896816

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值