针对于标签或者模型,在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——添加标签后移动的更多相关文章

  1. Skyline WEB端开发2——添加一个定位点、文本标签

    Skyline 添加定位点 sgworld.Creator.CreatePosition CreatePosition( X, //兴趣点的东西方向坐标,即经度 Y, //兴趣点的南北方向坐标,即纬度 ...

  2. Skyline WEB端开发1——入门

    Skyline是一套优秀的三维数字地球平台软件.凭借其国际领先的三维数字化显示技术,它可以利用海量的遥感航测影像数据.数字高程数据以及其他二三维数据搭建出一个对真实世界进行模拟的三维场景.目前在国内, ...

  3. Skyline Web 端数据浏览性能优化

    三维数据的效率一直是个瓶颈,特别是在Web端浏览一直是个问题,在IE内存限制1G的条件下,对于三维数据动不动几十G的数据量,这1G显得多么微不足道.虽然现在三维平台都是分级加载,或者在程序中采用数据分 ...

  4. 移动端开发的meta标签作用

    一.<meta name="viewport" id="viewport" content="width=device-width, initi ...

  5. 关于移动端开发,vedio标签层级高遮挡蒙版的解决方案

    问题描述: 使用famework7框架搭建了一个界面,然后再界面中需要使用蒙版效果,在PC端,ios测试没有问题,在Andriod播放视屏再点击显示蒙版的效果师,视频会遮盖蒙版.修改定位,z-inde ...

  6. AE开发中添加EngineOrDesktop后仍然有错误

    .AO是32位原生组件,一般认为不支持64位系统(道听途说),所以只能在32位环境下进行编译. 在配置管理器中,新建x86后问题解决了

  7. Web前端开发——HTML基本标签

    标题h1-h6 只有h1到h6,没有h7. 一个页面建议只有一个h1 普通文字大小大约介于h3~h4 段落p 段内换行br 段内分组span 预留格式pre 水平线hr

  8. 渐进式web应用开发---service worker 原理及介绍(一)

    渐进式web应用(progressive Web app) 是现代web应用的一种新形式.它利用了最新的web功能,结合了原生移动应用的独特特性与web的优点,为用户带来了新的体验. 一:传统web端 ...

  9. 淘淘商城项目_同步索引库问题分析 + ActiveMQ介绍/安装/使用 + ActiveMQ整合spring + 使用ActiveMQ实现添加商品后同步索引库_匠心笔记

    文章目录 1.同步索引库问题分析 2.ActiveM的介绍 2.1.什么是ActiveMQ 2.2.ActiveMQ的消息形式 3.ActiveMQ的安装 3.1.安装环境 3.2.安装步骤 4.Ac ...

随机推荐

  1. WPF常见内存泄露

    Event handlers leak This type of leak occurs when subscribing an object (let's call it listener) to ...

  2. Android项目实战(四十四):Zxing二维码切换横屏扫描

    原文:Android项目实战(四十四):Zxing二维码切换横屏扫描 Demo链接 默认是竖屏扫描,但是当我们在清单文件中配置横屏显示的时候: <activity android:name=&q ...

  3. Struts2之Struts2

    Struts2-2.5.5版本是目前为止最新的版本了,相对于之前的2.3版本以及再之前的版本而言,新版本改动了很多. 好了,废话不多说,GO CODE! 基本jar包: web.xml核心配置,这里要 ...

  4. 零元学Expression Blend 4 - Chapter 37 看如何使用Clip修出想要的完美曲线(上)

    原文:零元学Expression Blend 4 - Chapter 37 看如何使用Clip修出想要的完美曲线(上) 几何外部的 UIElement 会在呈现的配置中以视觉化方式裁剪. 几何不一定要 ...

  5. missing equal sign

    "UPDATE TB_BOOKINGSET REC_LOC_CODE = ?,CUSTOMER_ADDR?WHERE BOOKING_NO=? AND TRANSPORT_MODE=? &q ...

  6. Android实现dialog时候弹出软键盘dialog移位问题

    Window win = getWindow(); WindowManager.LayoutParams params = win.getAttributes(); win.setSoftInputM ...

  7. delphi控件安装(安装ODAC、TeeChart、TServerSocket、TWSocketServer、TComm)

    一.oracle插件安装delphi7如何安装oracle access控件 假设ODAC主目录在 D:\dzj\odac Delphi7主目录在 D:\Program Files\Borland\D ...

  8. Angucomplete —— AngularJS 自动完成输入框

    分享 <关于我> 分享  [中文纪录片]互联网时代                 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...

  9. 获取函数的地址(三种方法,分别是@,Addr,MethodAddress)

    问题来源: http://www.cnblogs.com/del/archive/2008/07/30/1039045.html#1272783 在编译器看来, 重载函数根本就是完全不同的几个函数, ...

  10. 生成sql server 数据库 脚本的 存储过程和调用

    USE [db_datadown] GO /****** Object: StoredProcedure [dbo].[GetTBScript] Script Date: 03/05/2015 09: ...