BaseLayerPicker
问题?
相关控件说明
- BaseLayerPicker中内置的Provider(数据源包括Esri,Bing,MapBox的数据服务),在国内网络环境下访问存在一些限制。基于BaseLayerPicker自定义一些国内常用的数据源(天地图、百度地图、高德地图等)就很有必要。
- 内置的地图服务部分需要获取Cesium.Ion授权,对于一些需要内网部署的平台是很大的问题。
实现代码块
方案一:
// 天地图
var image_Source = new Cesium.WebMapTileServiceImageryProvider({
url: "http://t0.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=申请的天地图token",
layer: "img",
style: "default",
format: "tiles",
tileMatrixSetID: "w",
credit: new Cesium.Credit('天地图全球影像服务'),
subdomains: ['t0', "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
maximumLevel: 18,
show: false
});
//创建viewer实例
this.viewer = new Cesium.Viewer(target, {
imageryProvider: image_Source,//自定义初始化底图
});
效果图如下:
方案二:
this.viewer = new Cesium.Viewer(target,{
baseLayerPicker: true, //是否显示图层选择控件
});
//设置ProviderViewModel:
this.esriMapModel = new Cesium.ProviderViewModel({
name: 'esri Maps',
iconUrl: Cesium.buildModuleUrl('./Widgets/Images/ImageryProviders/esriWorldImagery.png'),
tooltip: 'ArcGIS 地图服务',
creationFunction: function () {
//定义ImageryProvider
return new Cesium.ArcGisMapServerImageryProvider({
url: 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer',
enablePickFeatures: false
});
}
});
//新增一个
this.providerViewModels = this.viewer.baseLayerPicker.viewModel.imageryProviderViewModels;
this.providerViewModels.push(this.esriMapModel);
this.viewer.baseLayerPicker.viewModel.imageryProviderViewModels = this.providerViewModels;
效果图如下:
方案三:
Cesium.Ion.defaultAccessToken='你的token';