1、阴影效果

viewer.shadows = true;

2、取消左键双击事件

viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);

3、定位飞到某处

viewer.scene.camera.flyTo({ destination: rectangle });

4、开启灯光

scene.globe.enableLighting = true;

5、限制缩放距离

scene.screenSpaceCameraController.minimumZoomDistance = 100;

6、解决Cesium绘制几何图形被高程遮挡问题

viewer.scene.globe.depthTestAgainstTerrain = true;

7、point贴地

var point = viewer.entities.add({

position: worldPosition,

point: {

pixelSize: 10,

color: Cesium.Color.YELLOW,

//控制是否贴地

heightReference: Cesium.HeightReference.CLAMP_TO_GROUND

},

});

8、地球移动事件

camera.moveStart.addEventListener(function() {

});

camera.moveEnd.addEventListener(function() {

});

9、取消Cesium版权信息

$(".cesium-widget-credits").remove();

10、自定义BaseLayerPicker

var esriMap = new Cesium.ArcGisMapServerImageryProvider({

url:'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer',

enablePickFeatures:false

});

//设置ProviderViewModel:

var esriMapModel = new Cesium.ProviderViewModel({

name:'esri Maps',

iconUrl:Cesium.buildModuleUrl('./Widgets/Images/ImageryProviders/esriWorldImagery.png'),

tooltip:'ArcGIS 地图服务',

creationFunction:function () {

return esriMap;

}

});

//只有一个

var providerViewModels = [];

providerViewModels.push(esriMapModel);

viewer.baseLayerPicker.viewModel.imageryProviderViewModels = providerViewModels;

11、设置时间

// 设置时钟和时间线

viewer.clock.shouldAnimate = true; // 当viewer开启后,启动动画

viewer.clock.startTime = Cesium.JulianDate.fromIso8601("2017-07-11T16:00:00Z");

viewer.clock.stopTime = Cesium.JulianDate.fromIso8601("2017-07-11T16:20:00Z");

viewer.clock.currentTime = Cesium.JulianDate.fromIso8601("2017-07-11T16:00:00Z");

viewer.clock.multiplier = 2; // 设置加速倍率

viewer.clock.clockStep = Cesium.ClockStep.SYSTEM_CLOCK_MULTIPLIER; // tick computation mode(还没理解具体含义)

viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP; // 循环播放

viewer.timeline.zoomTo(viewer.clock.startTime, viewer.clock.stopTime); // 设置时间的可见范围

12、拾取

/**

* 返回对应窗口位置最上面一个Entity 如果该位置没有对象那么返回undefined

* @param {Cartesian2} windowPosition 窗口坐标

* @returns {Entity} 返回值

*/

function pickEntity(viewer, windowPosition) {

var picked = viewer.scene.pick(windowPosition);

if (defined(picked)) {

var id = Cesium.defaultValue(picked.id, picked.primitive.id);

if (id instanceof Cesium.Entity) {

return id;

}

}

return undefined;

};

/**

*返回对应窗口位置所有Entity的列表 如果该位置没有对象那么返回undefined

* 返回值按可视化顺序从前到后存储在数组里

*

* @param {Cartesian2} windowPosition 窗口位置

* @returns {Entity[]}

*/

function drillPickEntities(viewer, windowPosition) {

var i;

var entity;

var picked;

var pickedPrimitives = viewer.scene.drillPick(windowPosition);

var length = pickedPrimitives.length;

var result = [];

var hash = {};

for (i = 0; i < length; i++) {

picked = pickedPrimitives[i];

entity = Cesium.defaultValue(picked.id, picked.primitive.id);

if (entity instanceof Cesium.Entity &&

!Cesium.defined(hash[entity.id])) {

result.push(entity);

hash[entity.id] = true;

}

}

return result;

};

该代码出自:https://www.jianshu.com/p/8ae3624347cb

13、检测深度

//为false时,没有高程遮挡效果

viewer.scene.globe.depthTestAgainstTerrain = false;

//为true时,有高程遮挡效果

viewer.scene.globe.depthTestAgainstTerrain = true;

14、加载geoserver的WMS服务

var provider = new Cesium.WebMapServiceImageryProvider({

url: 'http://localhost:8080/geoserver/cite/wms',

layers: 'cite:city',

parameters: {

service : 'WMS',

format: 'image/png',

transparent: true,

}

});

viewer.imageryLayers.addImageryProvider(provider);

15、自定义credit

var viewer = new Cesium.Viewer('cesiumContainer');

var credit = new Cesium.Credit('Title', '../images/facility.gif', 'http://www.cesiumjs.org');

