2 changed files with 1 additions and 140 deletions
@ -1,131 +0,0 @@ |
|||||
import axios from 'axios'; |
|
||||
|
|
||||
class SuperMapImageryLayer { |
|
||||
constructor(url, options) { |
|
||||
this.viewer = options.viewer; |
|
||||
this.options = options || {}; |
|
||||
this.layerUrl = url; |
|
||||
this.layerName = ''; |
|
||||
this.layerInfo = null; |
|
||||
this.layerProvider = null; |
|
||||
this.scales84 = []; |
|
||||
this.scalesweb = []; |
|
||||
this._delegate = null; |
|
||||
this.loadData(); |
|
||||
} |
|
||||
loadData() { |
|
||||
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.6901635716e-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 |
|
||||
]; |
|
||||
axios |
|
||||
.get(`${this.layerUrl}.json`) |
|
||||
.then((res) => { |
|
||||
if (res.status !== 200) return; |
|
||||
const result = res.data; |
|
||||
this.layerName = this.options.name || result.name; |
|
||||
this.layerInfo = result; |
|
||||
const rectangle = sycim.Rectangle.fromDegrees(-180, -90, 180, 90); |
|
||||
const epsgcode = result.prjCoordSys.epsgCode; |
|
||||
let tilingScheme = ''; |
|
||||
let minlevel = 0; |
|
||||
let maxlevel = 22; |
|
||||
let originx = 0; |
|
||||
let originy = 0; |
|
||||
|
|
||||
if (epsgcode === 4326) { |
|
||||
tilingScheme = new sycim.GeographicTilingScheme({ |
|
||||
numberOfLevelZeroTilesX: 2, |
|
||||
numberOfLevelZeroTilesY: 1 |
|
||||
}); |
|
||||
originx = -180; |
|
||||
originy = 90; |
|
||||
if (this.options.minimumLevel !== undefined) { |
|
||||
minlevel = this.options.minimumLevel; |
|
||||
} else { |
|
||||
minlevel = 0; |
|
||||
} |
|
||||
if (this.options.maximumLevel !== undefined) { |
|
||||
maxlevel = this.options.maximumLevel; |
|
||||
} else { |
|
||||
maxlevel = 22; |
|
||||
} |
|
||||
} |
|
||||
if (epsgcode === 3857) { |
|
||||
tilingScheme = new sycim.WebMercatorTilingScheme(); |
|
||||
originx = -20037508.34; |
|
||||
originy = 20037508.34; |
|
||||
if (this.options.minimumLevel !== undefined) { |
|
||||
console.log('not undefined'); |
|
||||
minlevel = this.options.minimumLevel; |
|
||||
} else { |
|
||||
minlevel = 0; |
|
||||
} |
|
||||
if (this.options.maximumLevel !== undefined) { |
|
||||
maxlevel = this.options.maximumLevel; |
|
||||
} else { |
|
||||
maxlevel = 22; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
this.layerProvider = new sycim.Cesium.UrlTemplateImageryProvider({ |
|
||||
url: |
|
||||
this.layerUrl + |
|
||||
"/tileImage.png?transparent=true&cacheEnabled=true&width=256&height=256&x={x}&y={y}&scale={scale}&redirect=false&overlapDisplayed=false&origin={'x':" + |
|
||||
originx + |
|
||||
",'y':" + |
|
||||
originy + |
|
||||
'}', |
|
||||
rectangle: rectangle, |
|
||||
minimumLevel: minlevel || 0, |
|
||||
maximumLevel: maxlevel || 22, |
|
||||
tilingScheme: tilingScheme, |
|
||||
customTags: { |
|
||||
scale: function (imageryProvider, x, y, level) { |
|
||||
if (epsgcode === 4326) { |
|
||||
return this.scales84[level]; |
|
||||
} |
|
||||
if (epsgcode === 3857) { |
|
||||
return this.scalesweb[level]; |
|
||||
} |
|
||||
}, |
|
||||
scales84: this.scales84, |
|
||||
scalesweb: this.scalesweb // Add the missing property "scalesweb"
|
|
||||
} |
|
||||
}); |
|
||||
|
|
||||
this._delegate = viewer.imageryLayers.addImageryProvider(this.layerProvider); |
|
||||
}) |
|
||||
.catch((err) => { |
|
||||
console.log(err); |
|
||||
}); |
|
||||
} |
|
||||
zoomToLayer() { |
|
||||
if (!this._delegate) return; |
|
||||
const { left, bottom, right, top } = this.layerInfo.bounds; |
|
||||
this.viewer.camera.flyTo({ |
|
||||
destination: sycim.Rectangle.fromDegrees(left, bottom, right, top) |
|
||||
}); |
|
||||
} |
|
||||
show() { |
|
||||
if (!this._delegate) return; |
|
||||
this._delegate.show = true; |
|
||||
} |
|
||||
hide() { |
|
||||
if (!this._delegate) return; |
|
||||
this._delegate.show = false; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
export default SuperMapImageryLayer; |
|
Loading…
Reference in new issue