Cesium加载超图服务
引入下面封装好的js文件
export class SuperMap2DImagryProvider {
constructor(superMapUrl, options) {
this.options = Object.assign({}, {
minimumLevel: 0,
maximumLevel: 18,
epsgcode: 4326,
token: ""
}, options);
this.scales84 = [3.38032714321E-9, 6.76065428641E-9, 1.352130857282E-8, 2.704261714564E-8, 5.408523429128E-8,
1.0817046858257E-7, 2.1634093716514E-7, 4.3268187433028E-7, 8.6536374866056E-7, 1.73072749732112E-6,
3.46145499464224E-6, 6.92290998928448E-6, 1.3845819978568952E-5, 2.7691639957137904E-5,
5.538327991427581E-5, 1.1076655982855162E-4, 2.2153311965710323E-4, 4.4306623931420646E-4,
8.861324786284129E-4, 0.0017722649572568258, 0.0035445299145136517, 0.007089059829027303
]
this.scalesweb = [1.69016357160E-9, 3.38032714321E-9, 6.76065428641E-9, 1.352130857282E-8, 2.704261714564E-8,
5.408523429128E-8, 1.0817046858257E-7, 2.1634093716514E-7, 4.3268187433028E-7, 8.6536374866056E-7,
1.73072749732112E-6, 3.46145499464224E-6, 6.92290998928448E-6, 1.3845819978568952E-5,
2.7691639957137904E-5, 5.538327991427581E-5, 1.1076655982855162E-4, 2.2153311965710323E-4,
4.4306623931420646E-4, 8.861324786284129E-4, 0.0017722649572568258, 0.0035445299145136517,
0.007089059829027303
]
this.layer = this.createSuperMapLayer(superMapUrl, this.options)
}
createSuperMapLayer (superMapUrl, options) {
const rectangle = Cesium.Rectangle.fromDegrees(-180, -90, 180, 90)
const epsgcode = options.epsgcode
let tilingScheme = ''
let minlevel = 0
let maxlevel = 22
let originx = 0
let originy = 0
if (epsgcode === 4326) {
tilingScheme = new Cesium.GeographicTilingScheme({
numberOfLevelZeroTilesX: 2,
numberOfLevelZeroTilesY: 1
})
originx = -180
originy = 90
if (options.minimumLevel !== undefined) {
minlevel = options.minimumLevel
} else {
minlevel = 0;
}
if (options.maximumLevel !== undefined) {
maxlevel = options.maximumLevel
} else {
maxlevel = 22;
}
}
if (epsgcode === 3857) {
tilingScheme = new Cesium.WebMercatorTilingScheme()
originx = -20037508.34
originy = 20037508.34
if (options.minimumLevel !== undefined) {
console.log("not undefined")
minlevel = options.minimumLevel
} else {
minlevel = 0;
}
if (options.maximumLevel !== undefined) {
maxlevel = options.maximumLevel
} else {
maxlevel = 22;
}
}
const mapUrl = `${superMapUrl}/tileImage.png?transparent=true&cacheEnabled=true&width=256&height=256&x={x}&y={y}&scale={scale}&redirect=false&overlapDisplayed=false&token=${options.token}&origin={'x':${originx},'y':${originy}}`
const layerProvider = new Cesium.UrlTemplateImageryProvider({
url: mapUrl,
rectangle: rectangle,
minimumLevel: minlevel || 0,
maximumLevel: maxlevel || 22,
tilingScheme: tilingScheme,
customTags: {
scale: (imageryProvider, x, y, level) => {
if (epsgcode === 4326) {
return this.scales84[level]
}
if (epsgcode === 3857) {
return this.scalesweb[level]
}
}
}
});
return layerProvider
}
}
使用如下
// 定义超图的地地图址 url 超图服务地址
const layerProvider = new SuperMap2DImagryProvider(url, { token: serverToken })
//在cesium初始化中加入
imageryProvider: layerProvider.layer,