ImageryLayerCollection类
Cesium.Viewer类对象中包含的imageryLayers属性就是ImageryLayerCollection类的实例,它包含了当前Cesium应用程序所有的ImageryLayer类对象,即所有影像图层,所以Cesium种的影像图层可以添加多个。
Cesium.ImageryLayerCollection类是ImageryLayer类对象的容器,它可以装载、放置多个ImageryLayer或ImageryProvider类对象,而且它内部放置的ImageryLayer或ImageryProvider类对象是有序的。
ImageryLayer类
Cesium.ImageryLayer类用于表示Cesium中的影像图层,它就相当于皮毛、衣服,将数据源包裹在内,它需要数据源(imageryProvider)为其提供内在丰富的地理空间信息和属性信息。同时,通过该类还能设置影像图层相关属性,比如透明度、亮度、对比度、色调等。
ImageryProvider类
Cesium.ImageryProvider类及其子类封装了加载各种影像图层的方法,其中Cesium.ImageryProvider类是抽象类、基类或者可将其理解为接口,它不能被直接实例化。上图中Cesium.ImageryLayer的第一个参数就是需要的图层数据,我们可以把ImageryProvider看作是影像图层的数据源(包裹在ImageryLayer类内部),我们想使用哪种影像图层数据或服务就用对应的ImageryProvider子类去加载,目前Cesium(1.6.2)提供了以下14种ImageryProvider。
示例1:
const imageryLayers = viewer.scene.imageryLayers; const osmImageryProvider = new Cesium.UrlTemplateImageryProvider({ url: "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", subdomains: ["a", "b", "c"], }); imageryLayers.addImageryProvider(osmImageryProvider);
示例2:
var cesiumAsset= "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjOWJkZDkxYS0yNTg3LTQxNzktYmY2MC1iZTRiN2M4ZjcxMjMiLCJpZCI6Njg0NDAsImlhdCI6MTYzMjU3OTQwOX0.5FzD9jZYCHbOziDOF3VNG5ErOhP3TzPaCZHZudmU5zg"; var tiandituTk='9b8b9b2f9280bb14599a178b89973ffa'; // 服务负载子域 var subdomains=['0','1','2','3','4','5','6','7']; Cesium.Ion.defaultAccessToken = cesiumAsset; const viewer = new Cesium.Viewer("cesiumContainer", { infoBox: false, // If set to false, the InfoBox widget will not be created. // baseLayerPicker: false, }); const imageryLayers = viewer.scene.imageryLayers; var tdt_base = new Cesium.WebMapTileServiceImageryProvider({ //影像底图 url: "http://t{s}.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&format=tiles&tk="+tiandituTk, subdomains: subdomains, layer: "tdtImgLayer", style: "default", format: "image/jpeg", tileMatrixSetID: "GoogleMapsCompatible",//使用谷歌的瓦片切片方式 show: true }); var tdt_legend = new Cesium.WebMapTileServiceImageryProvider({ //影像注记 url: "http://t{s}.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.jpg&tk="+tiandituTk, subdomains: subdomains, layer: "tdtCiaLayer", style: "default", format: "image/jpeg", tileMatrixSetID: "GoogleMapsCompatible", show: true }) imageryLayers.addImageryProvider(tdt_base); imageryLayers.addImageryProvider(tdt_legend); // 将三维球定位到中国 viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(103.84, 31.15, 17850000), orientation: { heading : Cesium.Math.toRadians(348.4202942851978), pitch : Cesium.Math.toRadians(-89.74026687972041), roll : Cesium.Math.toRadians(0) }, complete:function callback() { // 定位完成之后的回调函数 } });
参考博客:https://blog.csdn.net/ls870061011/article/details/122710390?spm=1001.2014.3001.5501
https://blog.csdn.net/sinat_31213021/article/details/119873221
https://blog.csdn.net/m0_37755995/article/details/123525107
标签:imageryLayers,Cesium,cesium,图层,加载,ImageryProvider,影像,ImageryLayer From: https://www.cnblogs.com/wq805/p/16592251.html