示例准备:

在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的更多相关文章

  1. cesium入门示例-测量工具

    作为cesium入门示例级别的最后一篇,参考cesium-长度测量和面积测量实现测量工具封装,修改了其中的距离测量函数,计算贴地距离,并对事件内部处理做了调整.包括贴地距离测量.面积测量.结果清除. ...

  2. cesium入门示例-矢量化单体分类

    实现楼层的分层选择和属性信息展示,该功能基于大雁塔倾斜数据实现单体化分类显示. 数据准备: 1.大雁塔倾斜数据,已转换为3dTiles,参考cesium入门示例-3dTiles加载的第2节osgb数据 ...

  3. cesium入门示例-探测效果

    动画实现方式通过多个canvas实现,参考的https://www.yueyanshaosun.cn/ysCesium/views/5_geometricObj2_entityCanvas.html ...

  4. cesium入门示例-3dTiles加载

    数据转换工具采用cesiumlab1.5.17版本,转换后的3dTiles加载显示比较简单,通过Cesium.Cesium3DTileset接口指定url即可,3dTiles文件可与js前端代码放置一 ...

  5. cesium入门示例-geoserver服务访问

    1.wms服务访问 //wms服务 viewer.imageryLayers.addImageryProvider(new Cesium.WebMapServiceImageryProvider({ ...

  6. Cesium入门2 - Cesium环境搭建及第一个示例程序

    Cesium入门2 - Cesium环境搭建及第一个示例程序 Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 验 ...

  7. Maven入门示例(3):自动部署至外部Tomcat

    Maven入门示例(3):自动部署至外部Tomcat 博客分类:  maven 2012原创   Maven入门示例(3):自动部署至外部Tomcat 上一篇,介绍了如何创建Maven项目以及如何在内 ...

  8. 1.【转】spring MVC入门示例(hello world demo)

    1. Spring MVC介绍 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于 ...

  9. Web Service简单入门示例

    Web Service简单入门示例     我们一般实现Web Service的方法有非常多种.当中我主要使用了CXF Apache插件和Axis 2两种. Web Service是应用服务商为了解决 ...

随机推荐

  1. atomic一定线程安全吗

    atomic只是保证了操作的原子性,原子操作即一个操作不可再分. atomic只是对读写操作进行了加锁,保证了多线程开发时一个读写操作完成之后才能进行下一个读写操作 atomic和线程安全没有太大的关 ...

  2. 1. 模块化的引入与导出 (commonJS规范 和ES6规范)

    node组件导出模块 node一般用commonJS规范 可以通过module.exports导出自己写的模块 这样其他的js文件就可以引用并使用这个模块 module.exports = { log ...

  3. ZJNU 2212 - Turn-based game

    Mr.Lee每隔1/x s攻击一次,cpu每隔1/y s攻击一次 因为时间与答案无关,最后只看boss受到了多少次攻击 所以可以在每个人的频率上同时乘以xy 即Mr.Lee每隔y s攻击一次,cpu每 ...

  4. 在python实现加密的方式总结

    基础知识扫盲 对称加密 对称密钥加密 , 又叫私钥加密.即信息发送的方和接受方用一个密钥去加密和揭秘数据. 最大的优势是 加解密速度快,适合对大量数据进行加密, 对称加密的缺点是密钥的管理和分配, 换 ...

  5. Java--平台版本、跨平台、JVM、JDK、JRE

    Java2平台版本 Java2平台包括标准版(J2SE).企业版(J2EE)和微缩版(J2ME)三个版本 J2SE 包含那些构成Java语言核心的类. J2EE 包含J2SE 中的类,并且还包含用于开 ...

  6. maven tomcat 自动部署配置

    1:Tomacat 配置 /tomcat-users.xml 添加如下: <role rolename="manager-gui"/> <role rolenam ...

  7. windows10系统激活方法

    我使用的是第一种方法,很好用,企业版 https://blog.csdn.net/qq_39146974/article/details/82967054

  8. shell_backup_MySQL

    #!/bin/bash #可修改如下参数backup_filename=$(date +%Y%m%d%H%M%S)backup_tmp_dir=/data/backup/ip=10.0.1.182us ...

  9. [USACO09DEC]视频游戏的麻烦Video Game Troubles(DP)

    https://www.luogu.org/problem/P2967 https://ac.nowcoder.com/acm/contest/1077/B 题目描述 Farmer John's co ...

  10. AD中导出所有计算机的(计算机名+操作系统类型)

    要想用powershell管理域,首先先加载activedirectory模块 PS C:\> import-module activedirectory 下面就可以利用get-adcomput ...