| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /**
- * @Author : Caven Chen
- */
-
- import { Cesium } from '../../namespace'
- const { ImageryLayer } = Cesium
-
- class BaseLayerPicker {
- constructor(options) {
- if (!options.globe) {
- throw new Error('globe is required')
- }
- this._globe = options.globe
- this._imageryLayers = []
- this._selectedImageryLayer = undefined
- this._count = 0
- }
-
- set selectedImageryLayer(imageryLayer) {
- if (!imageryLayer || !imageryLayer.layers) {
- new Error('imagery format error')
- }
-
- if (
- this._selectedImageryLayer &&
- imageryLayer.id === this._selectedImageryLayer.id
- ) {
- return
- }
-
- if (
- this._selectedImageryLayer &&
- imageryLayer.id !== this._selectedImageryLayer.id
- ) {
- for (let i = 0; i < this._selectedImageryLayer.cache.length; i++) {
- this._globe.imageryLayers.remove(this._selectedImageryLayer.cache[i])
- }
- imageryLayer.cache = []
- }
-
- for (let i = imageryLayer.layers.length - 1; i >= 0; i--) {
- let layer = imageryLayer.layers[i]
- let imagery = ImageryLayer.fromProviderAsync(layer, imageryLayer.options)
- layer && this._globe.imageryLayers.add(imagery, 0)
- imageryLayer.cache.push(imagery)
- }
- this._selectedImageryLayer = imageryLayer
- }
-
- get selectedImageryLayer() {
- return this._selectedImageryLayer
- }
-
- /**
- *
- * @param imageryLayer
- * @param options
- * @returns {BaseLayerPicker}
- */
- addImageryLayer(imageryLayer, options = {}) {
- let imageryLayers = []
- if (Array.isArray(imageryLayer)) {
- imageryLayers = imageryLayer.slice(0)
- } else {
- imageryLayers = [imageryLayer]
- }
- this._count++
- this._imageryLayers.push({
- id: `imagery-no-${this._count}`,
- layers: imageryLayers,
- cache: [],
- })
- return this
- }
-
- /**
- *
- * @param index
- * @returns {BaseLayerPicker}
- */
- changeImageryLayer(index) {
- if (index > this._imageryLayers.length - 1) {
- throw new Error('index error')
- }
- this.selectedImageryLayer = this._imageryLayers[index]
- return this
- }
- }
-
- export default BaseLayerPicker
|