cesium入门示例-HelloWorld

示例准备:

在Cesium ion官网(https://cesium.com/)上注册用户,获取AccessToken,在js代码入口设置Cesium.Ion.defaultAccessToken,即可正常使用Cesium内置的影像和地形服务。

HelloWorld示例:

1、替换了cesium内置的影像和地形服务;

 1 //bing map
 2 var bingMap = new Cesium.ProviderViewModel({
 3     name: 'Bing Maps Aerial',
 4     iconUrl: './SampleData/bingAerial.png',
 5     tooltip: 'Bing Maps aerial imagery',
 6     category: 'Cesium ion',
 7     creationFunction: function() {
 8         return new Cesium.BingMapsImageryProvider({
 9             url: 'https://dev.virtualearth.net',
10             key: binmapToken,
11             mapStyle: Cesium.BingMapsStyle.AERIAL
12         })
13     }
14 })
15 //Tianditu
16 var tiandiMap = new Cesium.ProviderViewModel({
17     name: 'Tiditu',
18     iconUrl: './SampleData/fire.png',
19     tooltip: 'Tiditu image',
20     category: 'Cesium ion',
21     creationFunction: function() {
22         return new Cesium.WebMapTileServiceImageryProvider({
23             //调用影像服务 
24             url: "http://t1.tianditu.com/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&" +
25                 "TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&tk=" + tidituToken
26         })
27     }
28 })
29 //google map
30 var googleMap = new Cesium.ProviderViewModel({
31     name: 'Goolge Map',
32     iconUrl: './SampleData/fire.png',
33     tooltip: 'Google image',
34     category: 'Cesium ion',
35     creationFunction: function() {
36         return new Cesium.UrlTemplateImageryProvider({
37             //调用影像服务 
38             url: "http://mt1.google.cn/vt/lyrs=s&hl=zh-CN&x={x}&y={y}&z={z}"
39         })
40     }
41 })
42 //自己下载的瓦片
43 var customMap = new Cesium.ProviderViewModel({
44     name: 'Offline Map',
45     iconUrl: './SampleData/fire.png',
46     tooltip: 'Offline image',
47     category: 'Cesium ion',
48     creationFunction: function() {
49         return new Cesium.UrlTemplateImageryProvider({
50             //调用影像服务 
51             url: "http://localhost/www/Johannesburg/{z}/{x}/{y}.png"
52         })
53     }
54 })
55 
56 //添加自定义地形选择控件
57 var customTerrain = new Cesium.ProviderViewModel({
58     name: 'myTerrain',
59     iconUrl: './SampleData/fire.png',
60     tooltip: 'custom terrain',
61     category: 'Cesium ion',
62     creationFunction: function() {
63         return new Cesium.CesiumTerrainProvider({
64             url: 'http://localhost/www/n39w119',
65             requestVertexNormals: true
66         })
67     }
68 })
69 var terrainModels = Cesium.createDefaultTerrainProviderViewModels();
70 terrainModels.push(customTerrain);
71 var viewer = new Cesium.Viewer('cesiumContainer', {
72     animation: false, //去掉动画空间
73     timeline: false, //去掉时间线控件
74     imageryProviderViewModels: [bingMap, tiandiMap, googleMap, customMap],
75     terrainProviderViewModels: terrainModels
76 });
77 //去除水印
78 viewer._cesiumWidget._creditContainer.style.display = "none";
79 //显示帧率信息
80 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、增加显示鼠标位置的经纬高信息;

 1 <div id="cesiumContainer">
 2     <div id="coords" style="position: absolute;z-index: 1000;color: red;"></div>
 3 </div>
 4 
 5 //显示坐标 
 6 var canvas = viewer.scene.canvas;
 7 var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
 8 handler.setInputAction(function(movement) {
 9     var cartesian = viewer.scene.camera.pickEllipsoid(movement.endPosition, ellipsoid);
10     var ellipsoid = viewer.scene.globe.ellipsoid;
11     if(cartesian) { //能获取,显示坐标
12         var cartographic = ellipsoid.cartesianToCartographic(cartesian);
13 
14         var terrainLevel = level;
15         var promise = Cesium.sampleTerrain(viewer.terrainProvider, terrainLevel, [cartographic]);
16         Cesium.when(promise, function(updatedPositions) {
17             if(updatedPositions.length > 0) {
18                 var coords = '经度' + Cesium.Math.toDegrees(cartographic.longitude).toFixed(2) + ', ' +
19                     '纬度' + Cesium.Math.toDegrees(cartographic.latitude).toFixed(2) + ',    ' + '高度' + (updatedPositions[0].height ? updatedPositions[0].height : 0);
20                 document.getElementById(divId).innerHTML = coords;
21                 document.getElementById(divId).style.display = '';
22             } else {
23                 document.getElementById('coords').style.display = 'none';
24             }
25         });
26 
27     } else { //不能获取不显示
28         document.getElementById('coords').style.display = 'none';
29     }
30 }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

注意“coords"的div中的z-index的设置。

 

3、加载了天地图的注记服务;

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

4、加载多边形实体;

1 viewer.entities.add({
2    polygon: {
3         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]),
4         heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
5         material: Cesium.Color.RED.withAlpha(0.5),
6         outline: true,
7         outlineColor: Cesium.Color.BLACK
8     }
9 })

 

