• cesium【03-图层】


    一、初始化图层参数:
    imageryProvider:图层资源,baseLayerPicker为false才有效
    terrainProvider:地形资源

    let container = 'cesiumContainer'
    let options = {
        baseLayerPicker:false,//默认true,图层选择器,右上角
        //图层资源,baseLayerPicker为false才有效
        imageryProvider:new Cesium.UrlTemplateImageryProvider({
            url:'http://t2.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=b0b6f6127490e1226b057bf3e90dfa45',//用于请求图块的URL模板
            subdomains:'abc',//子域名
            tileWidth:256,//图像图块的可选像素宽度。
            tileHeight:256,//图像图块的可选像素高度。
        }),
        //地形资源
        terrainProvider:new Cesium.CesiumTerrainProvider({
            url:'https://terrain.gbim360.com/',//地形服务
            requestVertexNormals:true,//用于指示客户端是否应从服务器请求其他照明信息
        })
    }
    let viewer = new Cesium.Viewer(container, options)

    二、初始化之后图层的操作:

    /**
     * 添加图层
     * imageryProvider:图层资源
     * index:添加图层的索引。如果省略,该图层将添加到所有现有图层的顶部
     */
     viewer.imageryLayers.addImageryProvider(imageryProvider,index)
    
    /**
     *删除某一个图层 
     * layer:要删除的图层对象
     */
    viewer.imageryLayers.remove(layer)
    
    /**
     * 删除所有图层
     */
    viewer.imageryLayers.removeAll()
    
    /**
     * 销毁所有图层
     */
    viewer.imageryLayers.destroy()

    更多操作技巧请查看上图中的API

    三、常用图层资源类型

    //图层资源
    function imageryProviderFn(type){
        let layers;
        if(type === 'ArcGIS'){
            //ArcGIS 
            layers = new Cesium.ArcGisMapServerImageryProvider({
                url:'',//ArcGIS MapServer服务的URL。
                token:'',//ArcGIS令牌,用于通过ArcGIS MapServer服务进行身份验证。
                tileWidth:256,//瓦片宽度,默认值
                tileHeight:256,//瓦片高度,默认值
            })
        }else if(type === 'BingMaps'){
            //Bing Maps
            let bingStyle = {
                'AERIAL':Cesium.BingMapsStyle.AERIAL,//航空影像
                'DEMAND':Cesium.BingMapsStyle.AERIAL_WITH_LABELS_ON_DEMAND,//与路覆盖的航拍图像
                'DARK':Cesium.BingMapsStyle.CANVAS_DARK,//路线图的深色版本。
                'GRAY':Cesium.BingMapsStyle.CANVAS_GRAY,//路线图的灰度版本
                'LIGHT':Cesium.BingMapsStyle.CANVAS_LIGHT,//路线图的较浅​​版本
                'BART':Cesium.BingMapsStyle.COLLINS_BART,//柯林斯·巴特的影像
                'SURVEY':Cesium.BingMapsStyle.ORDNANCE_SURVEY,//军械测量图像。该图像仅在英国伦敦地区可见
                'ROAD_ON_DEMAND':Cesium.BingMapsStyle.ROAD_ON_DEMAND,//没有其他图像的道路
            }
            layers = new Cesium.BingMapsImageryProvider({
                url:'',//图层资源
                key:'',// Bing Maps密钥
                mapStyle:bingStyle.DEMAND,//Bing图像的类型。
            })
        }else if(type === 'OSM'){
            //OpenStreetMap
            layers = new Cesium.OpenStreetMapImageryProvider({
                url : 'https://a.tile.openstreetmap.org/',//图层资源
            })
        }else if(type === 'TMS'){
            //提供由MapTiler,GDAL2Tiles等生成的切片图像的图像提供程序 
            layers = new Cesium.TileMapServiceImageryProvider({
               url : '../images/cesium_maptiler/Cesium_Logo_Color',//服务器上图像切片的可选路径
               fileExtension: 'png',//服务器上图像的文件扩展名
               rectangle: new Cesium.Rectangle(//图像覆盖的矩形(以弧度表示),默认是最大值
                   Cesium.Math.toRadians(-120.0),
                   Cesium.Math.toRadians(20.0),
                   Cesium.Math.toRadians(-60.0),
                   Cesium.Math.toRadians(40.0)
                )
            })
        }else if(type === 'Mapbox'){
            //Mapbox
            layers = new Cesium.MapboxImageryProvider({
                url:'',//Mapbox服务器网址
                mapId: 'mapbox.streets',//Mapbox地图ID
                accessToke:'thisIsMyAccessToken',//图像的公共访问令牌
                format:'png',//图像请求的格式
                rectangle: new Cesium.Rectangle(//图像覆盖的矩形(以弧度表示),默认是最大值
                   Cesium.Math.toRadians(-120.0),
                   Cesium.Math.toRadians(20.0),
                   Cesium.Math.toRadians(-60.0),
                   Cesium.Math.toRadians(40.0)
                )
            })
        }else if(type === 'IMAGE'){
            //提供单个顶层图像图块
            layers = new Cesium.SingleTileImageryProvider({
                url:'',//地址
                rectangle: new Cesium.Rectangle(//图像覆盖的矩形(以弧度表示),默认是最大值
                   Cesium.Math.toRadians(-120.0),
                   Cesium.Math.toRadians(20.0),
                   Cesium.Math.toRadians(-60.0),
                   Cesium.Math.toRadians(40.0)
                )
            })
        }else if(type === 'XYZ'){
            //XYZ,通过使用指定的URL模板请求图块来提供图像。
            layers = new Cesium.UrlTemplateImageryProvider({
                url:'',//用于请求图块的URL模板
                subdomains:'abc',//子域名
                tileWidth:256,//图像图块的可选像素宽度。
                tileHeight:256,//图像图块的可选像素高度。
            })
        }else if(type === 'WMS'){
            //WMS
            layers =new Cesium.WebMapServiceImageryProvider({
                url:'',//WMS服务的URL
                layers:'layers',//地图图层名称
                parameters:{
                    version:'1.3.0',//wms版本
                    format:'image/png',//地图请求参数类型
                },//附加参数,用于通过GetMap URL传递到WMS服务器。
                tileWidth:256,//图像图块的可选像素宽度。
                tileHeight:256//图像图块的可选像素高度。
            })
        }else if(type === 'WMTS'){
            //WMTS
            layers = new Cesium.WebMapTileServiceImageryProvider({
                url:'',//WMTS服务的URL
                format:'image/jpeg',//MIME类型,用于从服务器检索图像
                layer:'USGSShadedReliefOnly',//WMTS请求的层名称
                style:'default',//WMTS请求的样式名称
                tileMatrixSetID :'default028mm',//用于WMTS请求的TileMatrixSet的标识符
                tileWidth:256,//图像图块的可选像素宽度
                tileHeight:256,//图像图块的可选像素高度
            })
        }
        return layers;
    }

    四、常用地形资源类型

    //地形
    function terrainProviderFn(type){
        let terrain;
        if(type === 1){
            //谷歌地形高度图(height map)方式生成地形
            terrain = Cesium.GoogleEarthEnterpriseTerrainProvider({
                url:'',//地形资源
            })
        }else if(type ===2){
            //光滑椭球体。这个地形不请求任何服务数据,也没有任何地形起伏效果。一般用作一些太空类展示项目
            terrain = new Cesium.EllipsoidTerrainProvider({
                ellipsoid:Cesium.Ellipsoid.WGS84
            })
        }else if(type ===3){
            //高经度全球地形,地形支持光照和水面效果
            terrain = new Cesium.CesiumTerrainProvider({
                url:'https://terrain.gbim360.com/',//地形服务
                requestVertexNormals:true,//用于指示客户端是否应从服务器请求其他照明信息
            })
        }else if(type ===4){
            //这个服务数据是90米采样精度的全球数据,并且包含水深数据
            terrain = new Cesium.VRTheWorldTerrainProvider({
                url:'',
            })
        }
        return terrain;
    }
  • 相关阅读:
    继承与多态——动手又动脑
    类与对象--动手又动脑
    Go语言接口
    GO语言结构体
    GO指针
    GO函数
    GO获取随机数
    GO基础
    Go语言的%d,%p,%v等占位符的使用
    GO语言常量和变量
  • 原文地址:https://www.cnblogs.com/MaShuai666/p/12727769.html
Copyright © 2020-2023  润新知