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 ...
随机推荐
- 【全面解禁!真正的Expression Blend实战开发技巧】第二章 你好,UI设计师
原文:[全面解禁!真正的Expression Blend实战开发技巧]第二章 你好,UI设计师 你好,UI设计师 曾几何时我从没想过要与艺术家打交道,但是Silverlight改变了这一切.UI设计师 ...
- Win10《芒果TV》商店版跻身Windows商店《热门免费应用》前12强
2017立春上班的第一天,让人惊喜的好日子,春节过后,Win10<芒果TV>商店版跻身Windows商店<热门免费应用>前12强,露出尖尖头,这个来自广大用户和合作伙伴们一直以 ...
- MEF、MAF和Unity的区别
在刚学习MEF时,经常会问一个问题,那就是MEF和MAF这样的插件框架.和Unity这样的IoC框架到底有什么区别.MEF与MAF(Managed Addin Framework)最大不同在于:前者关 ...
- C#命名约定
推荐的标识命名风格 风格名称 描述 使用建议 示例 Pascal大小写 标识符中每个单词都首字母大写 用于类型名和成员名 CarDeck, DealersHand Camel大小写 除第一个单词以外, ...
- 了解Service
多线程编程: 线程的基本用法: 1. class MyThread extends Thread{ @Override public void run() { //处理具体逻辑 } } new MyT ...
- Oracle emca on linux
http://blog.csdn.net/haibusuanyun/article/details/16338591 bash-3.2$ lsnrctl status LSNRCTL for Lin ...
- delphi 在多线程中使用 CreateOleObject 导致失败(一定要使用CoInitialize和CoUninitialize,举例查询WMI)
原帖地址 http://bbs.csdn.net/topics/390481350 解决办法 procedure DisplayVideoInfo; var wmi, objs, obj : OleV ...
- acl_cpp 的编译与使用
注:因为现在 acl_cpp 已经合并进 acl 项目中,本文仅是介绍了老版本的 acl_cpp 的编译过程,新版本的介绍及编译请参考:acl 框架库简介. acl_cpp 是基于 acl 为基础开发 ...
- delphi android 录像(使用了JMediaRecorder,MediaRecorder的使用方法可参考网上java的相关说明)
delphi xe系列自带的控件都无法保存录像,经网友帮忙,昨天终于实现了录像功能(但有个问题是录像时无画面显示),程序主要使用了JMediaRecorder,MediaRecorder的使用方法可参 ...
- 判断本地系统目录下是否存在XML文件,如果不存在就创建一个XMl文件,若存在就在里面执行添加数据
这是我为项目中写的一个测试的例子, 假如,您需要这样一个xml文件, <?xml version="1.0" encoding="utf-8"?> ...