cesium入门示例-HelloWorld
示例准备:
在Cesium ion官网(https://cesium.com/)上注册用户,获取AccessToken,在js代码入口设置Cesium.Ion.defaultAccessToken,即可正常使用Cesium内置的影像和地形服务。
HelloWorld示例:
1、替换了cesium内置的影像和地形服务;
//bing map
var bingMap = new Cesium.ProviderViewModel({
name: 'Bing Maps Aerial',
iconUrl: './SampleData/bingAerial.png',
tooltip: 'Bing Maps aerial imagery',
category: 'Cesium ion',
creationFunction: function() {
return new Cesium.BingMapsImageryProvider({
url: 'https://dev.virtualearth.net',
key: binmapToken,
mapStyle: Cesium.BingMapsStyle.AERIAL
})
}
})
//Tianditu
var tiandiMap = new Cesium.ProviderViewModel({
name: 'Tiditu',
iconUrl: './SampleData/fire.png',
tooltip: 'Tiditu image',
category: 'Cesium ion',
creationFunction: function() {
return new Cesium.WebMapTileServiceImageryProvider({
//调用影像服务
url: "http://t1.tianditu.com/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&" +
"TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&tk=" + tidituToken
})
}
})
//google map
var googleMap = new Cesium.ProviderViewModel({
name: 'Goolge Map',
iconUrl: './SampleData/fire.png',
tooltip: 'Google image',
category: 'Cesium ion',
creationFunction: function() {
return new Cesium.UrlTemplateImageryProvider({
//调用影像服务
url: "http://mt1.google.cn/vt/lyrs=s&hl=zh-CN&x={x}&y={y}&z={z}"
})
}
})
//自己下载的瓦片
var customMap = new Cesium.ProviderViewModel({
name: 'Offline Map',
iconUrl: './SampleData/fire.png',
tooltip: 'Offline image',
category: 'Cesium ion',
creationFunction: function() {
return new Cesium.UrlTemplateImageryProvider({
//调用影像服务
url: "http://localhost/www/Johannesburg/{z}/{x}/{y}.png"
})
}
}) //添加自定义地形选择控件
var customTerrain = new Cesium.ProviderViewModel({
name: 'myTerrain',
iconUrl: './SampleData/fire.png',
tooltip: 'custom terrain',
category: 'Cesium ion',
creationFunction: function() {
return new Cesium.CesiumTerrainProvider({
url: 'http://localhost/www/n39w119',
requestVertexNormals: true
})
}
})
var terrainModels = Cesium.createDefaultTerrainProviderViewModels();
terrainModels.push(customTerrain);
var viewer = new Cesium.Viewer('cesiumContainer', {
animation: false, //去掉动画空间
timeline: false, //去掉时间线控件
imageryProviderViewModels: [bingMap, tiandiMap, googleMap, customMap],
terrainProviderViewModels: terrainModels
});
//去除水印
viewer._cesiumWidget._creditContainer.style.display = "none";
//显示帧率信息
viewer.scene.debugShowFramesPerSecond = true;
自定义地形数据n39w119从https://apps.nationalmap.gov/3depdem/网站下载的美国某一片高程数据。
下载的数据为ErdasIMG格式的,在QGIS(或ArcGIS)中转为TIFF格式,然后使用cesiumlab(https://www.cesiumlab.com/)的地形处理工具切成cesium支持的.terrain离散文件,部署在服务器上即可访问。
global_tms为从cesiumlab交流群下载的乔峰地球上下载的.terrain离散文件,地形精度较低,测试用。
2、增加显示鼠标位置的经纬高信息;
<div id="cesiumContainer">
<div id="coords" style="position: absolute;z-index: 1000;color: red;"></div>
</div> //显示坐标
var canvas = viewer.scene.canvas;
var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(movement) {
var cartesian = viewer.scene.camera.pickEllipsoid(movement.endPosition, ellipsoid);
var ellipsoid = viewer.scene.globe.ellipsoid;
if(cartesian) { //能获取,显示坐标
var cartographic = ellipsoid.cartesianToCartographic(cartesian); var terrainLevel = level;
var promise = Cesium.sampleTerrain(viewer.terrainProvider, terrainLevel, [cartographic]);
Cesium.when(promise, function(updatedPositions) {
if(updatedPositions.length > 0) {
var coords = '经度' + Cesium.Math.toDegrees(cartographic.longitude).toFixed(2) + ', ' +
'纬度' + Cesium.Math.toDegrees(cartographic.latitude).toFixed(2) + ', ' + '高度' + (updatedPositions[0].height ? updatedPositions[0].height : 0);
document.getElementById(divId).innerHTML = coords;
document.getElementById(divId).style.display = '';
} else {
document.getElementById('coords').style.display = 'none';
}
}); } else { //不能获取不显示
document.getElementById('coords').style.display = 'none';
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
注意“coords"的div中的z-index的设置。

3、加载了天地图的注记服务;
viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({
//调用中文注记服务
url: "http://t2.tianditu.com/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&" +
"TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&tk=" + tidituToken
}));

4、加载多边形实体;
viewer.entities.add({
polygon: {
hierarchy: Cesium.Cartesian3.fromDegreesArray([-109.080842, 45.002073, -105.91517, 45.002073, -104.058488, 44.996596, -104.053011, 43.002989, -104.053011, 41.003906, -105.728954, 40.998429, -107.919731, 41.003906, -109.04798, 40.998429, -111.047063, 40.998429, -111.047063, 42.000709, -111.047063, 44.476286, -111.05254, 45.002073]),
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
material: Cesium.Color.RED.withAlpha(0.5),
outline: true,
outlineColor: Cesium.Color.BLACK
}
})
最后效果:

cesium入门示例-HelloWorld的更多相关文章
- cesium入门示例-测量工具
作为cesium入门示例级别的最后一篇,参考cesium-长度测量和面积测量实现测量工具封装,修改了其中的距离测量函数,计算贴地距离,并对事件内部处理做了调整.包括贴地距离测量.面积测量.结果清除. ...
- cesium入门示例-矢量化单体分类
实现楼层的分层选择和属性信息展示,该功能基于大雁塔倾斜数据实现单体化分类显示. 数据准备: 1.大雁塔倾斜数据,已转换为3dTiles,参考cesium入门示例-3dTiles加载的第2节osgb数据 ...
- cesium入门示例-探测效果
动画实现方式通过多个canvas实现,参考的https://www.yueyanshaosun.cn/ysCesium/views/5_geometricObj2_entityCanvas.html ...
- cesium入门示例-3dTiles加载
数据转换工具采用cesiumlab1.5.17版本,转换后的3dTiles加载显示比较简单,通过Cesium.Cesium3DTileset接口指定url即可,3dTiles文件可与js前端代码放置一 ...
- cesium入门示例-geoserver服务访问
1.wms服务访问 //wms服务 viewer.imageryLayers.addImageryProvider(new Cesium.WebMapServiceImageryProvider({ ...
- Cesium入门2 - Cesium环境搭建及第一个示例程序
Cesium入门2 - Cesium环境搭建及第一个示例程序 Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 验 ...
- Maven入门示例(3):自动部署至外部Tomcat
Maven入门示例(3):自动部署至外部Tomcat 博客分类: maven 2012原创 Maven入门示例(3):自动部署至外部Tomcat 上一篇,介绍了如何创建Maven项目以及如何在内 ...
- 1.【转】spring MVC入门示例(hello world demo)
1. Spring MVC介绍 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于 ...
- Web Service简单入门示例
Web Service简单入门示例 我们一般实现Web Service的方法有非常多种.当中我主要使用了CXF Apache插件和Axis 2两种. Web Service是应用服务商为了解决 ...
随机推荐
- FJ的字符串-简单递归
FJ的字符串-简单递归 问题描述FJ在沙盘上写了这样一些字符串: A1 = “A” A2 = “ABA” A3 = “ABACABA” A4 = “ABACABADABACABA” … … 你能找出其 ...
- Pmw大控件
Python大控件——Pmw——是合成的控件,以Tkinter控件为基类,是完全在Python内写的.它们可以很方便地增加功能性的应用,而不必写一堆代码.特别是,组合框和内部确认计划的输入字段放在一起 ...
- nginx四层负载及动静分离
阿里云实验10.0.0.132 LB10.0.0.133 web0110.0.0.134 web02 步骤:1.安装nginx1.14 获取官网repo文件 yum install -y nginx ...
- ZJNU 1160 - 不要62——中级
取模判断,数组模拟 /* Written By StelaYuri */ #include<stdio.h> ]; int main(){ int n,m,i,s,t; ;i<;i+ ...
- 让几个横向排列的浮动子div居中显示的方法
div设置成float之后,就无法使子div居中显示了,那么如何让几个横向排列的浮动的div居中显示呢,下面有个不错的方法,希望对大家有所帮助 div设置成float之后,在父div中设置text-a ...
- 吴裕雄--天生自然python TensorFlow图片数据处理:解决TensorFlow2.0 module ‘tensorflow’ has no attribute ‘python_io’
tf.python_io出错 TensorFlow 2.0 中使用 Python_io 暂时使用如下指令: tf.compat.v1.python_io.TFRecordWriter(filename ...
- [WC2010]重建计划(长链剖分+线段树+分数规划)
看到平均值一眼分数规划,二分答案mid,边权变为w[i]-mid,看是否有长度在[L,R]的正权路径.设f[i][j]表示以i为根向下j步最长路径,用长链剖分可以优化到O(1),查询答案线段树即可,复 ...
- 吴裕雄--天生自然python Google深度学习框架:深度学习与深层神经网络
- listening-conversation|信息简写|Generally|回答|矛盾
听力可以刷分,但是要求高.听力流程是听.笔记.读题和确定答案,不能回看.Conversation快速且不完整.素材内容主要是生命科学,社科(人类学:考古学),艺术,自然科学(地质). 难点分析: 词汇 ...
- 电脑莫名重启,VS代码丢失的解决办法
今天写了一天的代码,然后电脑放在公司了,出去看电影(公司组织红色文化培训..)回来发现电脑重启,再打开电脑,VS的代码都不见了.好慌.... 别慌处理办法来了: 打开everything(没有的可以下 ...
