zoukankan      html  css  js  c++  java
  • 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 })

    最后效果:

  • 相关阅读:
    Android编译环境配置(Ubuntu 14.04)
    Android中的接口回调技术
    我为什么要拒绝Ctrl+C和Ctrl+V?
    软件设计网站大全
    国内及Github优秀开发人员列表
    Linux常用指令
    Linux系统目录结构
    UML图
    Android软件设计---Dumpsys工具使用
    Android应用程序Monkey测试
  • 原文地址:https://www.cnblogs.com/HandyLi/p/11098510.html
Copyright © 2011-2022 走看看