最后效果:

 

转载于:https://www.cnblogs.com/HandyLi/p/11098510.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: cesium-examples-master 是一个 Cesium示例项目。Cesium 是一个开源的3D地球可视化引擎,能够在Web上以浏览器为平台展示地球相关的数据和图形。cesium-examples-master 包含了一系列基于 Cesium 引擎的示例代码和样例数据,供开发人员学习和参考。 这个项目提供了丰富的示例,涵盖了各种场景和功能,如地形渲染、卫星图像展示、空中飞行效果、地球热力图、数据可视化等。每个示例都提供了完整的源代码和相关资源,开发人员可以直接运行和修改,快速了解 Cesium 的使用方式和功能特性。 cesium-examples-master 的目的是帮助开发人员加快上手 Cesium,提供具体的示例代码和实现思路,同时也是一个社区贡献的项目,任何人都可以向其中添加自己的示例代码。这对于想要共享自己的 Cesium 开发经验,或者想要通过Cesium实现自己的创意项目的开发者们来说都是很有帮助的。 总之,cesium-examples-master 是一个集合了Cesium引擎的示例代码和样例数据的项目,通过这个项目,开发人员可以学习和参考Cesium的使用方式和功能特性,同时也可以贡献自己的示例代码,为Cesium社区贡献自己的力量。 ### 回答2: cesium-examples-master是一个开源的Cesium.js示例库。Cesium.js是一个基于WebGL的开源JavaScript库,用于创建3D地球和地理信息可视化应用程序。 cesium-examples-master库中包含了大量的示例代码,用于演示如何使用Cesium.js库进行地球和地理数据可视化。这些示例涵盖了各种应用场景,包括地球浏览、地理数据可视化、飞行模拟、地球时间轴等等。 这个示例库非常有用,特别是对于那些想要利用Cesium.js构建自己的3D地球和地理信息应用程序的开发人员来说。通过学习和理解这些示例代码,开发人员可以快速上手并加快应用程序的开发速度。 此外,cesium-examples-master还可以作为一个学习资源,供初学者学习Cesium.js库的使用。通过运行和修改这些示例代码,初学者可以逐步掌握Cesium.js的各种功能和技术知识。 总之,cesium-examples-master是一个非常有用的示例库,可以帮助开发人员和初学者更好地了解和应用Cesium.js库。无论是开发3D地球和地理信息应用程序,还是学习Cesium.js库的使用,这个示例库都是一个很好的资源。如果你对Cesium.js感兴趣,不妨去查看cesium-examples-master库并尝试运行其中的示例代码。 ### 回答3: cesium-examples-master是一个Cesium示例代码库。Cesium是一个开源的地球可视化库,用于在Web浏览器中创建交互式三维地球和地球数据的应用程序。cesium-examples-master提供了许多不同类型的示例,展示了使用Cesium创建各种地球可视化应用的能力。这些示例包括地球模型的加载、地形数据的展示、地图投影的转换、地球上的点、线和面的创建等等。通过这些示例,开发者可以学习如何使用Cesium的API来构建自己的地球可视化项目,并根据自己的需求进行修改和扩展。cesium-examples-master的代码注释详细,对于刚开始学习Cesium的开发者来说是一个很好的参考工具。在cesium-examples-master中,开发者可以找到各种应用场景的示例代码,例如飞行模拟、地球上的图层切换、轨迹的绘制和动态效果等等。总之,cesium-examples-master对于想要学习和探索Cesium地球可视化库的开发者来说是一个非常有用的资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值