Skyline WEB端开发5——添加标签后移动
针对于标签或者模型,在skyline上可以进行移动。可以让一个模型可以像无人机似的飞行,或者描述从一个点到另一个点的飞行轨迹。
话不多说,直接上干货。
第一步 添加标签
参考网址:https://www.cnblogs.com/517chen/p/11168665.html
第二步 设置属性
function createLable(){
var label = sgworld.Creator.CreateLabel(labelPos, "北京科技有限公司.\r\n西安办事处\r\n", cLabelPath2, cLabelStyle, sgworld.ProjectTree.FindItem("新建组 ##575097"), "grey_bubble");
//在生成lable对象后,需要设置一个属性,即
lable.Attachment.AutoDetach = false;
}
对于动态对象,AutoDetach设置为默认值 false。一旦摄像机到达动态对象,它会继续按照对象的移动状态来跟踪对象。但是,如果 AutoDetach 设置为 true,一旦摄像机到达对象时,它将停止。如果客户端不断更新对象的位置(例如,作为一个 GPS 更新),它应设置此值(在创建对象的时候)为 false。这样,如果用户飞往这个对象,它后面的摄像机继续。
可理解为如果设置为false,那么当标签进行移动的时候,摄像机的位置会跟随着移动,当停止到某一点的时候,摄像机停止,标签再次移动的时候,摄像机依然随之移动。
如果设置为true,那么当标签进行移动的时候,摄像机的位置会跟随着移动,当停止到某一点的时候,摄像机停止,标签再次移动的时候,摄像机不再随之移动。
第三步 添加监听
//在每一帧渲染前都会触发该方法
sgworld.AttachEvent("OnFrame", OnFrame);
OnFrame事件详解参考 https://www.cnblogs.com/517chen/p/11179572.html
第四步 添加移动方法
1、Lerp
一个坐标以一定比例朝着另一个坐标移动
function OnFrame() {
if(lable != null) {
//默认飞到某一个位置
var Washington = sgworld.Creator.CreatePosition(
116.3912630081,
39.9074812817,
1000,
0,
0.0, // 偏航角
-43.0); // 俯仰角
lable.Position = lable.Position.Lerp(Washington, 1);
}
}
Lerp(
Position, //需要新建一个位置坐标,或者从某个地方读取到的位置坐标
Percentage //移动的比例
)
2、Move
将标签的坐标移动一段距离
function OnFrame(){
if(lable != null){
lable.Position = lable.Position.Move(100, -90, 45);
}
}
Move(
Distance, //移动的距离。
Yaw, //移动坐标的方向。0=北,90=东,180=南,-90=西,-180=南
Pitch //移动坐标的俯仰角。0=水平,1~90=向上飞行,-90~-1=向下飞行
)
3、MoveToward
移动坐标走向另一个坐标指定的距离
function OnFrame() {
if(lable != null) {
//默认飞到某一个位置
var Washington = sgworld.Creator.CreatePosition(
116.3912630081,
39.9074812817,
1000,
0,
0.0, // 偏航角
-43.0); // 俯仰角
lable.Position = lable.Position.MoveToward(Washington, 1);
}
}
MoveToward(
Position, //一个位置坐标,表示坐标朝着已选定的坐标移动
Distance //移动的距离
)
以上就是关于标签或模型的移动的内容。
下面附上完整代码可参考
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<script src="http://apps.bdimg.com/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="data/data.json"></script>
<script language="javascript">
//初始化加载TerraExplorer工程
$(window).load(function () {
try {
var flyPath = "C:\\Users\\admin\\Desktop\\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);
}
catch(ex) {
alert(ex.message);
}
});
//加载事件
function OnProjectLoadFinished(){
//默认飞到某一个位置
var Washington = sgworld.Creator.CreatePosition(
116.3912630081,
39.9074812817,
1000,
0,
0.0, // 偏航角
-45.0); // 俯仰角
sgworld.Navigate.FlyTo(Washington);
}
//坐标点的位置
var lable;
//按照俯仰角进行移动
function move(){
//创建点
var labelPos = sgworld.Creator.CreatePosition(
116.3912630081,
39.9074812817,
10,
2,
0,//Yaw
-60, // Pitch偏航角
-26); // Roll俯仰角); var cLabelStyle = sgworld.Creator.CreateLabelStyle(); cLabelStyle.TextOnImage = false;//设置文本是否显示在图像上。设置true(字在图上),设置false(字在图下)
cLabelStyle.Bold = true;//设置粗体
cLabelStyle.MultilineJustification = "center";//如果有多行文字的话,确定文本对齐方式
cLabelStyle.TextAlignment = "Top";//决定了有关的背景文本的水平和垂直对齐。
// cLabelStyle.MaxViewingHeight = 8000000;//最大高度,如果超过此高度后,该点将隐藏
var cLabelPath = "F:\\myself\\images\\grey_bubble.png";//图片路径
lable = sgworld.Creator.CreateLabel(labelPos, "guanxin"+10, cLabelPath, cLabelStyle, sgworld.ProjectTree.FindItem("新建组 ##575097"), "grey_bubble"+10);
lable.Attachment.AutoDetach = false;
//在每一帧渲染前都会触发该方法
sgworld.AttachEvent("OnFrame", OnFrame);
} function OnFrame(){
if(lable != null){
lable.Position = lable.Position.Move(100, -90, $("#pitch").val());
}
} /*function OnFrame(){
if(lable != null){
//默认飞到某一个位置
var Washington = sgworld.Creator.CreatePosition(
116.3912630081,
39.9074812817,
1000,
0,
0.0, // 偏航角
-43.0); // 俯仰角
lable.Position = lable.Position.Lerp(Washington, 1);
}
} function OnFrame(){
if(lable != null){
//默认飞到某一个位置
var Washington = sgworld.Creator.CreatePosition(
116.3912630081,
39.9074812817,
1000,
0,
0.0, // 偏航角
-43.0); // 俯仰角
lable.Position = lable.Position.MoveToward(Washington, 1);
}
}*/
</script>
<body>
<!--0=水平,+90=从下到上垂直,-90=从上到下垂直-->
俯仰角:<input type="text" name="pitch" id="pitch" />
<input type="button" value="移动" onclick="move()" />
<hr />
<div id="div_tree" style="width:20%;height:700px;float:left;border: rgb(1,158,213) 1px solid;">
<object id="LY_TerraExplorerInformationWindow" classid="CLSID:3a4f9193-65a8-11d5-85c1-0001023952c1" style="width:100%;height:100%;"></object>
</div>
<div id="div_3dWindow" style="height:700px;width:79%;float:left;border: rgb(1,158,213) 1px solid;">
<object id="LY_TerraExplorer3DWindow" classid="CLSID:3a4f9192-65a8-11d5-85c1-0001023952c1" style="width:100%;height:100%;"></object>
</div>
<object id="sgworld" classid="CLSID:3A4F9199-65A8-11D5-85C1-0001023952C1" style="visibility:hidden;height:0 "></object>
</body>
</html>
Skyline WEB端开发5——添加标签后移动的更多相关文章
- Skyline WEB端开发2——添加一个定位点、文本标签
Skyline 添加定位点 sgworld.Creator.CreatePosition CreatePosition( X, //兴趣点的东西方向坐标,即经度 Y, //兴趣点的南北方向坐标,即纬度 ...
- Skyline WEB端开发1——入门
Skyline是一套优秀的三维数字地球平台软件.凭借其国际领先的三维数字化显示技术,它可以利用海量的遥感航测影像数据.数字高程数据以及其他二三维数据搭建出一个对真实世界进行模拟的三维场景.目前在国内, ...
- Skyline Web 端数据浏览性能优化
三维数据的效率一直是个瓶颈,特别是在Web端浏览一直是个问题,在IE内存限制1G的条件下,对于三维数据动不动几十G的数据量,这1G显得多么微不足道.虽然现在三维平台都是分级加载,或者在程序中采用数据分 ...
- 移动端开发的meta标签作用
一.<meta name="viewport" id="viewport" content="width=device-width, initi ...
- 关于移动端开发,vedio标签层级高遮挡蒙版的解决方案
问题描述: 使用famework7框架搭建了一个界面,然后再界面中需要使用蒙版效果,在PC端,ios测试没有问题,在Andriod播放视屏再点击显示蒙版的效果师,视频会遮盖蒙版.修改定位,z-inde ...
- AE开发中添加EngineOrDesktop后仍然有错误
.AO是32位原生组件,一般认为不支持64位系统(道听途说),所以只能在32位环境下进行编译. 在配置管理器中,新建x86后问题解决了
- Web前端开发——HTML基本标签
标题h1-h6 只有h1到h6,没有h7. 一个页面建议只有一个h1 普通文字大小大约介于h3~h4 段落p 段内换行br 段内分组span 预留格式pre 水平线hr
- 渐进式web应用开发---service worker 原理及介绍(一)
渐进式web应用(progressive Web app) 是现代web应用的一种新形式.它利用了最新的web功能,结合了原生移动应用的独特特性与web的优点,为用户带来了新的体验. 一:传统web端 ...
- 淘淘商城项目_同步索引库问题分析 + ActiveMQ介绍/安装/使用 + ActiveMQ整合spring + 使用ActiveMQ实现添加商品后同步索引库_匠心笔记
文章目录 1.同步索引库问题分析 2.ActiveM的介绍 2.1.什么是ActiveMQ 2.2.ActiveMQ的消息形式 3.ActiveMQ的安装 3.1.安装环境 3.2.安装步骤 4.Ac ...
随机推荐
- .NET与 java通用的3DES加密解密方法
C#代码 private void button1_Click(object sender, EventArgs e) { string jiami = textBox1.Text; textBox2 ...
- 常用的shell(备份数据库、备份网站、切割访问日志)
备份网站程序 #!/bin/bash /bin/tar czf /mnt/backup_website/web_$(date +%Y%m%d_%H%M%S).gz.tar /mnt/wwwroot/w ...
- String的本质是一个char*,只是以类的形式提供,使用起来比较方便
String的本质是一个char*,只是以类的形式提供,使用起来比较方便 Class String {private: char* m_data;}摘自<后台开发 核心技术与应用实践__徐晓鑫& ...
- Kinect 开发驱动配置
有几种配置方案 1.openNI+SensorKinect+PCL 的开发环境(pcl 标配) http://blog.csdn.net/chenxin_130/article/details/669 ...
- c#获取电脑运行状态(cpu,内存,网络,系统运行时间)
public class DeviceMonitor { static readonly PerformanceCounter cpuCounter = new PerformanceCounter( ...
- WPF svg 转 xmal
原文:WPF svg 转 xmal 今天wpf里面要用矢量图,美工出的是svg格式的,需要将svg格式的转换为xaml 1.第一个尝试是安装Inkscape,这个软件可以直接将svg另存为xaml,但 ...
- 搭建svn服务器&服务器客户端使用笔记
参考借鉴文章:http://www.cnblogs.com/vijayfly/p/5711962.html 之前尝试着用git管理公司代码,但被一个问题困惑了很久无法解决,那就是git该如何只pull ...
- 详解 Qt 线程间共享数据(使用signal/slot传递数据,线程间传递信号会立刻返回,但也可通过connect改变)
使用共享内存.即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的. Qt 线程间共享数据是本文介绍的内容,多的不说,先来啃内容.Qt线程间共享 ...
- Qt5下OpenGL程序的新写法
在Qt5中,引入了QOpenGL*系列类,以取代Qt4时代的QGL*系列类. 下面是从Qt5例子中抠出的两种OpenGL程序模板,方便参考. 第一种写法: #ifndef TRIANGLEWINDOW ...
- 2015新款 MacBook 用心的测评与试用. 最轻薄的Mac上市
2015新款 MacBook 不一样的测评与试用. 最轻薄的Mac上市了. 直击现场 <HTML开发MacOSApp教程> http://pan.baidu.com/s/1jG1Q58M ...