示例准备:

在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. 1. 模块化的引入与导出 (commonJS规范 和ES6规范)

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

  2. JavaSE--压缩

    package util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java ...

  3. Web API接口

    Web API接口 一.什么是Web API接口 通过网络,规定了前后台信息交互规则的url链接,也就是前后台信息交互的媒介 Web API接口和一般的url链接还是有区别的,Web API接口简单概 ...

  4. 纯手撸web框架

    纯手撸web框架 一.Web应用的组成 接下来我们学习的目的是为了开发一个Web应用程序,而Web应用程序是基于B/S架构的,其中B指的是浏览器,负责向S端发送请求信息,而S端会根据接收到的请求信息返 ...

  5. 用Plotily处理数据的基本操作

    import pandas as pd # 导入数据.scv df = pd.read_csv(" .csv") # 查看前五行数据 df.head() # 查看一下数据描述 df ...

  6. linux c 调用 python

    /* *gcc -o callpy callpy.cpp -I/usr/include/python3.5 -lpython3.5m */ #include <Python.h> #inc ...

  7. tesseract系列(4) -- tesseract训练问题总结

    1. 每次训练模型删除目录下,上述重复的名字 2. 生成inttemp.pffmtable文件的时候,如果下述命令(1)不行的话,或者报错,使用命令(2) (1)mftraining -F font_ ...

  8. Metasploit详解

    title date tags layout Metasploit 详解 2018-09-25 Metasploit post 一.名词解释 exploit 测试者利用它来攻击一个系统,程序,或服务, ...

  9. Java分层架构的使用规则

    原文章引用地址:http://blog.csdn.net/ygzk123/article/details/7816511 三层结构的程序不是说把项目分成DAL, BLL, WebUI三个模块就叫三层了 ...

  10. pip 通过pqi切换源到国内镜像

    pip install pqipqi lspqi use aliyun # pqi use tuna   清华