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是应用服务商为了解决 ...
随机推荐
- Channels(纪念一下卡我心态的一道题)
链接:https://ac.nowcoder.com/acm/contest/3947/C来源:牛客网 题目描述 Nancy喜欢学习,也喜欢看电视. 为了想了解她能看多长时间的节目,不妨假设节目从时刻 ...
- 1)基本的MFC程序创建过程
1)基本的MFC创建过程: 2) 选择MFC应用程序: 3)然后选择特定的选项 直接完成就行了: 4)下面就是建成的样子: 5)然后是 运行结果: 6)有一个问题 那个 菜单栏是属于 F ...
- PAT Basic 插⼊与归并(25) [two pointers]
题目 根据维基百科的定义: 插⼊排序是迭代算法,逐⼀获得输⼊数据,逐步产⽣有序的输出序列.每步迭代中,算法从输⼊序列中取出⼀元素,将之插⼊有序序列中正确的位置.如此迭代直到全部元素有序.归并排序进⾏如 ...
- Chladni Figure CodeForces - 1162D (暴力,真香啊~)
Chladni Figure CodeForces - 1162D Inaka has a disc, the circumference of which is nn units. The circ ...
- 第二季第十天 es6新特性新特性
1.set的应用(去重)js标准内置对象 适用范围:String,Array(数字基本数据类型不可以) set的方法:例子 var s = new Set(data) 增加: s.add(data) ...
- ZJNU 2135 - 小智的宝可梦
因为成环 所以可以枚举第1只与第n只喂的次数 然后第1只和第2只的次数就固定了,以此类推,则所有宝可梦喂的次数都固定了 最后处理完检查是否全为0,不是则进行下一次枚举,是则直接输出Yes 如果所有枚举 ...
- Django专题之ORM
ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...
- mysql连接报10038
1. netstat -ntpl # 查看端口状态,发现3306状态丢失(不理解操作,但确实解决了问题) 2. iptables -vnL # 这里要清除防火墙中链中的规则 3. iptable ...
- nodepad++ 让所有的加号收缩折叠展开的快捷键
折叠所有层次 Alt+0(这是零) 展开所有层次 Alt+Shift+0
- string.Format字符串格式化说明(转)
string.Format字符串格式化说明 www.111cn.net 编辑:Crese 来源:转载 先举几个简单的应用案例: 1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统 ...