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 ...
随机推荐
- Win8 Metro(C#)数字图像处理--2.48Canny边缘检测算法
原文:Win8 Metro(C#)数字图像处理--2.48Canny边缘检测算法 [算法说明] Canny边缘检测算法可以分为4步:高斯滤波器平滑处理.梯度计算.非极大值抑制.双阈值边缘检 测和 ...
- Visual Studio查找中文的正则表达式
原文: Visual Studio查找中文的正则表达式 经常有这样的需求:项目代码中有一些输出信息是中文写的,不过现在要做国际化,代码""中写的中文都要改成英文.这样就需要将代码中 ...
- EF 里的 join and Group Join
join ); pageCount = _db.Orders.Count(); return _db.Orders.OrderByDescending(c=>c.ID).Skip(skip).T ...
- Python:Pandas学习
import pandas as pd import numpy as np s = pd.Series([1, 3, 6, np.nan, 44, 1]) df= pd.DataFrame(np.r ...
- VPS用来配置上网外,还可以做一个同步盘
我曾经在一个活动的博文里说过,男人必须要有一个VPS和一个树莓派,VPS这个东西,以后会是中国男人的一种必备技能,今天又有一个小伙伴请教我VPS的用法,我就简单说说我目前使用的情况.首先我希望你能有点 ...
- 【Windows Universal Platform】只是学习笔记 - 开始
我是初学,之前没有windows/windows phone的应用开发经验:开博的目的只是记录和督促自己学习. 心血来潮也好,或是个人喜好的原因,想学着自己开发APP了(PS:以前做过web 开发) ...
- asp.net mvc中使用jquery H5省市县三级地区选择控件
地区选择是项目开发中常用的操作,本文讲的控件是在手机端使用的选择控件,不仅可以用于实现地区选择,只要是3个级别的选择都可以实现,比如专业选择.行业选择.职位选择等.效果如下图所示: 附:本实例asp. ...
- 共识协议——RAFT&PBFT
区块链是一个没有中央权威的分布式对等系统.虽然权力下放可以防止各方的腐败行为,但是它必需要有一个可靠的共识协议来作出决策,让分散在世界各地的节点可以形成一致的意见.常见的共识算法有比特币采用的POW, ...
- Laravel中我们登录服务器通过 Tinker 手动创建后台管理用户
Laravel中我们可以登录到服务器通过 Tinker 手动创建后台用户 laravel中tinker命令的作用是用来调试laravel,可以打印变量或对象信息,显示函数代码,对数据库写入和查询数据. ...
- 生产环境MySQL优化
a:硬件的优化: 1. 采用64位cpu,cpu至少4颗,L2缓存越大越好2. 内存要大,32-64G运行1-2个实例,96-128G运行3-4个实例3. 机械盘选用sas盘,转速15000以上,有可 ...