mirror of
				https://github.com/jiawanlong/Cesium-Examples.git
				synced 2025-11-04 01:04:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
 * @FilePath: LayerOceanCurrent.js
 | 
						|
 * @Author: chenqian
 | 
						|
 * @Date: 2022-08-22 16:08:21
 | 
						|
 * @LastEditors: cheniqan
 | 
						|
 * @LastEditTime: 2022-11-21 18:09:22
 | 
						|
 * @Descripttion:
 | 
						|
 */
 | 
						|
// 海流流线图
 | 
						|
import Base from './../AbsLayerObj.js'
 | 
						|
// import DataModule from './DataOceanCurrent'
 | 
						|
// import * as Cesium from "cesium";
 | 
						|
import RenderDynamicCurrent from './current/RenderDynamicCurrent.js'
 | 
						|
 | 
						|
class LayerOceanCurrent extends Base {
 | 
						|
  constructor(config) {
 | 
						|
    super(config)
 | 
						|
    this.belong = 'cesium'
 | 
						|
    // this.dataModule = new DataModule()
 | 
						|
  }
 | 
						|
 | 
						|
  get currentIdx() {
 | 
						|
    return currentIdx
 | 
						|
  }
 | 
						|
 | 
						|
  load(data) {
 | 
						|
    data = this.buildResult( data )
 | 
						|
    this.data = data
 | 
						|
    // this.data = await this.dataModule.request(options)
 | 
						|
    // this.emit('data', this.data)
 | 
						|
    return this
 | 
						|
  }
 | 
						|
 | 
						|
  draw(option) {
 | 
						|
    this.data = option.data || this.data
 | 
						|
    if (!this.data) return
 | 
						|
    if (!this.data.length) return
 | 
						|
    this.render = new RenderDynamicCurrent(this.map, Cesium)
 | 
						|
    this.render.id = 'RenderDynamicCurrent_' + this.id
 | 
						|
    this.render.parseData(this.data)
 | 
						|
    this.render.Render()
 | 
						|
  }
 | 
						|
 | 
						|
  clean() {
 | 
						|
    if (this.render) this.render.remove()
 | 
						|
    this.render = null
 | 
						|
    // this.dataModule.cancel()
 | 
						|
  }
 | 
						|
  update(options) {
 | 
						|
    if (this.render) this.render.updateO(options)
 | 
						|
  }
 | 
						|
 | 
						|
  buildResult(data) {
 | 
						|
    let field = []
 | 
						|
    let w = data.gridWidth
 | 
						|
    let h = data.gridHeight
 | 
						|
    let i = 0
 | 
						|
    for (let x = 0; x < w; x++) {
 | 
						|
      field[x] = []
 | 
						|
      for (let y = 0; y < h; y++) {
 | 
						|
        let vx = Number(data.field[i++])
 | 
						|
        let vy = Number(data.field[i++])
 | 
						|
        let v = { x: vx, y: vy }
 | 
						|
        field[x][y] = v
 | 
						|
      }
 | 
						|
    }
 | 
						|
    let ydatas = [],
 | 
						|
      xdatas = []
 | 
						|
    for (let y = data.gridHeight - 1; y >= 0; y--) {
 | 
						|
      for (let x = 0; x < data.gridWidth; x++) {
 | 
						|
        xdatas.push(field[x][y].x)
 | 
						|
        ydatas.push(field[x][y].y)
 | 
						|
      }
 | 
						|
    }
 | 
						|
    let header = {
 | 
						|
      nx: data.gridWidth,
 | 
						|
      ny: data.gridHeight,
 | 
						|
      basicAngle: 0,
 | 
						|
      subDivisions: 0,
 | 
						|
      lo1: data.x0,
 | 
						|
      la1: data.y0,
 | 
						|
      lo2: data.x1,
 | 
						|
      la2: data.y1,
 | 
						|
      dx: data.dx || 0.8,
 | 
						|
      dy: data.dy || 0.8
 | 
						|
    }
 | 
						|
 | 
						|
    let uData = xdatas
 | 
						|
    let vData = ydatas
 | 
						|
    return [header, uData, vData]
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
export default LayerOceanCurrent
 |