Cesium学习笔记(4)
来源:互联网 发布:科润软件科技有限公司 编辑:程序博客网 时间:2024/04/29 20:41
最近更新于2016/11/27
1.姿态与位置(orientation和position)
Orientation:若以正北为参照。
Heading:初始方向为正北,正角度为向东旋转,即水平旋转,也叫偏航角
Pitch:正角度为平面之上,负角度为平面之下,即前后旋转,也叫俯仰角
Roll:左右旋转,也叫翻滚角
具体解释:http://blog.csdn.net/yuzhongchun/article/details/22749521
Position:关于position有多种类型,如SampledPositionProperty类型,是一个含有多个样本点位置的对象,主要用于动态轨迹生成,通过插值算法对轨迹进行插值,其中setInterpolationOptions方法用来设置插值方法与程度,它的某一时间的位置可以用position.getValue()方法获得,参数是朱利安时间
2.实体(Entity)
model:
minimumPixelSize与maximumScale组合可以控制模型远近时候的大小
availability: 代表该实体存在的有效时间,如下所示,
availability : new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({
start : start,
stop : stop
})]),
得到影像图层的集合,将其渲染到球体上,它是一个ImageryLayerCollection类型的,可以通过addImageryProvider()方法(返回值是ImageryLayer类型)进行添加,参数是各个provider(地图渲染引擎)。
viewer.imageryLayers.addImageryProvider(new Cesium.PieMapServerImageryProvider({
url: '//localhost:8082/service/v1/tile?map=dongsha',
enablePickFeatures: false
}));
光照: scene.globe.enableLighting
雾效:scene.fog.enabled
大气:scene.skyAtmosphere
Scene.ScreenSpaceCameraController:根据鼠标修改相机的方位,在里面可以选择是否禁用鼠标缩放、旋转等功能
关于flyto和setView的方式详见例子camera.html
获取当前时间 var time = viewer.clock.currentTime;
viewer.clock.onTick.addEventListener(function(clock){
//回调函数,时间变化就执行(即使停止时间轴仍然会执行。。。。)
})
JulianDate:代表天文朱利安时间,用的是世界协调时,比北京时间晚8个小时,它有clone方法,可避免时间被修改
var start = Cesium.JulianDate.fromDate(new Date(2015, 2, 25, 16));
var stop = Cesium.JulianDate.addSeconds(start, 360, new Cesium.JulianDate());//360是秒
viewer.clock.startTime = start.clone();
viewer.clock.stopTime = stop.clone();
viewer.clock.currentTime = start.clone();
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP;//待研究
viewer.clock.multiplier = 1.0;//倍数
viewer.scene.globe.depthTestAgainstTerrain = true;
为true时,球体会有高程遮挡效果(在没有地形时候也会有高程遮挡效果)。
对于加入cesium中的模型,一般用entity。如若修改他们的属性,就可根据这两个类型向下寻找属性,不可修改它的私有属性。
获取单个模型,用entity.getById()
9.其他问题
①Geocoder地理查询17版本不支持,我用的23版本是可以查的,而且支持中文查询。如果必须用17的话,可以将23版本的BingMapsApi.js和GeocoderViewModel.js替换到17版本的相应位置。
var viewer = new Cesium.Viewer('cesiumContainer');viewer.terrainProvider = new Cesium.CesiumTerrainProvider({ url : 'https://assets.agi.com/stk-terrain/world'});var ellipsoid = viewer.scene.globe.ellipsoid;var positions = Cesium.Cartesian3.fromDegreesArray([ -115, 35, -114, 36]);var flatPositions = Cesium.PolylinePipeline.generateArc({ positions: positions, granularity: 0.000001});var cartographicArray = [];for (var i = 0; i < flatPositions.length; i+=3) { var cartesian = Cesium.Cartesian3.unpack(flatPositions, i); cartographicArray.push(ellipsoid.cartesianToCartographic(cartesian));}Cesium.sampleTerrain(viewer.terrainProvider, 15, cartographicArray).then(function(raisedPositionsCartograhpic) { var raisedPositions = ellipsoid.cartographicArrayToCartesianArray(raisedPositionsCartograhpic); //console.log(raisedPositions) viewer.entities.add({ polyline : { positions : raisedPositions, width : 5, material : Cesium.Color.RED } }); viewer.zoomTo(viewer.entities);});
viewer._cesiumWidget._creditContainer.style.display = "none";
①图层是都保存在viewer.scene. imageryLayers或viewer.imageryLayers这个数组中。
②图层加载流程:此为加载天地图方法
baseLayer = viewer.imageryLayers.addImageryProvider(
new Cesium.WebMapTileServiceImageryProvider({
url: "http://t0.tianditu.com/cva_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cva&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles",
layer: "tdtAnnoLayer",
style: "default",
format: "image/jpeg",
tileMatrixSetID: "GoogleMapsCompatible",
show: false
}), 1);
以此为例,添加一个wmts服务, 先到viewer.js里面,走addImageryProvider方法,得到this.scene.imageryLayers;再到scene.js里面,得到this.globe.imageryLayers;再到globe.js里面,得到this._imageryLayerCollection;
③图层换级流程(过程太多,只写了一部分,后期继续跟进。。。):
当进行层级切换时,ImageryLayer.prototype. _createTileImagerySkeletons方法中有getLevelWithMaximumTexelSpacing方法,此方法是计算获得level层级。
0 0
- Cesium学习笔记(4)
- Cesium学习笔记(2)
- Cesium学习笔记(3)
- Cesium学习笔记(5)
- Cesium学习笔记(四): 相机(camera)
- Cesium学习笔记(一)添加实体
- Cesium学习笔记(二)Imagery Provider
- Cesium学习笔记(三)地形
- Cesium学习笔记(四)Camera
- Cesium学习笔记
- Cesium学习笔记(八):Demo学习(差值器)
- Cesium学习笔记(十):粒子系统(Particle System)
- Cesium学习笔记(一):环境配置和首次运行
- Cesium学习笔记(二):添加实体对象
- Cesium学习笔记(五):3D 模型
- Cesium学习笔记(四)添加3D模型
- Cesium学习笔记(五)几何和外观
- Cesium学习(1):简介
- CVPR 2016-9-23
- CMOS密码的清除方法
- 笔试算法学习--最大连续子序列和
- Android支付密码输入框【转】
- muduo网络库学习笔记(10):定时器的实现
- Cesium学习笔记(4)
- 对于流式布局的研究和一点心得
- CentOS 6.5 hadoop 2.7.3 集群环境搭建
- 八数码难题——广搜+(哈希+编码+set)
- 对事件分发的探讨
- 【Python开发】PyQt5应用与实践
- android修改图片(修改图片大小,图片旋转,图片平移)
- 第五周项目5--后缀表达式
- XP去除开机登陆画面