cesium 漫游飞行_Cesium 之三维漫游飞行效果实现篇
本篇实现cesium三维漫游飞行效果,效果图如下:
实现的思路如下:
1.初始化函数:
Init:function(cesium,drawHelper){
this.cesium = cesium; //cesium对象
this.drawHelper = drawHelper;//drawHelper对象
this.InitEvent();
this.loadData();
},
三维漫游的初始化参数cesium、drawHelper,其中cesium是cesium创建对象,drawHelper是绘制工具创建对象;InitEvent()界面监听事件;loadData()漫游列表信息
2.漫游路线列表信息:
loadData:function () {
//请求三维漫游轨迹
$.ajax({
url: "/information/fly/queryAll",
type: 'post',
async: true,//异步
dataType: 'json',
success: function (data) {
var html=''
if (data.length>0) {
for(var i=0;i
var flydata=data[i];
html+='
'+
// '
'+
'
'+flydata.name+''+
'
飞行'+
'
修改'+
'
删除'+
"
" + flydata.id + "" +
"
" + flydata.geojson + "" +
"
" + flydata.position + "" +
"
" + flydata.orientation + "" +
'
';
}
$("#overFly_table tbody").html(html);
$('#overFly_table').find('td:eq(4)').hide();//隐藏id字段列
$('#overFly_table').find('td:eq(5)').hide();//隐藏geojson字段列
$('#overFly_table').find('td:eq(6)').hide();//隐藏position字段列
$('#overFly_table').find('td:eq(7)').hide();//隐藏orientation字段列
//表格---行点击事件
bxmap.FlyCesium.flyTableOnclick();
}
else {
}
}
});
}
3.监听事件:
(1)开始飞行:
//开始飞行
$("#start_Fly3DPaths").click(function(){
bxmap.FlyCesium.cesium.showFly3DPaths(bxmap.FlyCesium.draw3DObj);
});
/**
* 飞行漫游路径
* @method showFly3DPaths
* @param pathsData 飞行路径信息,格式如下:{"orientation":{"heading":2.411783930363565,"pitch":-0.21097267398444197,"roll":0.0015622392231300353},"position": {"x":-2206260.239730831,"y":5510911.392077349,"z":2331987.10863007}, "geometry":{"type": "LineString", "coordinates": [[101.80089882736969, 26.60700234866561], [101.80082205161088, 26.607156056057718]]} }
* @param position 飞行路径跳转位置
* @return
*/
function computeCirclularFlight() {
var property = new Cesium.SampledPositionProperty();
for (var i = 0; i < position.length; i++) {
if (i == 0) {
var time = Cesium.JulianDate.addSeconds(start, i, new Cesium.JulianDate());
//var _position = Cesium.Cartesian3.fromDegrees(position[i].x, position[i].y, 1170);
var _position = Cesium.Cartesian3.fromDegrees(position[i].x, position[i].y, 0);
property.addSample(time, _position);
}
if (i < 10000 && i > 0) {
var position_a = new Cesium.Cartesian3(property._property._values[i * 3 - 3], property._property._values[i * 3 - 2], property._property._values[i * 3 - 1]);
if (i < 976) {
//var _position = Cesium.Cartesian3.fromDegrees(position[i].x, position[i].y, 1170);
var _position = Cesium.Cartesian3.fromDegrees(position[i].x, position[i].y, 0);
}
else if (i > 975 && i < 986) {
//var _position = Cesium.Cartesian3.fromDegrees(position[i].x, position[i].y, 1170 + 20 * (i - 980));
var _position = Cesium.Cartesian3.fromDegrees(position[i].x, position[i].y, 0);
}
else if (i > 985) {
//var _position = Cesium.Cartesian3.fromDegrees(position[i].x, position[i].y, 1170 + 200);
var _position = Cesium.Cartesian3.fromDegrees(position[i].x, position[i].y, 0);
}
var positions = [Cesium.Ellipsoid.WGS84.cartesianToCartographic(position_a), Cesium.Ellipsoid.WGS84.cartesianToCartographic(_position)];
var a = new Cesium.EllipsoidGeodesic(positions[0], positions[1]);
var long = a.surfaceDistance;
var _time = long/50;
var time = Cesium.JulianDate.addSeconds(property._property._times[i - 1], _time, new Cesium.JulianDate());
property.addSample(time, _position);
}
}
return property;
}
(2)暂停飞行:
//暂停飞行
$("#pause_Fly3DPaths").click(function(){
bxmap.FlyCesium.cesium.pauseFly3DPaths();
});
(3)向前飞行:
//向前飞行
$("#playForward_Fly3DPaths").click(function(){
bxmap.FlyCesium.cesium.playForwardFly3DPaths();
});
(4)向后飞行:
//向后飞行
$("#playReverse_Fly3DPaths").click(function(){
bxmap.FlyCesium.cesium.playReverseFly3DPaths();
});
(5)退出飞行:
//退出飞行
$("#stop_Fly3DPaths").click(function(){
$("#cesiumFly3DPaths").click();
bxmap.FlyCesium.cesium.stopFly3DPaths();
});
(6)设定路线:
//设定路线
$("#draw_Fly3DPaths").click(function(){
if(!bxmap.FlyCesium.drawHelper){
bxmap.FlyCesium.drawHelper = new DrawHelper(bxmap.FlyCesium.cesium.cesiumViewer);
}
bxmap.FlyCesium.draw3DObj = bxmap.FlyCesium.cesium.DrawFly3DPaths(bxmap.FlyCesium.drawHelper);
});
(7)保存路线
var draw3DObj=JSON.stringify(bxmap.FlyCesium.draw3DObj); //将JSON对象转化为JSON字符
var TbFly={name:$("#FlyAdd_name").val(),geojson:draw3DObj};
//保存三维漫游轨迹
$.ajax({
url: GLOBAL.domainRest + "/information/fly/saveOrUpdate",
type: 'post',
async: true,//异步
dataType: 'json',
data:TbFly,
success: function () {
$("#overFlyClick").click();
jDialog.dialog({
title: "提示信息",
modal: true,// 非模态,即不显示遮罩层
autoClose: 1000,
content: "保存成功"
});
dialog.close();
bxmap.FlyCesium.cesium.clearFly3DPaths();
}
});
cesium 漫游飞行_Cesium 之三维漫游飞行效果实现篇相关推荐
- Cesium 视角跟随-第一人称视角漫游
Cesium 视角跟随-第一人称视角漫游 实现思路 核心代码 完整代码 在线示例 2023年4月19日更新-搞了一个 Cesium 镜像,欢迎使用:沙盒示例 和 API 作为三维项目,以第一人称视角漫 ...
- ArcScene三维漫游
程序功能: 将dwg的region实体转化为ArcGis的MultiPatch三维实体入ArcSde库,在客户端的ArcScene控件里加载图层,进行三维漫游 三维飞行效果图:鼠标左键单击可加快飞行速 ...
- 三维漫游的轨迹怎么设计?像电影中移动摄像机一样漫游,flyroute设计,3d镜头线设计
三维城市漫游镜头设计,电影级一镜到底漫游效果 一.了解漫游基础 三维可视化的主要作用是通过三维方式去更好的表达世界,在所有三维可视化中,漫游功能是最具视觉表现力的. 比如机场可视化,跟随飞机在空中飞行 ...
- GoogleEarth二次开发平台指南(3) ---如何获取点坐标、绘制线路和区域、沿指定线路三维漫游
上一文讲解了谷歌地球二次开发中遇到如何把图片.模型导入到谷歌地球的指定位置的问题.除了用户将自己的图片.模型导入到谷歌地球中来构建自己的三维场景外,获取点坐标.标注点位置.绘制线条和区域界线.沿指定线 ...
- Three.js+mapbox 快速构建三维城市可视化效果,三维城市漫游!
效果预览 https://www.bilibili.com/video/BV1d84y1W7dN/ 城市模型下载地址 https://pan.baidu.com/s/1d1sV74ufeK2rEBZp ...
- 华硕fx60vm拆机图解_飞行堡垒fx60vm怎么样 华硕飞行堡垒FX60VM全面深度评测图解...
飞行堡垒FX60VM是华硕旗下的游戏本产品,飞行堡垒FX60VM配备了i7 6700HQ四核处理器以及NVIDIA GeForce GTX 1060独立显卡.8GB DDR4内存.256GB固态硬盘和 ...
- 鸟和飞机都能飞行,使用代码写一个方法完成鸟的子类比如鹰,麻雀的飞行,还有飞机的飞行
需求:鸟和飞机都能飞行,使用代码写一个方法完成鸟的子类比如鹰,麻雀的飞行,还有飞机的飞行 /* 1:需求:鸟和飞机都能飞行,使用代码写一个方法完成鸟的子类比如鹰,麻雀的飞行,还有飞机的飞行提示:写一个 ...
- 漫游消息服务器出错,消息漫游
消息漫游 服务设置 默认设置:关闭 是否增值服务:是 功能介绍 同一用户所有已登录设备都可以获取该用户在所有设备上的历史消息: 用户可从服务器获取全部历史消息,也可以根据本地数据库存储的消息有选择的获 ...
- cesium雷达图_Cesium专栏-雷达反射率(附源码下载)
Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以 ...
- cesium环境搭建(创建三维地球)
cesium是一个用于开发三维地球的开源javascript库.下面就来讲解cesium的环境配置来实现helloworld. 环境配置 一.下载cesium包. 可以从github下载源码包,也从官 ...
最新文章
- OC 组合实现多继承
- 从蜘蛛网到物联网 这张网人类织了多久?
- Xcode10 修改代码后,编译没有反应,或者导入头文件没有提示
- 2018个人写作计划~
- fir.im 全名 Fly It Remotely ,是一个为移动开发者服务,FIR一个免费的App托管平台
- Golang gin框架:GET请求示例
- java枚举比较大小写_Spring 3.0 MVC绑定枚举区分大小写
- 有序集合使用与内部实现原理
- linux kernel基本构成的内容有下列哪些项_Linux内核线程kernel thread详解
- 关于大型网站技术演进的思考(十四)--网站静态化处理—前后端分离—上(6)...
- poj 1276 Cash Machine(多重背包)
- Java、Java Web面试题(来源于MLDN、北方网)
- 中国地震数据集-包含经纬度及深度(2000-2020年)
- 大数据面试题_数据仓库篇
- 《凤凰架构》读后感 - 演进中的架构
- 小学语文必背的古诗词分类汇总,建议给孩子收藏!
- win7 此计算机无法连接到家庭组,Win7旗舰版无法进入家庭组如何处理
- 服务器地址显示169.254,IP地址是169.254开头的
- js在打开新页面的时候用新的标签页打开并且在关闭打开的页面的时候刷新父页面的方法...
- 已嵌入微信公众号内的小图聊天机器人介绍和使用说明
热门文章
- GWAS相关的曼哈顿图-SNP密度图
- Mozilla5.0的含义
- 离群值是什么意思_ESD—检验离群值
- 2018 年计算机语言排行榜,TIOBE:2018年11月编程语言排行榜
- Intel Cyclone 10 GX 收发器的时钟网络
- 吐槽最新的chrome浏览器.
- 编一程序,将两个字符串连接起来,不要用strcat函数.
- 在Debian中网卡的设置
- PAT.1143 Lowest Common Ancestor
- 南京大学计算机学院2019调剂,2019年南京大学考研调剂相关规定