viewer.scene.frameState.creditDisplay.addDefaultCredit(credit)

16、拾取

Scene.pick : 返回窗口坐标对应的图元的第一个对象。

Scene.drillPick :返回窗口坐标对应的所有对象列表。

Globe.pick : 返回一条射线和地形的相交位置点。

17、禁止缩放

viewer.scene.screenSpaceCameraController.enableZoom = false;

18、控制时钟暂停与继续

pauseOrContinue (state) {

this.viewer.clock.shouldAnimate = state

}

19、绕点飞行

var viewer = new Cesium.Viewer('cesiumContainer');

var options = {

lng: 117.1423291616,

lat: 39.0645831633,

height: 15.8,

heading: 0.0,

pitch: 0.0,

roll: 0.0

};

var position = Cesium.Cartesian3.fromDegrees(options.lng, options.lat, options.height);

// 相机看点的角度,如果大于0那么则是从地底往上看,所以要为负值,这里取-30度

var pitch = Cesium.Math.toRadians(-30);

// 给定飞行一周所需时间,比如10s, 那么每秒转动度数

var angle = 360 / 30;

// 给定相机距离点多少距离飞行,这里取值为5000m

var distance = 5000;

var startTime = Cesium.JulianDate.fromDate(new Date());

// var stopTime = Cesium.JulianDate.addSeconds(startTime, 10, new Cesium.JulianDate());

viewer.clock.startTime = startTime.clone(); // 开始时间

// viewer.clock.stopTime = stopTime.clone(); // 结速时间

viewer.clock.currentTime = startTime.clone(); // 当前时间

viewer.clock.clockRange = Cesium.ClockRange.CLAMPED; // 行为方式

viewer.clock.clockStep = Cesium.ClockStep.SYSTEM_CLOCK; // 时钟设置为当前系统时间; 忽略所有其他设置。

// 相机的当前heading

var initialHeading = viewer.camera.heading;

var Exection = function TimeExecution() {

// 当前已经过去的时间,单位s

var delTime = Cesium.JulianDate.secondsDifference(viewer.clock.currentTime, viewer.clock.startTime);

var heading = Cesium.Math.toRadians(delTime * angle) + initialHeading;

viewer.scene.camera.setView({

destination :position, // 点的坐标

orientation:{

heading: heading,

pitch : pitch,

}

});

viewer.scene.camera.moveBackward(distance);

if (Cesium.JulianDate.compare(viewer.clock.currentTime, viewer.clock.stopTime) >= 0) {

viewer.clock.onTick.removeEventListener(Exection);

}

};

20、只让地球显示一块区域,其余裁剪

var coffeeBeltRectangle = Cesium.Rectangle.fromDegrees(-180.0, -23.43687, 180.0, 23.43687);

viewer.scene.globe.cartographicLimitRectangle = coffeeBeltRectangle;

21、关闭HDR

viewer.scene.highDynamicRange = false;

22、防止进入地下

23、billboard显示不完整怎么解决?

24、gltf模型双面渲染

doubleSided改为true

25、开启debugShowFramesPerSecond

scene.debugShowFramesPerSecond = true;

26、监听entity选择改变代码示例

var lastSelectedPin;

viewer.selectedEntityChanged.addEventListener(function(newEntity) {

if (lastSelectedPin && lastSelectedPin.billboard) {

lastSelectedPin.billboard.show = false;

}

lastSelectedPin = newEntity;

if (lastSelectedPin && lastSelectedPin.billboard) {

lastSelectedPin.billboard.show = true;

}

});

27、局部坐标系

//以点为原点建立局部坐标系(东方向为x轴,北方向为y轴,垂直于地面为z轴),得到一个局部坐标到世界坐标转换的变换矩阵

var localToWorld_Matrix = Cesium.Transforms.eastNorthUpToFixedFrame(position);

28、显示与隐藏cesium的控件

viewer.homeButton.container.childNodes[1].style.display = "none"

29、判断是否在可视范围内

var cullingVolume = frameState.cullingVolume;

var boundingVolume = defaultValue(surfaceTile.orientedBoundingBox, surfaceTile.boundingSphere3D);

var intersection = cullingVolume.computeVisibility(boundingVolume);

30、计算一个图元的法向量

var geometry = GeometryPipeline.computeNormal(new Geometry({

attributes: attributes,

indices: indices,

primitiveType: PrimitiveType.TRIANGLES,

boundingSphere: boundingSphere

}));

31、图元生成线框形式

var instance = new Cesium.GeometryInstance({

geometry : Cesium.GeometryPipeline.toWireframe(new Cesium.TetrahedronGeometry()),

modelMatrix : modelMatrix,

attributes : {

color : Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.WHITE)

}

});

