| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /**
- * @Author: Caven
- * @Date: 2023-01-07 15:49:26
- */
-
- import { DeveloperError, EllipsoidTerrainProvider } from '@cesium/engine'
-
- class BaseLayerPicker {
- constructor(options) {
- if (!options.globe) {
- throw new DeveloperError('globe is required')
- }
- this._globe = options.globe
- this._imageryProviders = []
- this._terrainProviders = []
- this._selectedImagery = undefined
- this._selectedTerrain = undefined
- }
-
- set selectedImagery(imagery) {
- if (!imagery || !imagery.providers) {
- new DeveloperError('imagery format error')
- }
- const imageryLayers = this._globe.imageryLayers
- if (!this._selectedImagery) {
- for (let i = imagery.providers.length - 1; i >= 0; i--) {
- imageryLayers.addImageryProvider(imagery.providers[i], 0)
- }
- } else if (
- this._selectedImagery &&
- imagery.id !== this._selectedImagery.id
- ) {
- imageryLayers.removeAll()
- for (let i = imagery.providers.length - 1; i >= 0; i--) {
- imageryLayers.addImageryProvider(imagery.providers[i], 0)
- }
- }
- this._selectedImagery = imagery
- }
-
- get selectedImagery() {
- return this._selectedImagery
- }
-
- set selectedTerrain(terrian) {
- if (this.selectedImagery !== terrian) {
- this._globe.depthTestAgainstTerrain = !(
- terrian instanceof EllipsoidTerrainProvider
- )
- this._globe.terrainProvider = terrian
- this._selectedTerrain = terrian
- }
- }
-
- get selectedTerrain() {
- return this._selectedTerrain
- }
-
- /**
- *
- * @param provider
- * @returns {BaseLayerPicker}
- */
- addImageryProvider(provider) {
- let providers = []
- let len = this._imageryProviders.length + 1
- if (!Array.isArray(provider)) {
- providers = [provider]
- } else {
- providers = provider.since(0)
- }
- this._imageryProviders.push({
- id: `dc-imagery-${len}`,
- providers
- })
- return this
- }
-
- /**
- *
- * @param provider
- * @returns {BaseLayerPicker}
- */
- addTerrainProvider(provider) {
- this._terrainProviders.push(provider)
- return this
- }
-
- /**
- *
- * @param index
- * @returns {BaseLayerPicker}
- */
- changeImagery(index) {
- if (index > this._imageryProviders.length - 1) {
- new DeveloperError('index error ')
- return this
- }
- this.selectedImagery = this._imageryProviders[index]
- return this
- }
-
- /**
- *
- * @param index
- * @returns {BaseLayerPicker}
- */
- changeTerrain(index) {
- if (index > this._terrainProviders.length - 1) {
- new DeveloperError('index error ')
- return this
- }
- this.selectedTerrain = this._terrainProviders[index]
- }
- }
-
- export default BaseLayerPicker
|