cesium 局部加载_Cesium(四)常用代码总结相关推荐

  1. cesium 局部加载_cesium自定义气泡窗口infoWindow后续优化篇 - GIS之家

    摘要:http://www.cnblogs.com/giserhome/p/6248858.html该篇文章实现的自定义气泡窗口是基于修改cesium源代码基础上,这种做法只是援兵之计,凑合应付的,投 ...

  2. cesium 局部加载_Cesium自定义HTML弹窗

    展示示例图: Cesium自定义HTML弹窗 核心的实现思路部分: (1)cesium 的点击事件 Cesium.ScreenSpaceEventType.LEFT_CLICK 监听左键单击鼠标事件获 ...

  3. Cesium|xt3d加载中国地形

    Cesium|xt3d加载中国地形 效果 代码 预览地址 效果 代码 <!DOCTYPE html> <html lang="zh-CN"><head ...

  4. 【OS学习笔记】四十 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----动态加载的用户程序/任务二代码

    本文是以下几篇文章对应的微型动态加载的用户程序/任务二代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十 ...

  5. jQuery中的ajax、jquery中ajax全局事件、load实现页面无刷新局部加载、ajax跨域请求jsonp、利用formData对象向服务端异步发送二进制数据,表单序列化(异步获取表单内容)

    jQuery中使用ajax: 在jQuery中使用ajax首先需要引入jQuery包,其引入方式可以采用网络资源,也可以下载包到项目文件中,这里推荐下载包到文件中:市面上有多个版本的jQuery库,这 ...

  6. Vue 3.X 结合 arcgis 4.X 加载国内四种在线底图 百度、腾讯、高德、天地图(学不会揍我)

    话不多说,操作go go 1. 如果你的项目是从零开始的话,那么可以参考我的下面两篇文章(反之跳过以下参考文章): 1. 傻瓜式搭建一个vue项目(学不会揍我)_New_Wang的博客-CSDN博客 ...

  7. cesium首次加载gltf模型成功

    接此: https://blog.csdn.net/bcbobo21cn/article/details/111305160 根据资料gltf格式模型可以直接在cesium上加载: 网上搜索gltf, ...

  8. 【OS学习笔记】三十九 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----动态加载的用户程序/任务一代码

    本文是以下几篇文章对应的动态加载的用户程序/任务一代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十六 ...

  9. java代码加载_java类中代码加载顺序

    package org.senssic; /** * 一般顺序:静态块-->静态变量-->成员变量-->构造方法-->静态方法(或非静态方法,需要调用) * 1.静态代码块(只 ...

最新文章

  1. CodeForces 114B 【STL应用】
  2. Linux系统管理命令:date、free、ps、du、kill、uname
  3. vasp 5.2编译方法
  4. python蓝牙编程_蓝牙编程经典程序!
  5. 紫色UI趣味测试微信小程序源码下载包含多种评测
  6. Qt之QHeaderView自定义排序(获取正确的QModelIndex)
  7. matlab怎么训练神经网络,matlab神经网络训练方法
  8. chm 打不开 解决办法
  9. vscode 是干什么用的_vscode里的launch.json是干什么用的
  10. ORA-01653: 解决方案
  11. 目前最火的Java主流技术栈及开发工具
  12. mysql删除一行_MySql删除表中一行的实操方法
  13. 一键启动oracle服务脚本,Oracle服务一键启动/关闭
  14. 互联网名称与数字地址分配机构ICANN简介
  15. Fast Reed-Solomon Interactive Oracle Proofs of Proximity学习笔记
  16. 打开pycharm时一直更新目录 updating indecix
  17. 联想lenovo sl700 240G sata ps3111主控+未知颗粒 掉盘,ps3111写保护开卡量产修复过程
  18. 上地服务器托管机房的现状
  19. Day37PHP创建简单的论坛cnfhBBS源码
  20. 2023大连理工大学考研分析

热门文章

  1. 远程过程调用RPC RMI(Remote Method Invocation)和Web Service
  2. 图解JAVA参数传递
  3. iOS开发基础知识--碎片27
  4. 顺丰物流单号查询效果(可输入多个文本框)
  5. 我的log4net使用手册(转自 http://blog.csdn.net/lyjcn/archive/2009/08/11/4432833.aspx)
  6. 我编程很渣,但我就是喜欢编程,我该怎么做?放弃还是继续坚持?
  7. 超适合小白的python新手教程
  8. 夫学须静也freeeim
  9. 这个AI狠!能互译C++、Java和Python,以后只学一种编程就行吗
  10. 工作3年和工作7年的程序员到底差在哪里?