@antv/l7-layers 2.5.45 → 2.5.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/core/BaseLayer.js +1 -0
- package/es/core/BaseLayer.js.map +1 -1
- package/es/earth/models/base.js +2 -0
- package/es/earth/models/base.js.map +1 -1
- package/es/image/models/image.js +4 -0
- package/es/image/models/image.js.map +1 -1
- package/es/imagetile/utils/ImageTile.js +3 -1
- package/es/imagetile/utils/ImageTile.js.map +1 -1
- package/es/imagetile/utils/Tile.js +3 -0
- package/es/imagetile/utils/Tile.js.map +1 -1
- package/lib/core/BaseLayer.js +1 -0
- package/lib/core/BaseLayer.js.map +1 -1
- package/lib/earth/models/base.js +2 -0
- package/lib/earth/models/base.js.map +1 -1
- package/lib/image/models/image.js +4 -0
- package/lib/image/models/image.js.map +1 -1
- package/lib/imagetile/utils/ImageTile.js +3 -1
- package/lib/imagetile/utils/ImageTile.js.map +1 -1
- package/lib/imagetile/utils/Tile.js +3 -0
- package/lib/imagetile/utils/Tile.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/BaseLayer.ts"],"names":["layerIdCounter","BaseLayer","TYPES","IGlobalConfigService","IShaderModuleService","config","dataSourceNeedUpdate","dataMappingNeedUpdate","filterNeedUpdate","featureScaleNeedUpdate","StyleAttrNeedUpdate","init","SyncBailHook","afterInit","beforeRender","beforeRenderData","SyncWaterfallHook","afterRender","SyncHook","beforePickingEncode","afterPickingEncode","beforeHighlight","afterHighlight","beforeSelect","afterSelect","beforeDestroy","afterDestroy","enable","dataState","getLayerConfig","autoFit","fitBoundsOptions","fitBounds","emit","reRender","name","id","zIndex","rawConfig","configService","configToUpdate","inited","needUpdateConfig","sceneId","container","get","SceneID","setLayerConfig","sceneContainer","plugin","plugins","push","enableMultiPassRenderer","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","cameraService","ICameraService","coordinateService","ICoordinateSystemService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","target","type","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","options","rawAnimate","data","setSource","sourceOption","layerSource","setData","on","passes","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","cfg","scaleOptions","rendering","renderLayers","getEncodedData","length","renderModels","activeOption","enableHighlight","color","highlightColor","x","y","pick","pickedFeatureID","then","setTimeout","option","enableSelect","selectColor","blend","layerModelNeedUpdate","visible","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","source","getSource","extent","isValid","some","v","Math","abs","off","sourceEvent","destroy","clearAllAttributes","removeAllListeners","models","model","layerModel","clearModels","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","encodedData","getLayerAttributeScale","ticks","items","map","item","value","invertExtent","range","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","triangulation","segmentNumber","shaderModuleService","registerModule","vs","fs","getModule","uniforms","createModel","createAttributesAndIndices","attributes","elements","BlendTypes","BlendType","normal","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","indexOf","isVisible","Error","buildModels","draw","getUninforms","time","console","warn","valuesOrCallback","defaultValues","undefined","callback","EventEmitter"],"mappings":"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","sourcesContent":["// @ts-ignore\nimport { SyncBailHook, SyncHook, SyncWaterfallHook } from '@antv/async-hook';\nimport {\n BlendType,\n gl,\n IActiveOption,\n IAnimateOption,\n ICameraService,\n ICoordinateSystemService,\n IDataState,\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n IIconService,\n IInteractionService,\n ILayer,\n ILayerConfig,\n ILayerModel,\n ILayerModelInitializationOptions,\n ILayerPlugin,\n ILayerService,\n IMapService,\n IModel,\n IModelInitializationOptions,\n IMultiPassRenderer,\n IPass,\n IPickingService,\n IPostProcessingPass,\n IRendererService,\n IScale,\n IScaleOptions,\n IShaderModuleService,\n ISource,\n ISourceCFG,\n IStyleAttributeInitializationOptions,\n IStyleAttributeService,\n IStyleAttributeUpdateOptions,\n lazyInject,\n ScaleAttributeType,\n ScaleTypeName,\n ScaleTypes,\n StyleAttributeField,\n StyleAttributeOption,\n TYPES,\n} from '@antv/l7-core';\nimport Source from '@antv/l7-source';\nimport { encodePickingColor } from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\nimport { isFunction, isObject } from 'lodash';\nimport { normalizePasses } from '../plugins/MultiPassRendererPlugin';\nimport { BlendTypes } from '../utils/blend';\nimport { handleStyleDataMapping } from '../utils/dataMappingStyle';\nimport baseLayerSchema from './schema';\n/**\n * 分配 layer id\n */\nlet layerIdCounter = 0;\n\nexport default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter\n implements ILayer {\n public id: string = `${layerIdCounter++}`;\n public name: string = `${layerIdCounter}`;\n public type: string;\n public visible: boolean = true;\n public zIndex: number = 0;\n public minZoom: number;\n public maxZoom: number;\n public inited: boolean = false;\n public layerModelNeedUpdate: boolean = false;\n public pickedFeatureID: number | null = null;\n public selectedFeatureID: number | null = null;\n public styleNeedUpdate: boolean = false;\n public rendering: boolean;\n\n public dataState: IDataState = {\n dataSourceNeedUpdate: false,\n dataMappingNeedUpdate: false,\n filterNeedUpdate: false,\n featureScaleNeedUpdate: false,\n StyleAttrNeedUpdate: false,\n };\n // 生命周期钩子\n public hooks = {\n init: new SyncBailHook(),\n afterInit: new SyncBailHook(),\n beforeRender: new SyncBailHook(),\n beforeRenderData: new SyncWaterfallHook(),\n afterRender: new SyncHook(),\n beforePickingEncode: new SyncHook(),\n afterPickingEncode: new SyncHook(),\n beforeHighlight: new SyncHook(['pickedColor']),\n afterHighlight: new SyncHook(),\n beforeSelect: new SyncHook(['pickedColor']),\n afterSelect: new SyncHook(),\n beforeDestroy: new SyncHook(),\n afterDestroy: new SyncHook(),\n };\n\n // 待渲染 model 列表\n public models: IModel[] = [];\n\n // 每个 Layer 都有一个\n public multiPassRenderer: IMultiPassRenderer;\n\n // 注入插件集\n public plugins: ILayerPlugin[];\n\n public sourceOption: {\n data: any;\n options?: ISourceCFG;\n };\n\n public layerModel: ILayerModel;\n\n // TODO: 记录 sceneContainer 供创建子图层的时候使用 如 imageTileLayer\n public sceneContainer: Container | undefined;\n // TODO: 用于保存子图层对象\n public layerChildren: ILayer[] = [];\n\n @lazyInject(TYPES.IGlobalConfigService)\n protected readonly configService: IGlobalConfigService;\n\n @lazyInject(TYPES.IShaderModuleService)\n protected readonly shaderModuleService: IShaderModuleService;\n\n protected cameraService: ICameraService;\n\n protected coordinateService: ICoordinateSystemService;\n\n protected iconService: IIconService;\n\n protected fontService: IFontService;\n\n protected pickingService: IPickingService;\n\n protected rendererService: IRendererService;\n\n protected layerService: ILayerService;\n\n protected interactionService: IInteractionService;\n\n protected mapService: IMapService;\n\n protected styleAttributeService: IStyleAttributeService;\n\n protected layerSource: Source;\n\n protected postProcessingPassFactory: (\n name: string,\n ) => IPostProcessingPass<unknown>;\n protected normalPassFactory: (name: string) => IPass<unknown>;\n\n protected animateOptions: IAnimateOption = { enable: false };\n\n /**\n * 图层容器\n */\n private container: Container;\n\n private encodedData: IEncodeFeature[];\n\n private configSchema: object;\n\n private currentPickId: number | null = null;\n\n private rawConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n private needUpdateConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n /**\n * 待更新样式属性,在初始化阶段完成注册\n */\n private pendingStyleAttributes: Array<{\n attributeName: string;\n attributeField: StyleAttributeField;\n attributeValues?: StyleAttributeOption;\n defaultName?: string;\n updateOptions?: Partial<IStyleAttributeUpdateOptions>;\n }> = [];\n\n private scaleOptions: IScaleOptions = {};\n\n private animateStartTime: number;\n\n private aniamateStatus: boolean = false;\n\n // private pickingPassRender: IPass<'pixelPicking'>;\n\n constructor(config: Partial<ILayerConfig & ChildLayerStyleOptions> = {}) {\n super();\n this.name = config.name || this.id;\n this.zIndex = config.zIndex || 0;\n this.rawConfig = config;\n }\n\n public getLayerConfig() {\n return this.configService.getLayerConfig<ChildLayerStyleOptions>(this.id);\n }\n\n public updateLayerConfig(\n configToUpdate: Partial<ILayerConfig | ChildLayerStyleOptions>,\n ) {\n if (!this.inited) {\n this.needUpdateConfig = {\n ...this.needUpdateConfig,\n ...configToUpdate,\n };\n } else {\n const sceneId = this.container.get<string>(TYPES.SceneID);\n\n // @ts-ignore\n handleStyleDataMapping(configToUpdate, this); // 处理 style 中进行数据映射的属性字段\n\n this.configService.setLayerConfig(sceneId, this.id, {\n ...this.configService.getLayerConfig(this.id),\n ...this.needUpdateConfig,\n ...configToUpdate,\n });\n this.needUpdateConfig = {};\n }\n }\n\n /**\n * 注入图层容器,父容器为场景容器\n * RootContainer 1\n * -> SceneContainer 1.*\n * -> LayerContainer 1.*\n */\n public setContainer(container: Container, sceneContainer: Container) {\n this.container = container;\n this.sceneContainer = sceneContainer;\n }\n\n public getContainer() {\n return this.container;\n }\n\n public addPlugin(plugin: ILayerPlugin): ILayer {\n // TODO: 控制插件注册顺序\n // @example:\n // pointLayer.addPlugin(new MyCustomPlugin(), {\n // before: 'L7BuiltinPlugin'\n // });\n this.plugins.push(plugin);\n return this;\n }\n\n public init() {\n // 设置配置项\n const sceneId = this.container.get<string>(TYPES.SceneID);\n // 初始化图层配置项\n const { enableMultiPassRenderer = false } = this.rawConfig;\n this.configService.setLayerConfig(sceneId, this.id, {\n enableMultiPassRenderer,\n });\n\n // 全局容器服务\n\n // 场景容器服务\n this.iconService = this.container.get<IIconService>(TYPES.IIconService);\n this.fontService = this.container.get<IFontService>(TYPES.IFontService);\n\n this.rendererService = this.container.get<IRendererService>(\n TYPES.IRendererService,\n );\n this.layerService = this.container.get<ILayerService>(TYPES.ILayerService);\n this.interactionService = this.container.get<IInteractionService>(\n TYPES.IInteractionService,\n );\n\n this.pickingService = this.container.get<IPickingService>(\n TYPES.IPickingService,\n );\n this.mapService = this.container.get<IMapService>(TYPES.IMapService);\n this.cameraService = this.container.get<ICameraService>(\n TYPES.ICameraService,\n );\n this.coordinateService = this.container.get<ICoordinateSystemService>(\n TYPES.ICoordinateSystemService,\n );\n this.postProcessingPassFactory = this.container.get(\n TYPES.IFactoryPostProcessingPass,\n );\n this.normalPassFactory = this.container.get(TYPES.IFactoryNormalPass);\n\n // 图层容器服务\n this.styleAttributeService = this.container.get<IStyleAttributeService>(\n TYPES.IStyleAttributeService,\n );\n this.multiPassRenderer = this.container.get<IMultiPassRenderer>(\n TYPES.IMultiPassRenderer,\n );\n this.multiPassRenderer.setLayer(this);\n\n // 完成样式服务注册完成前添加的属性\n this.pendingStyleAttributes.forEach(\n ({ attributeName, attributeField, attributeValues, updateOptions }) => {\n this.styleAttributeService.updateStyleAttribute(\n attributeName,\n {\n // @ts-ignore\n scale: {\n field: attributeField,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n attributeValues,\n // @ts-ignore\n this.getLayerConfig()[attributeName],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n },\n );\n this.pendingStyleAttributes = [];\n\n // 获取插件集\n this.plugins = this.container.getAll<ILayerPlugin>(TYPES.ILayerPlugin);\n // 完成插件注册,传入场景和图层容器内的服务\n for (const plugin of this.plugins) {\n plugin.apply(this, {\n rendererService: this.rendererService,\n mapService: this.mapService,\n styleAttributeService: this.styleAttributeService,\n normalPassFactory: this.normalPassFactory,\n postProcessingPassFactory: this.postProcessingPassFactory,\n });\n }\n\n // 触发 init 生命周期插件\n this.hooks.init.call();\n // this.pickingPassRender = this.normalPassFactory('pixelPicking');\n // this.pickingPassRender.init(this);\n this.hooks.afterInit.call();\n\n // 触发初始化完成事件;\n this.emit('inited', {\n target: this,\n type: 'inited',\n });\n this.emit('add', {\n target: this,\n type: 'add',\n });\n return this;\n }\n /**\n * Model初始化前需要更新Model样式\n */\n public prepareBuildModel() {\n this.inited = true;\n this.updateLayerConfig({\n ...(this.getDefaultConfig() as object),\n ...this.rawConfig,\n });\n\n // 启动动画\n const { animateOption } = this.getLayerConfig();\n if (animateOption?.enable) {\n this.layerService.startAnimate();\n this.aniamateStatus = true;\n }\n }\n public color(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n // 设置 color、size、shape、style 时由于场景服务尚未完成(并没有调用 scene.addLayer),因此暂时加入待更新属性列表\n this.updateStyleAttribute('color', field, values, updateOptions);\n\n // this.pendingStyleAttributes.push({\n // attributeName: 'color',\n // attributeField: field,\n // attributeValues: values,\n // defaultName: 'colors',\n // updateOptions,\n // });\n return this;\n }\n\n // 为对应的图层传入纹理的编号名称(point/image 在 shape 方法中传入纹理名称的方法并不通用)\n public texture(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('texture', field, values, updateOptions);\n return this;\n }\n\n public rotate(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('rotate', field, values, updateOptions);\n return this;\n }\n public size(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('size', field, values, updateOptions);\n return this;\n }\n // 对mapping后的数据过滤,scale保持不变\n public filter(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('filter', field, values, updateOptions);\n return this;\n }\n\n public shape(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('shape', field, values, updateOptions);\n return this;\n }\n public label(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.pendingStyleAttributes.push({\n attributeName: 'label',\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n return this;\n }\n public animate(options: IAnimateOption | boolean) {\n let rawAnimate: Partial<IAnimateOption> = {};\n if (isObject(options)) {\n rawAnimate.enable = true;\n rawAnimate = {\n ...rawAnimate,\n ...options,\n };\n } else {\n rawAnimate.enable = options;\n }\n this.updateLayerConfig({\n animateOption: rawAnimate,\n });\n // this.animateOptions = options;\n return this;\n }\n\n public source(data: any, options?: ISourceCFG): ILayer {\n if (data?.data) {\n // 判断是否为source\n this.setSource(data);\n return this;\n }\n this.sourceOption = {\n data,\n options,\n };\n return this;\n }\n public setData(data: any, options?: ISourceCFG) {\n if (this.inited) {\n this.layerSource.setData(data, options);\n } else {\n this.on('inited', () => {\n this.layerSource.setData(data, options);\n });\n }\n\n return this;\n }\n public style(\n options: Partial<ChildLayerStyleOptions> & Partial<ILayerConfig>,\n ): ILayer {\n const { passes, ...rest } = options;\n\n // passes 特殊处理\n if (passes) {\n normalizePasses(passes).forEach(\n (pass: [string, { [key: string]: unknown }]) => {\n const postProcessingPass = this.multiPassRenderer\n .getPostProcessor()\n .getPostProcessingPassByName(pass[0]);\n if (postProcessingPass) {\n postProcessingPass.updateOptions(pass[1]);\n }\n },\n );\n }\n\n this.rawConfig = {\n ...this.rawConfig,\n ...rest,\n };\n if (this.container) {\n this.updateLayerConfig(this.rawConfig);\n this.styleNeedUpdate = true;\n }\n return this;\n }\n public scale(field: string | number | IScaleOptions, cfg?: IScale) {\n if (isObject(field)) {\n this.scaleOptions = {\n ...this.scaleOptions,\n ...field,\n };\n } else {\n this.scaleOptions[field] = cfg;\n }\n return this;\n }\n\n /**\n * 渲染所有的图层\n */\n public renderLayers(): void {\n this.rendering = true;\n\n this.layerService.renderLayers();\n\n this.rendering = false;\n }\n\n public render(): ILayer {\n // if (\n // this.needPick() &&\n // this.multiPassRenderer &&\n // this.multiPassRenderer.getRenderFlag()\n // ) {\n // this.multiPassRenderer.render();\n // } else if (this.needPick() && this.multiPassRenderer) {\n // this.renderModels();\n // } else {\n // this.renderModels();\n // }\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n // this.renderModels();\n\n // this.multiPassRenderer.render();\n // this.renderModels();\n return this;\n }\n\n public active(options: IActiveOption | boolean) {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableHighlight = isObject(options) ? true : options;\n if (isObject(options)) {\n activeOption.enableHighlight = true;\n if (options.color) {\n activeOption.highlightColor = options.color;\n }\n } else {\n activeOption.enableHighlight = !!options;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n public setActive(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n\n public select(option: IActiveOption | boolean): ILayer {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableSelect = isObject(option) ? true : option;\n if (isObject(option)) {\n activeOption.enableSelect = true;\n if (option.color) {\n activeOption.selectColor = option.color;\n }\n } else {\n activeOption.enableSelect = !!option;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n\n public setSelect(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n public setBlend(type: keyof typeof BlendType): void {\n this.updateLayerConfig({\n blend: type,\n });\n this.layerModelNeedUpdate = true;\n this.reRender();\n }\n public show(): ILayer {\n this.updateLayerConfig({\n visible: true,\n });\n this.reRender();\n return this;\n }\n\n public hide(): ILayer {\n this.updateLayerConfig({\n visible: false,\n });\n this.reRender();\n return this;\n }\n public setIndex(index: number): ILayer {\n this.zIndex = index;\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n return this;\n }\n\n public setCurrentPickId(id: number) {\n this.currentPickId = id;\n }\n\n public getCurrentPickId(): number | null {\n return this.currentPickId;\n }\n\n public setCurrentSelectedId(id: number) {\n this.selectedFeatureID = id;\n }\n\n public getCurrentSelectedId(): number | null {\n return this.selectedFeatureID;\n }\n public isVisible(): boolean {\n const zoom = this.mapService.getZoom();\n const {\n visible,\n minZoom = -Infinity,\n maxZoom = Infinity,\n } = this.getLayerConfig();\n return !!visible && zoom >= minZoom && zoom <= maxZoom;\n }\n\n public setMinZoom(minZoom: number): ILayer {\n this.updateLayerConfig({\n minZoom,\n });\n return this;\n }\n\n public getMinZoom(): number {\n const { minZoom } = this.getLayerConfig();\n return minZoom as number;\n }\n\n public getMaxZoom(): number {\n const { maxZoom } = this.getLayerConfig();\n return maxZoom as number;\n }\n\n public get(name: string) {\n const cfg = this.getLayerConfig();\n // @ts-ignore\n return cfg[name];\n }\n\n public setMaxZoom(maxZoom: number): ILayer {\n this.updateLayerConfig({\n maxZoom,\n });\n return this;\n }\n /**\n * zoom to layer Bounds\n */\n public fitBounds(fitBoundsOptions?: unknown): ILayer {\n if (!this.inited) {\n this.updateLayerConfig({\n autoFit: true,\n });\n return this;\n }\n const source = this.getSource();\n const extent = source.extent;\n const isValid = extent.some((v) => Math.abs(v) === Infinity);\n if (isValid) {\n return this;\n }\n this.mapService.fitBounds(\n [\n [extent[0], extent[1]],\n [extent[2], extent[3]],\n ],\n fitBoundsOptions,\n );\n return this;\n }\n\n public destroy() {\n this.hooks.beforeDestroy.call();\n // 清除sources事件\n this.layerSource.off('update', this.sourceEvent);\n\n this.multiPassRenderer.destroy();\n\n // 清除所有属性以及关联的 vao\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n // this.models.forEach((model) => model.destroy());\n\n this.hooks.afterDestroy.call();\n\n this.emit('remove', {\n target: this,\n type: 'remove',\n });\n\n this.removeAllListeners();\n\n // 解绑图层容器中的服务\n // this.container.unbind(TYPES.IStyleAttributeService);\n }\n public clear() {\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n }\n public clearModels() {\n this.models.forEach((model) => model.destroy());\n this.layerModel.clearModels();\n }\n\n public isDirty() {\n return !!(\n this.styleAttributeService.getLayerStyleAttributes() || []\n ).filter(\n (attribute) =>\n attribute.needRescale ||\n attribute.needRemapping ||\n attribute.needRegenerateVertices,\n ).length;\n }\n\n public setSource(source: Source) {\n // 清除旧 sources 事件\n if (this.layerSource) {\n this.layerSource.off('update', this.sourceEvent);\n }\n\n this.layerSource = source;\n\n // 已 inited 且启用聚合进行更新聚合数据\n if (this.inited && this.layerSource.cluster) {\n const zoom = this.mapService.getZoom();\n this.layerSource.updateClusterData(zoom);\n }\n // source 可能会复用,会在其它layer被修改\n this.layerSource.on('update', this.sourceEvent);\n }\n public getSource() {\n return this.layerSource;\n }\n\n public getScaleOptions() {\n return this.scaleOptions;\n }\n\n public setEncodedData(encodedData: IEncodeFeature[]) {\n this.encodedData = encodedData;\n }\n public getEncodedData() {\n return this.encodedData;\n }\n public getLegendItems(name: string): any {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n if (scale) {\n if (scale.ticks) {\n const items = scale.ticks().map((item: any) => {\n return {\n value: item,\n [name]: scale(item),\n };\n });\n return items;\n } else if (scale.invertExtent) {\n const items = scale.range().map((item: any) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n return items;\n }\n } else {\n return [];\n }\n }\n\n public pick({ x, y }: { x: number; y: number }) {\n this.interactionService.triggerHover({ x, y });\n }\n\n public boxSelect(\n box: [number, number, number, number],\n cb: (...args: any[]) => void,\n ) {\n this.pickingService.boxPickLayer(this, box, cb);\n }\n\n public buildLayerModel(\n options: ILayerModelInitializationOptions &\n Partial<IModelInitializationOptions>,\n ): IModel {\n const {\n moduleName,\n vertexShader,\n fragmentShader,\n triangulation,\n segmentNumber,\n ...rest\n } = options;\n this.shaderModuleService.registerModule(moduleName, {\n vs: vertexShader,\n fs: fragmentShader,\n });\n const { vs, fs, uniforms } = this.shaderModuleService.getModule(moduleName);\n const { createModel } = this.rendererService;\n const {\n attributes,\n elements,\n } = this.styleAttributeService.createAttributesAndIndices(\n this.encodedData,\n triangulation,\n segmentNumber,\n );\n return createModel({\n attributes,\n uniforms,\n fs,\n vs,\n elements,\n blend: BlendTypes[BlendType.normal],\n ...rest,\n });\n }\n\n public getTime() {\n return this.layerService.clock.getDelta();\n }\n public setAnimateStartTime() {\n this.animateStartTime = this.layerService.clock.getElapsedTime();\n }\n public stopAnimate() {\n if (this.aniamateStatus) {\n this.layerService.stopAnimate();\n this.aniamateStatus = false;\n this.updateLayerConfig({\n animateOption: {\n enable: false,\n },\n });\n }\n }\n public getLayerAnimateTime(): number {\n return this.layerService.clock.getElapsedTime() - this.animateStartTime;\n }\n\n public needPick(type: string): boolean {\n const {\n enableHighlight = true,\n enableSelect = true,\n } = this.getLayerConfig();\n // 判断layer是否监听事件;\n let isPick =\n this.eventNames().indexOf(type) !== -1 ||\n this.eventNames().indexOf('un' + type) !== -1;\n if ((type === 'click' || type === 'dblclick') && enableSelect) {\n isPick = true;\n }\n if (\n type === 'mousemove' &&\n (enableHighlight ||\n this.eventNames().indexOf('mouseenter') !== -1 ||\n this.eventNames().indexOf('unmousemove') !== -1 ||\n this.eventNames().indexOf('mouseout') !== -1)\n ) {\n isPick = true;\n }\n return this.isVisible() && isPick;\n }\n\n public buildModels() {\n throw new Error('Method not implemented.');\n }\n public rebuildModels() {\n throw new Error('Method not implemented.');\n }\n\n public renderModels() {\n // TODO: this.getEncodedData().length > 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length > 0) {\n if (this.layerModelNeedUpdate && this.layerModel) {\n this.models = this.layerModel.buildModels();\n this.hooks.beforeRender.call();\n this.layerModelNeedUpdate = false;\n }\n this.models.forEach((model) => {\n model.draw({\n uniforms: this.layerModel.getUninforms(),\n });\n });\n }\n return this;\n }\n\n public updateStyleAttribute(\n type: string,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n if (!this.inited) {\n this.pendingStyleAttributes.push({\n attributeName: type,\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n } else {\n this.styleAttributeService.updateStyleAttribute(\n type,\n {\n // @ts-ignore\n scale: {\n field,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n values,\n // @ts-ignore\n this.getLayerConfig()[field],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n }\n }\n\n /**\n * 继承空方法\n * @param time\n */\n public setEarthTime(time: number) {\n console.warn('empty fn');\n }\n\n protected getConfigSchema() {\n throw new Error('Method not implemented.');\n }\n\n protected getModelType(): unknown {\n throw new Error('Method not implemented.');\n }\n protected getDefaultConfig() {\n return {};\n }\n\n private sourceEvent = () => {\n this.dataState.dataSourceNeedUpdate = true;\n const { autoFit, fitBoundsOptions } = this.getLayerConfig();\n if (autoFit) {\n this.fitBounds(fitBoundsOptions);\n }\n\n this.emit('dataUpdate');\n this.reRender();\n };\n\n private reRender() {\n if (this.inited) {\n this.layerService.renderLayers();\n }\n }\n private splitValuesAndCallbackInAttribute(\n valuesOrCallback?: unknown[],\n defaultValues?: unknown[],\n ) {\n return {\n values: isFunction(valuesOrCallback)\n ? undefined\n : valuesOrCallback || defaultValues,\n callback: isFunction(valuesOrCallback) ? valuesOrCallback : undefined,\n };\n }\n}\n"],"file":"BaseLayer.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/core/BaseLayer.ts"],"names":["layerIdCounter","BaseLayer","TYPES","IGlobalConfigService","IShaderModuleService","config","dataSourceNeedUpdate","dataMappingNeedUpdate","filterNeedUpdate","featureScaleNeedUpdate","StyleAttrNeedUpdate","init","SyncBailHook","afterInit","beforeRender","beforeRenderData","SyncWaterfallHook","afterRender","SyncHook","beforePickingEncode","afterPickingEncode","beforeHighlight","afterHighlight","beforeSelect","afterSelect","beforeDestroy","afterDestroy","enable","dataState","getLayerConfig","autoFit","fitBoundsOptions","fitBounds","emit","reRender","name","id","zIndex","rawConfig","configService","configToUpdate","inited","needUpdateConfig","sceneId","container","get","SceneID","setLayerConfig","sceneContainer","plugin","plugins","push","enableMultiPassRenderer","iconService","IIconService","fontService","IFontService","rendererService","IRendererService","layerService","ILayerService","interactionService","IInteractionService","pickingService","IPickingService","mapService","IMapService","cameraService","ICameraService","coordinateService","ICoordinateSystemService","postProcessingPassFactory","IFactoryPostProcessingPass","normalPassFactory","IFactoryNormalPass","styleAttributeService","IStyleAttributeService","multiPassRenderer","IMultiPassRenderer","setLayer","pendingStyleAttributes","forEach","attributeName","attributeField","attributeValues","updateOptions","updateStyleAttribute","scale","field","splitValuesAndCallbackInAttribute","getAll","ILayerPlugin","apply","hooks","call","target","type","updateLayerConfig","getDefaultConfig","animateOption","startAnimate","aniamateStatus","values","options","rawAnimate","data","setSource","sourceOption","layerSource","setData","on","passes","rest","pass","postProcessingPass","getPostProcessor","getPostProcessingPassByName","styleNeedUpdate","cfg","scaleOptions","rendering","renderLayers","getEncodedData","length","renderModels","activeOption","enableHighlight","color","highlightColor","x","y","pick","pickedFeatureID","then","setTimeout","option","enableSelect","selectColor","blend","layerModelNeedUpdate","visible","index","updateLayerRenderList","currentPickId","selectedFeatureID","zoom","getZoom","minZoom","Infinity","maxZoom","source","getSource","extent","isValid","some","v","Math","abs","off","sourceEvent","destroy","clearAllAttributes","removeAllListeners","models","model","layerModel","clearModels","getLayerStyleAttributes","filter","attribute","needRescale","needRemapping","needRegenerateVertices","cluster","updateClusterData","encodedData","getLayerAttributeScale","ticks","items","map","item","value","invertExtent","range","triggerHover","box","cb","boxPickLayer","moduleName","vertexShader","fragmentShader","triangulation","segmentNumber","shaderModuleService","registerModule","vs","fs","getModule","uniforms","createModel","createAttributesAndIndices","attributes","elements","BlendTypes","BlendType","normal","clock","getDelta","animateStartTime","getElapsedTime","stopAnimate","isPick","eventNames","indexOf","isVisible","Error","buildModels","draw","getUninforms","time","console","warn","valuesOrCallback","defaultValues","undefined","callback","EventEmitter"],"mappings":"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","sourcesContent":["// @ts-ignore\nimport { SyncBailHook, SyncHook, SyncWaterfallHook } from '@antv/async-hook';\nimport {\n BlendType,\n gl,\n IActiveOption,\n IAnimateOption,\n ICameraService,\n ICoordinateSystemService,\n IDataState,\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n IIconService,\n IInteractionService,\n ILayer,\n ILayerConfig,\n ILayerModel,\n ILayerModelInitializationOptions,\n ILayerPlugin,\n ILayerService,\n IMapService,\n IModel,\n IModelInitializationOptions,\n IMultiPassRenderer,\n IPass,\n IPickingService,\n IPostProcessingPass,\n IRendererService,\n IScale,\n IScaleOptions,\n IShaderModuleService,\n ISource,\n ISourceCFG,\n IStyleAttributeInitializationOptions,\n IStyleAttributeService,\n IStyleAttributeUpdateOptions,\n lazyInject,\n ScaleAttributeType,\n ScaleTypeName,\n ScaleTypes,\n StyleAttributeField,\n StyleAttributeOption,\n TYPES,\n} from '@antv/l7-core';\nimport Source from '@antv/l7-source';\nimport { encodePickingColor } from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\nimport { isFunction, isObject } from 'lodash';\nimport { normalizePasses } from '../plugins/MultiPassRendererPlugin';\nimport { BlendTypes } from '../utils/blend';\nimport { handleStyleDataMapping } from '../utils/dataMappingStyle';\nimport baseLayerSchema from './schema';\n/**\n * 分配 layer id\n */\nlet layerIdCounter = 0;\n\nexport default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter\n implements ILayer {\n public id: string = `${layerIdCounter++}`;\n public name: string = `${layerIdCounter}`;\n public type: string;\n public visible: boolean = true;\n public zIndex: number = 0;\n public minZoom: number;\n public maxZoom: number;\n public inited: boolean = false;\n public layerModelNeedUpdate: boolean = false;\n public pickedFeatureID: number | null = null;\n public selectedFeatureID: number | null = null;\n public styleNeedUpdate: boolean = false;\n public rendering: boolean;\n\n public dataState: IDataState = {\n dataSourceNeedUpdate: false,\n dataMappingNeedUpdate: false,\n filterNeedUpdate: false,\n featureScaleNeedUpdate: false,\n StyleAttrNeedUpdate: false,\n };\n // 生命周期钩子\n public hooks = {\n init: new SyncBailHook(),\n afterInit: new SyncBailHook(),\n beforeRender: new SyncBailHook(),\n beforeRenderData: new SyncWaterfallHook(),\n afterRender: new SyncHook(),\n beforePickingEncode: new SyncHook(),\n afterPickingEncode: new SyncHook(),\n beforeHighlight: new SyncHook(['pickedColor']),\n afterHighlight: new SyncHook(),\n beforeSelect: new SyncHook(['pickedColor']),\n afterSelect: new SyncHook(),\n beforeDestroy: new SyncHook(),\n afterDestroy: new SyncHook(),\n };\n\n // 待渲染 model 列表\n public models: IModel[] = [];\n\n // 每个 Layer 都有一个\n public multiPassRenderer: IMultiPassRenderer;\n\n // 注入插件集\n public plugins: ILayerPlugin[];\n\n public sourceOption: {\n data: any;\n options?: ISourceCFG;\n };\n\n public layerModel: ILayerModel;\n\n // TODO: 记录 sceneContainer 供创建子图层的时候使用 如 imageTileLayer\n public sceneContainer: Container | undefined;\n // TODO: 用于保存子图层对象\n public layerChildren: ILayer[] = [];\n\n @lazyInject(TYPES.IGlobalConfigService)\n protected readonly configService: IGlobalConfigService;\n\n @lazyInject(TYPES.IShaderModuleService)\n protected readonly shaderModuleService: IShaderModuleService;\n\n protected cameraService: ICameraService;\n\n protected coordinateService: ICoordinateSystemService;\n\n protected iconService: IIconService;\n\n protected fontService: IFontService;\n\n protected pickingService: IPickingService;\n\n protected rendererService: IRendererService;\n\n protected layerService: ILayerService;\n\n protected interactionService: IInteractionService;\n\n protected mapService: IMapService;\n\n protected styleAttributeService: IStyleAttributeService;\n\n protected layerSource: Source;\n\n protected postProcessingPassFactory: (\n name: string,\n ) => IPostProcessingPass<unknown>;\n protected normalPassFactory: (name: string) => IPass<unknown>;\n\n protected animateOptions: IAnimateOption = { enable: false };\n\n /**\n * 图层容器\n */\n private container: Container;\n\n private encodedData: IEncodeFeature[];\n\n private configSchema: object;\n\n private currentPickId: number | null = null;\n\n private rawConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n private needUpdateConfig: Partial<ILayerConfig & ChildLayerStyleOptions>;\n\n /**\n * 待更新样式属性,在初始化阶段完成注册\n */\n private pendingStyleAttributes: Array<{\n attributeName: string;\n attributeField: StyleAttributeField;\n attributeValues?: StyleAttributeOption;\n defaultName?: string;\n updateOptions?: Partial<IStyleAttributeUpdateOptions>;\n }> = [];\n\n private scaleOptions: IScaleOptions = {};\n\n private animateStartTime: number;\n\n private aniamateStatus: boolean = false;\n\n // private pickingPassRender: IPass<'pixelPicking'>;\n\n constructor(config: Partial<ILayerConfig & ChildLayerStyleOptions> = {}) {\n super();\n this.name = config.name || this.id;\n this.zIndex = config.zIndex || 0;\n this.rawConfig = config;\n }\n\n public getLayerConfig() {\n return this.configService.getLayerConfig<ChildLayerStyleOptions>(this.id);\n }\n\n public updateLayerConfig(\n configToUpdate: Partial<ILayerConfig | ChildLayerStyleOptions>,\n ) {\n if (!this.inited) {\n this.needUpdateConfig = {\n ...this.needUpdateConfig,\n ...configToUpdate,\n };\n } else {\n const sceneId = this.container.get<string>(TYPES.SceneID);\n\n // @ts-ignore\n handleStyleDataMapping(configToUpdate, this); // 处理 style 中进行数据映射的属性字段\n\n this.configService.setLayerConfig(sceneId, this.id, {\n ...this.configService.getLayerConfig(this.id),\n ...this.needUpdateConfig,\n ...configToUpdate,\n });\n this.needUpdateConfig = {};\n }\n }\n\n /**\n * 注入图层容器,父容器为场景容器\n * RootContainer 1\n * -> SceneContainer 1.*\n * -> LayerContainer 1.*\n */\n public setContainer(container: Container, sceneContainer: Container) {\n this.container = container;\n this.sceneContainer = sceneContainer;\n }\n\n public getContainer() {\n return this.container;\n }\n\n public addPlugin(plugin: ILayerPlugin): ILayer {\n // TODO: 控制插件注册顺序\n // @example:\n // pointLayer.addPlugin(new MyCustomPlugin(), {\n // before: 'L7BuiltinPlugin'\n // });\n this.plugins.push(plugin);\n return this;\n }\n\n public init() {\n // 设置配置项\n const sceneId = this.container.get<string>(TYPES.SceneID);\n // 初始化图层配置项\n const { enableMultiPassRenderer = false } = this.rawConfig;\n this.configService.setLayerConfig(sceneId, this.id, {\n enableMultiPassRenderer,\n });\n\n // 全局容器服务\n\n // 场景容器服务\n this.iconService = this.container.get<IIconService>(TYPES.IIconService);\n this.fontService = this.container.get<IFontService>(TYPES.IFontService);\n\n this.rendererService = this.container.get<IRendererService>(\n TYPES.IRendererService,\n );\n this.layerService = this.container.get<ILayerService>(TYPES.ILayerService);\n this.interactionService = this.container.get<IInteractionService>(\n TYPES.IInteractionService,\n );\n\n this.pickingService = this.container.get<IPickingService>(\n TYPES.IPickingService,\n );\n this.mapService = this.container.get<IMapService>(TYPES.IMapService);\n this.cameraService = this.container.get<ICameraService>(\n TYPES.ICameraService,\n );\n this.coordinateService = this.container.get<ICoordinateSystemService>(\n TYPES.ICoordinateSystemService,\n );\n this.postProcessingPassFactory = this.container.get(\n TYPES.IFactoryPostProcessingPass,\n );\n this.normalPassFactory = this.container.get(TYPES.IFactoryNormalPass);\n\n // 图层容器服务\n this.styleAttributeService = this.container.get<IStyleAttributeService>(\n TYPES.IStyleAttributeService,\n );\n this.multiPassRenderer = this.container.get<IMultiPassRenderer>(\n TYPES.IMultiPassRenderer,\n );\n this.multiPassRenderer.setLayer(this);\n\n // 完成样式服务注册完成前添加的属性\n this.pendingStyleAttributes.forEach(\n ({ attributeName, attributeField, attributeValues, updateOptions }) => {\n this.styleAttributeService.updateStyleAttribute(\n attributeName,\n {\n // @ts-ignore\n scale: {\n field: attributeField,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n attributeValues,\n // @ts-ignore\n this.getLayerConfig()[attributeName],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n },\n );\n this.pendingStyleAttributes = [];\n\n // 获取插件集\n this.plugins = this.container.getAll<ILayerPlugin>(TYPES.ILayerPlugin);\n // 完成插件注册,传入场景和图层容器内的服务\n for (const plugin of this.plugins) {\n plugin.apply(this, {\n rendererService: this.rendererService,\n mapService: this.mapService,\n styleAttributeService: this.styleAttributeService,\n normalPassFactory: this.normalPassFactory,\n postProcessingPassFactory: this.postProcessingPassFactory,\n });\n }\n\n // 触发 init 生命周期插件\n this.hooks.init.call();\n // this.pickingPassRender = this.normalPassFactory('pixelPicking');\n // this.pickingPassRender.init(this);\n this.hooks.afterInit.call();\n\n // 触发初始化完成事件;\n this.emit('inited', {\n target: this,\n type: 'inited',\n });\n this.emit('add', {\n target: this,\n type: 'add',\n });\n return this;\n }\n /**\n * Model初始化前需要更新Model样式\n */\n public prepareBuildModel() {\n this.inited = true;\n this.updateLayerConfig({\n ...(this.getDefaultConfig() as object),\n ...this.rawConfig,\n });\n\n // 启动动画\n const { animateOption } = this.getLayerConfig();\n if (animateOption?.enable) {\n this.layerService.startAnimate();\n this.aniamateStatus = true;\n }\n }\n public color(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n // 设置 color、size、shape、style 时由于场景服务尚未完成(并没有调用 scene.addLayer),因此暂时加入待更新属性列表\n this.updateStyleAttribute('color', field, values, updateOptions);\n\n // this.pendingStyleAttributes.push({\n // attributeName: 'color',\n // attributeField: field,\n // attributeValues: values,\n // defaultName: 'colors',\n // updateOptions,\n // });\n return this;\n }\n\n // 为对应的图层传入纹理的编号名称(point/image 在 shape 方法中传入纹理名称的方法并不通用)\n public texture(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('texture', field, values, updateOptions);\n return this;\n }\n\n public rotate(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('rotate', field, values, updateOptions);\n return this;\n }\n public size(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('size', field, values, updateOptions);\n return this;\n }\n // 对mapping后的数据过滤,scale保持不变\n public filter(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('filter', field, values, updateOptions);\n return this;\n }\n\n public shape(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.updateStyleAttribute('shape', field, values, updateOptions);\n return this;\n }\n public label(\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n this.pendingStyleAttributes.push({\n attributeName: 'label',\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n return this;\n }\n public animate(options: IAnimateOption | boolean) {\n let rawAnimate: Partial<IAnimateOption> = {};\n if (isObject(options)) {\n rawAnimate.enable = true;\n rawAnimate = {\n ...rawAnimate,\n ...options,\n };\n } else {\n rawAnimate.enable = options;\n }\n this.updateLayerConfig({\n animateOption: rawAnimate,\n });\n // this.animateOptions = options;\n return this;\n }\n\n public source(data: any, options?: ISourceCFG): ILayer {\n if (data?.data) {\n // 判断是否为source\n this.setSource(data);\n return this;\n }\n this.sourceOption = {\n data,\n options,\n };\n return this;\n }\n public setData(data: any, options?: ISourceCFG) {\n if (this.inited) {\n this.layerSource.setData(data, options);\n } else {\n this.on('inited', () => {\n this.layerSource.setData(data, options);\n });\n }\n\n return this;\n }\n public style(\n options: Partial<ChildLayerStyleOptions> & Partial<ILayerConfig>,\n ): ILayer {\n const { passes, ...rest } = options;\n\n // passes 特殊处理\n if (passes) {\n normalizePasses(passes).forEach(\n (pass: [string, { [key: string]: unknown }]) => {\n const postProcessingPass = this.multiPassRenderer\n .getPostProcessor()\n .getPostProcessingPassByName(pass[0]);\n if (postProcessingPass) {\n postProcessingPass.updateOptions(pass[1]);\n }\n },\n );\n }\n\n this.rawConfig = {\n ...this.rawConfig,\n ...rest,\n };\n if (this.container) {\n this.updateLayerConfig(this.rawConfig);\n this.styleNeedUpdate = true;\n }\n return this;\n }\n public scale(field: string | number | IScaleOptions, cfg?: IScale) {\n if (isObject(field)) {\n this.scaleOptions = {\n ...this.scaleOptions,\n ...field,\n };\n } else {\n this.scaleOptions[field] = cfg;\n }\n return this;\n }\n\n /**\n * 渲染所有的图层\n */\n public renderLayers(): void {\n this.rendering = true;\n\n this.layerService.renderLayers();\n\n this.rendering = false;\n }\n\n public render(): ILayer {\n // if (\n // this.needPick() &&\n // this.multiPassRenderer &&\n // this.multiPassRenderer.getRenderFlag()\n // ) {\n // this.multiPassRenderer.render();\n // } else if (this.needPick() && this.multiPassRenderer) {\n // this.renderModels();\n // } else {\n // this.renderModels();\n // }\n // TODO: this.getEncodedData().length !== 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length !== 0) {\n this.renderModels();\n }\n // this.renderModels();\n\n // this.multiPassRenderer.render();\n // this.renderModels();\n return this;\n }\n\n public active(options: IActiveOption | boolean) {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableHighlight = isObject(options) ? true : options;\n if (isObject(options)) {\n activeOption.enableHighlight = true;\n if (options.color) {\n activeOption.highlightColor = options.color;\n }\n } else {\n activeOption.enableHighlight = !!options;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n public setActive(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n highlightColor: isObject(options)\n ? options.color\n : this.getLayerConfig().highlightColor,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n\n public select(option: IActiveOption | boolean): ILayer {\n const activeOption: Partial<ILayerConfig> = {};\n activeOption.enableSelect = isObject(option) ? true : option;\n if (isObject(option)) {\n activeOption.enableSelect = true;\n if (option.color) {\n activeOption.selectColor = option.color;\n }\n } else {\n activeOption.enableSelect = !!option;\n }\n this.updateLayerConfig(activeOption);\n return this;\n }\n\n public setSelect(\n id: number | { x: number; y: number },\n options?: IActiveOption,\n ): void {\n if (isObject(id)) {\n const { x = 0, y = 0 } = id;\n this.updateLayerConfig({\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n });\n this.pick({ x, y });\n } else {\n this.updateLayerConfig({\n pickedFeatureID: id,\n selectColor: isObject(options)\n ? options.color\n : this.getLayerConfig().selectColor,\n });\n this.hooks.beforeSelect\n .call(encodePickingColor(id as number) as number[])\n // @ts-ignore\n .then(() => {\n setTimeout(() => {\n this.reRender();\n }, 1);\n });\n }\n }\n public setBlend(type: keyof typeof BlendType): void {\n this.updateLayerConfig({\n blend: type,\n });\n this.layerModelNeedUpdate = true;\n this.reRender();\n }\n public show(): ILayer {\n this.updateLayerConfig({\n visible: true,\n });\n this.reRender();\n return this;\n }\n\n public hide(): ILayer {\n this.updateLayerConfig({\n visible: false,\n });\n this.reRender();\n return this;\n }\n public setIndex(index: number): ILayer {\n this.zIndex = index;\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n return this;\n }\n\n public setCurrentPickId(id: number) {\n this.currentPickId = id;\n }\n\n public getCurrentPickId(): number | null {\n return this.currentPickId;\n }\n\n public setCurrentSelectedId(id: number) {\n this.selectedFeatureID = id;\n }\n\n public getCurrentSelectedId(): number | null {\n return this.selectedFeatureID;\n }\n public isVisible(): boolean {\n const zoom = this.mapService.getZoom();\n const {\n visible,\n minZoom = -Infinity,\n maxZoom = Infinity,\n } = this.getLayerConfig();\n return !!visible && zoom >= minZoom && zoom <= maxZoom;\n }\n\n public setMinZoom(minZoom: number): ILayer {\n this.updateLayerConfig({\n minZoom,\n });\n return this;\n }\n\n public getMinZoom(): number {\n const { minZoom } = this.getLayerConfig();\n return minZoom as number;\n }\n\n public getMaxZoom(): number {\n const { maxZoom } = this.getLayerConfig();\n return maxZoom as number;\n }\n\n public get(name: string) {\n const cfg = this.getLayerConfig();\n // @ts-ignore\n return cfg[name];\n }\n\n public setMaxZoom(maxZoom: number): ILayer {\n this.updateLayerConfig({\n maxZoom,\n });\n return this;\n }\n /**\n * zoom to layer Bounds\n */\n public fitBounds(fitBoundsOptions?: unknown): ILayer {\n if (!this.inited) {\n this.updateLayerConfig({\n autoFit: true,\n });\n return this;\n }\n const source = this.getSource();\n const extent = source.extent;\n const isValid = extent.some((v) => Math.abs(v) === Infinity);\n if (isValid) {\n return this;\n }\n this.mapService.fitBounds(\n [\n [extent[0], extent[1]],\n [extent[2], extent[3]],\n ],\n fitBoundsOptions,\n );\n return this;\n }\n\n public destroy() {\n this.hooks.beforeDestroy.call();\n // 清除sources事件\n this.layerSource.off('update', this.sourceEvent);\n\n this.multiPassRenderer.destroy();\n\n // 清除所有属性以及关联的 vao\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n // this.models.forEach((model) => model.destroy());\n\n this.hooks.afterDestroy.call();\n\n this.emit('remove', {\n target: this,\n type: 'remove',\n });\n\n this.removeAllListeners();\n\n // 解绑图层容器中的服务\n // this.container.unbind(TYPES.IStyleAttributeService);\n }\n public clear() {\n this.styleAttributeService.clearAllAttributes();\n // 销毁所有 model\n }\n public clearModels() {\n this.models.forEach((model) => model.destroy());\n this.layerModel.clearModels();\n }\n\n public isDirty() {\n return !!(\n this.styleAttributeService.getLayerStyleAttributes() || []\n ).filter(\n (attribute) =>\n attribute.needRescale ||\n attribute.needRemapping ||\n attribute.needRegenerateVertices,\n ).length;\n }\n\n public setSource(source: Source) {\n // 清除旧 sources 事件\n if (this.layerSource) {\n this.layerSource.off('update', this.sourceEvent);\n }\n\n this.layerSource = source;\n\n // 已 inited 且启用聚合进行更新聚合数据\n if (this.inited && this.layerSource.cluster) {\n const zoom = this.mapService.getZoom();\n this.layerSource.updateClusterData(zoom);\n }\n // source 可能会复用,会在其它layer被修改\n this.layerSource.on('update', this.sourceEvent);\n }\n public getSource() {\n return this.layerSource;\n }\n\n public getScaleOptions() {\n return this.scaleOptions;\n }\n\n public setEncodedData(encodedData: IEncodeFeature[]) {\n this.encodedData = encodedData;\n }\n public getEncodedData() {\n return this.encodedData;\n }\n public getLegendItems(name: string): any {\n const scale = this.styleAttributeService.getLayerAttributeScale(name);\n if (scale) {\n if (scale.ticks) {\n const items = scale.ticks().map((item: any) => {\n return {\n value: item,\n [name]: scale(item),\n };\n });\n return items;\n } else if (scale.invertExtent) {\n const items = scale.range().map((item: any) => {\n return {\n value: scale.invertExtent(item),\n [name]: item,\n };\n });\n return items;\n }\n } else {\n return [];\n }\n }\n\n public pick({ x, y }: { x: number; y: number }) {\n this.interactionService.triggerHover({ x, y });\n }\n\n public boxSelect(\n box: [number, number, number, number],\n cb: (...args: any[]) => void,\n ) {\n this.pickingService.boxPickLayer(this, box, cb);\n }\n\n public buildLayerModel(\n options: ILayerModelInitializationOptions &\n Partial<IModelInitializationOptions>,\n ): IModel {\n const {\n moduleName,\n vertexShader,\n fragmentShader,\n triangulation,\n segmentNumber,\n ...rest\n } = options;\n this.shaderModuleService.registerModule(moduleName, {\n vs: vertexShader,\n fs: fragmentShader,\n });\n const { vs, fs, uniforms } = this.shaderModuleService.getModule(moduleName);\n const { createModel } = this.rendererService;\n const {\n attributes,\n elements,\n } = this.styleAttributeService.createAttributesAndIndices(\n this.encodedData,\n triangulation,\n segmentNumber,\n );\n return createModel({\n attributes,\n uniforms,\n fs,\n vs,\n elements,\n blend: BlendTypes[BlendType.normal],\n ...rest,\n });\n }\n\n public getTime() {\n return this.layerService.clock.getDelta();\n }\n public setAnimateStartTime() {\n this.animateStartTime = this.layerService.clock.getElapsedTime();\n }\n public stopAnimate() {\n if (this.aniamateStatus) {\n this.layerService.stopAnimate();\n this.aniamateStatus = false;\n this.updateLayerConfig({\n animateOption: {\n enable: false,\n },\n });\n }\n }\n public getLayerAnimateTime(): number {\n return this.layerService.clock.getElapsedTime() - this.animateStartTime;\n }\n\n public needPick(type: string): boolean {\n const {\n enableHighlight = true,\n enableSelect = true,\n } = this.getLayerConfig();\n // 判断layer是否监听事件;\n let isPick =\n this.eventNames().indexOf(type) !== -1 ||\n this.eventNames().indexOf('un' + type) !== -1;\n if ((type === 'click' || type === 'dblclick') && enableSelect) {\n isPick = true;\n }\n if (\n type === 'mousemove' &&\n (enableHighlight ||\n this.eventNames().indexOf('mouseenter') !== -1 ||\n this.eventNames().indexOf('unmousemove') !== -1 ||\n this.eventNames().indexOf('mouseout') !== -1)\n ) {\n isPick = true;\n }\n return this.isVisible() && isPick;\n }\n\n public buildModels() {\n throw new Error('Method not implemented.');\n }\n public rebuildModels() {\n throw new Error('Method not implemented.');\n }\n\n public renderModels() {\n // TODO: this.getEncodedData().length > 0 这个判断是为了解决在 2.5.x 引入数据纹理后产生的 空数据渲染导致 texture 超出上限问题\n if (this.getEncodedData().length > 0) {\n if (this.layerModelNeedUpdate && this.layerModel) {\n this.models = this.layerModel.buildModels();\n this.hooks.beforeRender.call();\n this.layerModelNeedUpdate = false;\n }\n this.models.forEach((model) => {\n model.draw({\n uniforms: this.layerModel.getUninforms(),\n });\n });\n }\n return this;\n }\n\n public updateStyleAttribute(\n type: string,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n ) {\n if (!this.inited) {\n this.pendingStyleAttributes.push({\n attributeName: type,\n attributeField: field,\n attributeValues: values,\n updateOptions,\n });\n } else {\n this.styleAttributeService.updateStyleAttribute(\n type,\n {\n // @ts-ignore\n scale: {\n field,\n ...this.splitValuesAndCallbackInAttribute(\n // @ts-ignore\n values,\n // @ts-ignore\n this.getLayerConfig()[field],\n ),\n },\n },\n // @ts-ignore\n updateOptions,\n );\n }\n }\n\n /**\n * 继承空方法\n * @param time\n */\n public setEarthTime(time: number) {\n console.warn('empty fn');\n }\n\n protected getConfigSchema() {\n throw new Error('Method not implemented.');\n }\n\n protected getModelType(): unknown {\n throw new Error('Method not implemented.');\n }\n protected getDefaultConfig() {\n return {};\n }\n\n private sourceEvent = () => {\n this.dataState.dataSourceNeedUpdate = true;\n const { autoFit, fitBoundsOptions } = this.getLayerConfig();\n if (autoFit) {\n this.fitBounds(fitBoundsOptions);\n }\n\n this.emit('dataUpdate');\n this.reRender();\n };\n\n private reRender() {\n if (this.inited) {\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n }\n }\n private splitValuesAndCallbackInAttribute(\n valuesOrCallback?: unknown[],\n defaultValues?: unknown[],\n ) {\n return {\n values: isFunction(valuesOrCallback)\n ? undefined\n : valuesOrCallback || defaultValues,\n callback: isFunction(valuesOrCallback) ? valuesOrCallback : undefined,\n };\n }\n}\n"],"file":"BaseLayer.js"}
|
package/lib/earth/models/base.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/earth/models/base.ts"],"names":["BaseEarthModel","Math","sqrt","sunX","sunY","sunZ","layer","getLayerConfig","animateOption","globelOtions","enable","mapService","rotateY","reg","earthTime","cos","sunRadius","sin","u_ambientRatio","ambientRatio","u_diffuseRatio","diffuseRatio","u_specularRatio","specularRatio","u_sunLight","u_texture","texture","time","layerService","renderLayers","undefined","setEarthTime","source","getSource","createTexture2D","rendererService","height","width","data","images","then","imageData","buildModels","zIndex","buildLayerModel","moduleName","vertexShader","baseVert","fragmentShader","baseFrag","triangulation","earthTriangulation","depth","blend","getBlend","styleAttributeService","registerStyleAttribute","name","type","AttributeType","Attribute","descriptor","buffer","usage","gl","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","Array","isArray","STATIC_DRAW","normal","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n BlendType,\n gl,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\n\nimport BaseModel, { styleOffset, styleSingle } from '../../core/BaseModel';\nimport { earthTriangulation } from '../../core/triangulation';\n\nimport baseFrag from '../shaders/base_frag.glsl';\nimport baseVert from '../shaders/base_vert.glsl';\n\nexport default class BaseEarthModel extends BaseModel {\n protected texture: ITexture2D;\n // T: 当前的地球时间 - 控制太阳的方位\n private earthTime: number = 3.4;\n private sunX = 1000;\n private sunY = 1000;\n private sunZ = 1000;\n private sunRadius = Math.sqrt(\n this.sunX * this.sunX + this.sunY * this.sunY + this.sunZ * this.sunZ,\n );\n\n public getUninforms(): IModelUniform {\n const { animateOption, globelOtions } = this.layer.getLayerConfig();\n if (animateOption?.enable) {\n // @ts-ignore\n // T: rotateY 方法只有在地球模式下存在\n this.mapService.rotateY({\n reg: 0.002,\n });\n this.earthTime += 0.02;\n\n this.sunY = 10;\n this.sunX = Math.cos(this.earthTime) * (this.sunRadius - this.sunY);\n this.sunZ = Math.sin(this.earthTime) * (this.sunRadius - this.sunY);\n }\n\n return {\n u_ambientRatio: globelOtions?.ambientRatio || 0.6, // 环境光\n u_diffuseRatio: globelOtions?.diffuseRatio || 0.4, // 漫反射\n u_specularRatio: globelOtions?.specularRatio || 0.1, // 高光反射\n // u_sunLight: [120, 120, 120],\n u_sunLight: [this.sunX, this.sunY, this.sunZ],\n\n u_texture: this.texture,\n };\n }\n\n public setEarthTime(time: number) {\n this.earthTime = time;\n\n this.sunY = 10;\n this.sunX = Math.cos(this.earthTime) * (this.sunRadius - this.sunY);\n this.sunZ = Math.sin(this.earthTime) * (this.sunRadius - this.sunY);\n\n this.layerService.renderLayers();\n }\n\n public initModels(): IModel[] {\n const { globelOtions } = this.layer.getLayerConfig();\n if (globelOtions?.earthTime !== undefined) {\n this.setEarthTime(globelOtions.earthTime);\n }\n\n const source = this.layer.getSource();\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n source.data.images.then((imageData: HTMLImageElement[]) => {\n this.texture = createTexture2D({\n data: imageData[0],\n width: imageData[0].width,\n height: imageData[0].height,\n });\n this.layerService.renderLayers();\n });\n\n return this.buildModels();\n }\n\n public clearModels() {\n return '';\n }\n\n public buildModels(): IModel[] {\n // TODO: 调整图层的绘制顺序 地球大气层\n this.layer.zIndex = -998;\n return [\n this.layer.buildLayerModel({\n moduleName: 'baseEarth',\n vertexShader: baseVert,\n fragmentShader: baseFrag,\n triangulation: earthTriangulation,\n depth: { enable: true },\n blend: this.getBlend(),\n }),\n ];\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 1 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n}\n"],"file":"base.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/earth/models/base.ts"],"names":["BaseEarthModel","Math","sqrt","sunX","sunY","sunZ","layer","getLayerConfig","animateOption","globelOtions","enable","mapService","rotateY","reg","earthTime","cos","sunRadius","sin","u_ambientRatio","ambientRatio","u_diffuseRatio","diffuseRatio","u_specularRatio","specularRatio","u_sunLight","u_texture","texture","time","layerService","renderLayers","undefined","setEarthTime","source","getSource","createTexture2D","rendererService","height","width","data","images","then","imageData","updateLayerRenderList","buildModels","zIndex","buildLayerModel","moduleName","vertexShader","baseVert","fragmentShader","baseFrag","triangulation","earthTriangulation","depth","blend","getBlend","styleAttributeService","registerStyleAttribute","name","type","AttributeType","Attribute","descriptor","buffer","usage","gl","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","Array","isArray","STATIC_DRAW","normal","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n BlendType,\n gl,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\n\nimport BaseModel, { styleOffset, styleSingle } from '../../core/BaseModel';\nimport { earthTriangulation } from '../../core/triangulation';\n\nimport baseFrag from '../shaders/base_frag.glsl';\nimport baseVert from '../shaders/base_vert.glsl';\n\nexport default class BaseEarthModel extends BaseModel {\n protected texture: ITexture2D;\n // T: 当前的地球时间 - 控制太阳的方位\n private earthTime: number = 3.4;\n private sunX = 1000;\n private sunY = 1000;\n private sunZ = 1000;\n private sunRadius = Math.sqrt(\n this.sunX * this.sunX + this.sunY * this.sunY + this.sunZ * this.sunZ,\n );\n\n public getUninforms(): IModelUniform {\n const { animateOption, globelOtions } = this.layer.getLayerConfig();\n if (animateOption?.enable) {\n // @ts-ignore\n // T: rotateY 方法只有在地球模式下存在\n this.mapService.rotateY({\n reg: 0.002,\n });\n this.earthTime += 0.02;\n\n this.sunY = 10;\n this.sunX = Math.cos(this.earthTime) * (this.sunRadius - this.sunY);\n this.sunZ = Math.sin(this.earthTime) * (this.sunRadius - this.sunY);\n }\n\n return {\n u_ambientRatio: globelOtions?.ambientRatio || 0.6, // 环境光\n u_diffuseRatio: globelOtions?.diffuseRatio || 0.4, // 漫反射\n u_specularRatio: globelOtions?.specularRatio || 0.1, // 高光反射\n // u_sunLight: [120, 120, 120],\n u_sunLight: [this.sunX, this.sunY, this.sunZ],\n\n u_texture: this.texture,\n };\n }\n\n public setEarthTime(time: number) {\n this.earthTime = time;\n\n this.sunY = 10;\n this.sunX = Math.cos(this.earthTime) * (this.sunRadius - this.sunY);\n this.sunZ = Math.sin(this.earthTime) * (this.sunRadius - this.sunY);\n\n this.layerService.renderLayers();\n }\n\n public initModels(): IModel[] {\n const { globelOtions } = this.layer.getLayerConfig();\n if (globelOtions?.earthTime !== undefined) {\n this.setEarthTime(globelOtions.earthTime);\n }\n\n const source = this.layer.getSource();\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n source.data.images.then((imageData: HTMLImageElement[]) => {\n this.texture = createTexture2D({\n data: imageData[0],\n width: imageData[0].width,\n height: imageData[0].height,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n });\n\n return this.buildModels();\n }\n\n public clearModels() {\n return '';\n }\n\n public buildModels(): IModel[] {\n // TODO: 调整图层的绘制顺序 地球大气层\n this.layer.zIndex = -998;\n return [\n this.layer.buildLayerModel({\n moduleName: 'baseEarth',\n vertexShader: baseVert,\n fragmentShader: baseFrag,\n triangulation: earthTriangulation,\n depth: { enable: true },\n blend: this.getBlend(),\n }),\n ];\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 1 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n}\n"],"file":"base.js"}
|
|
@@ -91,6 +91,8 @@ var ImageModel = function (_BaseModel) {
|
|
|
91
91
|
height: img.height
|
|
92
92
|
});
|
|
93
93
|
|
|
94
|
+
_this2.layerService.updateLayerRenderList();
|
|
95
|
+
|
|
94
96
|
_this2.layerService.renderLayers();
|
|
95
97
|
};
|
|
96
98
|
} else {
|
|
@@ -101,6 +103,8 @@ var ImageModel = function (_BaseModel) {
|
|
|
101
103
|
height: imageData[0].height
|
|
102
104
|
});
|
|
103
105
|
|
|
106
|
+
_this2.layerService.updateLayerRenderList();
|
|
107
|
+
|
|
104
108
|
_this2.layerService.renderLayers();
|
|
105
109
|
});
|
|
106
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/image/models/image.ts"],"names":["ImageModel","layer","getLayerConfig","opacity","u_opacity","u_texture","texture","source","getSource","createTexture2D","rendererService","height","width","isMini","canvas","layerService","sceneService","getSceneConfig","img","createImage","crossOrigin","src","data","originData","onload","renderLayers","images","then","imageData","buildLayerModel","moduleName","vertexShader","ImageVert","fragmentShader","ImageFrag","triangulation","RasterImageTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","initModels","properties","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","BaseModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAcA;;AACA;;AACA;;;;;;;;;IAOqBA,U;;;;;;;;;;;;;;;;;;;;;WAEnB,wBAAqC;AACnC,iBAAoB,KAAKC,KAAL,CAAWC,cAAX,EAApB;AAAA,UAAQC,OAAR,QAAQA,OAAR;;AACA,aAAO;AACLC,QAAAA,SAAS,EAAED,OAAO,IAAI,CADjB;AAELE,QAAAA,SAAS,EAAE,KAAKC;AAFX,OAAP;AAID;;;WACD,sBAAoB;AAAA;;AAClB,UAAMC,MAAM,GAAG,KAAKN,KAAL,CAAWO,SAAX,EAAf;AACA,UAAQC,eAAR,GAA4B,KAAKC,eAAjC,CAAQD,eAAR;AACA,WAAKH,OAAL,GAAeG,eAAe,CAAC;AAC7BE,QAAAA,MAAM,EAAE,CADqB;AAE7BC,QAAAA,KAAK,EAAE;AAFsB,OAAD,CAA9B;;AAKA,UAAIC,eAAJ,EAAY;AAEV,YAAMC,MAAM,GAAG,KAAKC,YAAL,CAAkBC,YAAlB,CAA+BC,cAA/B,GAAgDH,MAA/D;AACA,YAAMI,GAAG,GAAGJ,MAAM,CAACK,WAAP,EAAZ;AAEAD,QAAAA,GAAG,CAACE,WAAJ,GAAkB,WAAlB;AACAF,QAAAA,GAAG,CAACG,GAAJ,GAAUd,MAAM,CAACe,IAAP,CAAYC,UAAtB;;AAEAL,QAAAA,GAAG,CAACM,MAAJ,GAAa,YAAM;AACjB,UAAA,MAAI,CAAClB,OAAL,GAAeG,eAAe,CAAC;AAC7Ba,YAAAA,IAAI,EAAEJ,GADuB;AAE7BN,YAAAA,KAAK,EAAEM,GAAG,CAACN,KAFkB;AAG7BD,YAAAA,MAAM,EAAEO,GAAG,CAACP;AAHiB,WAAD,CAA9B;;AAKA,UAAA,MAAI,CAACI,YAAL,CAAkBU,YAAlB;AACD,
|
|
1
|
+
{"version":3,"sources":["../../../src/image/models/image.ts"],"names":["ImageModel","layer","getLayerConfig","opacity","u_opacity","u_texture","texture","source","getSource","createTexture2D","rendererService","height","width","isMini","canvas","layerService","sceneService","getSceneConfig","img","createImage","crossOrigin","src","data","originData","onload","updateLayerRenderList","renderLayers","images","then","imageData","buildLayerModel","moduleName","vertexShader","ImageVert","fragmentShader","ImageFrag","triangulation","RasterImageTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","initModels","properties","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","BaseModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAcA;;AACA;;AACA;;;;;;;;;IAOqBA,U;;;;;;;;;;;;;;;;;;;;;WAEnB,wBAAqC;AACnC,iBAAoB,KAAKC,KAAL,CAAWC,cAAX,EAApB;AAAA,UAAQC,OAAR,QAAQA,OAAR;;AACA,aAAO;AACLC,QAAAA,SAAS,EAAED,OAAO,IAAI,CADjB;AAELE,QAAAA,SAAS,EAAE,KAAKC;AAFX,OAAP;AAID;;;WACD,sBAAoB;AAAA;;AAClB,UAAMC,MAAM,GAAG,KAAKN,KAAL,CAAWO,SAAX,EAAf;AACA,UAAQC,eAAR,GAA4B,KAAKC,eAAjC,CAAQD,eAAR;AACA,WAAKH,OAAL,GAAeG,eAAe,CAAC;AAC7BE,QAAAA,MAAM,EAAE,CADqB;AAE7BC,QAAAA,KAAK,EAAE;AAFsB,OAAD,CAA9B;;AAKA,UAAIC,eAAJ,EAAY;AAEV,YAAMC,MAAM,GAAG,KAAKC,YAAL,CAAkBC,YAAlB,CAA+BC,cAA/B,GAAgDH,MAA/D;AACA,YAAMI,GAAG,GAAGJ,MAAM,CAACK,WAAP,EAAZ;AAEAD,QAAAA,GAAG,CAACE,WAAJ,GAAkB,WAAlB;AACAF,QAAAA,GAAG,CAACG,GAAJ,GAAUd,MAAM,CAACe,IAAP,CAAYC,UAAtB;;AAEAL,QAAAA,GAAG,CAACM,MAAJ,GAAa,YAAM;AACjB,UAAA,MAAI,CAAClB,OAAL,GAAeG,eAAe,CAAC;AAC7Ba,YAAAA,IAAI,EAAEJ,GADuB;AAE7BN,YAAAA,KAAK,EAAEM,GAAG,CAACN,KAFkB;AAG7BD,YAAAA,MAAM,EAAEO,GAAG,CAACP;AAHiB,WAAD,CAA9B;;AAKA,UAAA,MAAI,CAACI,YAAL,CAAkBU,qBAAlB;;AACA,UAAA,MAAI,CAACV,YAAL,CAAkBW,YAAlB;AACD,SARD;AASD,OAjBD,MAiBO;AACLnB,QAAAA,MAAM,CAACe,IAAP,CAAYK,MAAZ,CAAmBC,IAAnB,CAAwB,UAACC,SAAD,EAAmC;AACzD,UAAA,MAAI,CAACvB,OAAL,GAAeG,eAAe,CAAC;AAC7Ba,YAAAA,IAAI,EAAEO,SAAS,CAAC,CAAD,CADc;AAE7BjB,YAAAA,KAAK,EAAEiB,SAAS,CAAC,CAAD,CAAT,CAAajB,KAFS;AAG7BD,YAAAA,MAAM,EAAEkB,SAAS,CAAC,CAAD,CAAT,CAAalB;AAHQ,WAAD,CAA9B;;AAKA,UAAA,MAAI,CAACI,YAAL,CAAkBU,qBAAlB;;AACA,UAAA,MAAI,CAACV,YAAL,CAAkBW,YAAlB;AACD,SARD;AASD;;AAED,aAAO,CACL,KAAKzB,KAAL,CAAW6B,eAAX,CAA2B;AACzBC,QAAAA,UAAU,EAAE,aADa;AAEzBC,QAAAA,YAAY,EAAEC,SAFW;AAGzBC,QAAAA,cAAc,EAAEC,SAHS;AAIzBC,QAAAA,aAAa,EAAEC,uCAJU;AAKzBC,QAAAA,SAAS,EAAEC,WAAGC,SALW;AAMzBC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,MAAM,EAAE;AAAV,SANkB;AAOzBC,QAAAA,KAAK,EAAE,KAAKC,QAAL;AAPkB,OAA3B,CADK,CAAP;AAWD;;;WACD,uBAAqB;AACnB,aAAO,KAAKC,UAAL,EAAP;AACD;;;WAED,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACV3C,UAAAA,OAAO,EAAE;AACP4C,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,qCAAsC;AAEpC,WAAKC,qBAAL,CAA2BC,sBAA3B,CAAkD;AAChDC,QAAAA,IAAI,EAAE,IAD0C;AAEhDL,QAAAA,IAAI,EAAEM,sBAAcC,SAF4B;AAGhDC,QAAAA,UAAU,EAAE;AACVH,UAAAA,IAAI,EAAE,MADI;AAEVI,UAAAA,MAAM,EAAE;AAENC,YAAAA,KAAK,EAAElB,WAAGmB,YAFJ;AAGNpC,YAAAA,IAAI,EAAE,EAHA;AAINyB,YAAAA,IAAI,EAAER,WAAGoB;AAJH,WAFE;AAQVC,UAAAA,IAAI,EAAE,CARI;AASVC,UAAAA,MAAM,EAAE,gBACNC,OADM,EAENC,UAFM,EAGNC,MAHM,EAINC,YAJM,EAKH;AACH,mBAAO,CAACD,MAAM,CAAC,CAAD,CAAP,EAAYA,MAAM,CAAC,CAAD,CAAlB,CAAP;AACD;AAhBS;AAHoC,OAAlD;AAsBD;;;EAlGqCE,mB","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n ILayer,\n ILayerPlugin,\n IModel,\n IModelUniform,\n IRasterParserDataItem,\n IStyleAttributeService,\n ITexture2D,\n lazyInject,\n TYPES,\n} from '@antv/l7-core';\nimport { isMini } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { RasterImageTriangulation } from '../../core/triangulation';\nimport ImageFrag from '../shaders/image_frag.glsl';\nimport ImageVert from '../shaders/image_vert.glsl';\n\ninterface IImageLayerStyleOptions {\n opacity: number;\n}\nexport default class ImageModel extends BaseModel {\n protected texture: ITexture2D;\n public getUninforms(): IModelUniform {\n const { opacity } = this.layer.getLayerConfig() as IImageLayerStyleOptions;\n return {\n u_opacity: opacity || 1,\n u_texture: this.texture,\n };\n }\n public initModels() {\n const source = this.layer.getSource();\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n\n if (isMini) {\n // @ts-ignore\n const canvas = this.layerService.sceneService.getSceneConfig().canvas;\n const img = canvas.createImage();\n // let img = new Image()\n img.crossOrigin = 'anonymous';\n img.src = source.data.originData;\n\n img.onload = () => {\n this.texture = createTexture2D({\n data: img,\n width: img.width,\n height: img.height,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n };\n } else {\n source.data.images.then((imageData: HTMLImageElement[]) => {\n this.texture = createTexture2D({\n data: imageData[0],\n width: imageData[0].width,\n height: imageData[0].height,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n });\n }\n\n return [\n this.layer.buildLayerModel({\n moduleName: 'RasterImage',\n vertexShader: ImageVert,\n fragmentShader: ImageFrag,\n triangulation: RasterImageTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: false },\n blend: this.getBlend(),\n }),\n ];\n }\n public buildModels() {\n return this.initModels();\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n}\n"],"file":"image.js"}
|
|
@@ -41,7 +41,9 @@ var ImageTile = function () {
|
|
|
41
41
|
var south = lnglatBounds.getSouth();
|
|
42
42
|
var east = lnglatBounds.getEast();
|
|
43
43
|
var north = lnglatBounds.getNorth();
|
|
44
|
-
var imageLayer = new _image.default({
|
|
44
|
+
var imageLayer = new _image.default({
|
|
45
|
+
zIndex: -999
|
|
46
|
+
});
|
|
45
47
|
imageLayer.source(imageSrc, {
|
|
46
48
|
parser: {
|
|
47
49
|
type: 'image',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/imagetile/utils/ImageTile.ts"],"names":["r2d","Math","PI","tileURLRegex","ImageTile","key","url","container","sceneContainer","name","tile","split","map","v","Number","urlParams","x","y","z","imageSrc","getTileURL","lnglatBounds","tileLnglatBounds","west","getWest","south","getSouth","east","getEast","north","getNorth","imageLayer","ImageLayer","source","parser","type","extent","setContainer","init","clearModels","destroy","path","s","String","fromCharCode","floor","random","lastIndex","replace","value","e","tile2lng","w","tile2lat","n","pow","atan","exp"],"mappings":";;;;;;;;;;;;;;;AAAA;;AAEA;;AASA,IAAMA,GAAG,GAAG,MAAMC,IAAI,CAACC,EAAvB;AACA,IAAMC,YAAY,GAAG,cAArB;;IAEqBC,S;AAInB,qBACEC,GADF,EAEEC,GAFF,EAGEC,SAHF,EAIEC,cAJF,EAKE;AAAA;AAAA;AAAA;AAAA;AACA,SAAKC,IAAL,GAAYJ,GAAZ;AACA,SAAKK,IAAL,GAAYL,GAAG,CAACM,KAAJ,CAAU,GAAV,EAAeC,GAAf,CAAmB,UAACC,CAAD;AAAA,aAAOC,MAAM,CAACD,CAAD,CAAb;AAAA,KAAnB,CAAZ;AAEA,QAAME,SAAS,GAAG;AAChBC,MAAAA,CAAC,EAAE,KAAKN,IAAL,CAAU,CAAV,CADa;AAEhBO,MAAAA,CAAC,EAAE,KAAKP,IAAL,CAAU,CAAV,CAFa;AAGhBQ,MAAAA,CAAC,EAAE,KAAKR,IAAL,CAAU,CAAV;AAHa,KAAlB;AAKA,QAAMS,QAAQ,GAAG,KAAKC,UAAL,CAAgBL,SAAhB,EAA2BT,GAA3B,CAAjB;AAEA,QAAMe,YAAY,GAAG,KAAKC,gBAAL,CAAsB,KAAKZ,IAA3B,CAArB;AACA,QAAMa,IAAI,GAAGF,YAAY,CAACG,OAAb,EAAb;AACA,QAAMC,KAAK,GAAGJ,YAAY,CAACK,QAAb,EAAd;AACA,QAAMC,IAAI,GAAGN,YAAY,CAACO,OAAb,EAAb;AACA,QAAMC,KAAK,GAAGR,YAAY,CAACS,QAAb,EAAd;AAEA,QAAMC,UAAU,GAAG,IAAIC,cAAJ,CAAe,
|
|
1
|
+
{"version":3,"sources":["../../../src/imagetile/utils/ImageTile.ts"],"names":["r2d","Math","PI","tileURLRegex","ImageTile","key","url","container","sceneContainer","name","tile","split","map","v","Number","urlParams","x","y","z","imageSrc","getTileURL","lnglatBounds","tileLnglatBounds","west","getWest","south","getSouth","east","getEast","north","getNorth","imageLayer","ImageLayer","zIndex","source","parser","type","extent","setContainer","init","clearModels","destroy","path","s","String","fromCharCode","floor","random","lastIndex","replace","value","e","tile2lng","w","tile2lat","n","pow","atan","exp"],"mappings":"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","sourcesContent":["import { LngLatBounds, toBounds, toLngLatBounds } from '@antv/geo-coord';\nimport { Container } from 'inversify';\nimport ImageLayer from '../../image';\n\ninterface IUrlParams {\n x: number;\n y: number;\n z: number;\n s?: string;\n}\n\nconst r2d = 180 / Math.PI;\nconst tileURLRegex = /\\{([zxy])\\}/g;\n\nexport default class ImageTile {\n public tile: number[]; // 当前图片瓦片的索引\n public name: string;\n public imageLayer: any;\n constructor(\n key: string,\n url: string,\n container: Container,\n sceneContainer: Container,\n ) {\n this.name = key;\n this.tile = key.split('_').map((v) => Number(v));\n\n const urlParams = {\n x: this.tile[0],\n y: this.tile[1],\n z: this.tile[2],\n };\n const imageSrc = this.getTileURL(urlParams, url);\n\n const lnglatBounds = this.tileLnglatBounds(this.tile);\n const west = lnglatBounds.getWest();\n const south = lnglatBounds.getSouth();\n const east = lnglatBounds.getEast();\n const north = lnglatBounds.getNorth();\n\n const imageLayer = new ImageLayer({ zIndex: -999 });\n imageLayer.source(\n // 'https://gw.alipayobjects.com/zos/rmsportal/FnHFeFklTzKDdUESRNDv.jpg',\n imageSrc,\n {\n parser: {\n type: 'image',\n // extent: [121.168, 30.2828, 121.384, 30.4219],\n extent: [west, south, east, north],\n },\n },\n );\n\n imageLayer.setContainer(container, sceneContainer);\n imageLayer.init();\n\n this.imageLayer = imageLayer;\n }\n\n public destroy() {\n this.imageLayer.clearModels();\n this.imageLayer.destroy();\n }\n\n public getTileURL(urlParams: IUrlParams, path: string) {\n if (!urlParams.s) {\n // Default to a random choice of a, b or c\n urlParams.s = String.fromCharCode(97 + Math.floor(Math.random() * 3));\n }\n\n tileURLRegex.lastIndex = 0;\n return path.replace(tileURLRegex, (value, key: any) => {\n // @ts-ignore\n return urlParams[key];\n });\n }\n\n // Get tile bounds in WGS84 coordinates\n public tileLnglatBounds(tile: number[]) {\n const e = this.tile2lng(tile[0] + 1, tile[2]);\n const w = this.tile2lng(tile[0], tile[2]);\n const s = this.tile2lat(tile[1] + 1, tile[2]);\n const n = this.tile2lat(tile[1], tile[2]);\n return toLngLatBounds([w, n], [e, s]);\n }\n\n public tile2lng(x: number, z: number) {\n return (x / Math.pow(2, z)) * 360 - 180;\n }\n\n public tile2lat(y: number, z: number) {\n const n = Math.PI - (2 * Math.PI * y) / Math.pow(2, z);\n return r2d * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));\n }\n}\n"],"file":"ImageTile.js"}
|
|
@@ -224,6 +224,7 @@ var Tile = function () {
|
|
|
224
224
|
this.layer.layerChildren.push(tile.imageLayer);
|
|
225
225
|
this.tileCache.setTile(tile, key);
|
|
226
226
|
this.pruneTiles();
|
|
227
|
+
this.layerService.updateLayerRenderList();
|
|
227
228
|
this.layerService.renderLayers();
|
|
228
229
|
} else {
|
|
229
230
|
tile.imageLayer.show();
|
|
@@ -286,6 +287,7 @@ var Tile = function () {
|
|
|
286
287
|
|
|
287
288
|
tile.imageLayer.emit('remove', null);
|
|
288
289
|
tile.imageLayer.destroy();
|
|
290
|
+
this.layerService.updateLayerRenderList();
|
|
289
291
|
this.layerService.renderLayers();
|
|
290
292
|
tile = null;
|
|
291
293
|
}
|
|
@@ -312,6 +314,7 @@ var Tile = function () {
|
|
|
312
314
|
layer.destroy();
|
|
313
315
|
});
|
|
314
316
|
this.layer.layerChildren = [];
|
|
317
|
+
this.layerService.updateLayerRenderList();
|
|
315
318
|
this.layerService.renderLayers();
|
|
316
319
|
this.tileList = {};
|
|
317
320
|
this.tileCache.destory();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/imagetile/utils/Tile.ts"],"names":["CacheLimit","Tile","props","layerService","layer","url","resolution","maxSourceZoom","crstype","currentCrs","GeoCoordinates","default","start","x","y","end","projection","crs","destroyTile","bind","tileCache","TileCache","updateTileList","removeTiles","oprions","NE","SW","tileCenter","currentZoom","minSourceZoom","minZoom","maxZoom","zoom","Math","floor","tileZoom","centerPoint","lngLatToPoint","lng","lat","centerXY","divideBy","pixelBounds","getPixelBounds","tileRange","pxBoundsToTileRange","margin","noPruneRange","Bounds","getBottomLeft","subtract","getTopRight","add","isFinite","min","max","Error","j","i","coords","tile","tileList","join","current","push","sort","a","b","tile1","tile2","d1","pow","d2","pruneTiles","forEach","key","requestTile","ceil","NEPoint","SWPoint","topHeight","bottomHeight","leftWidth","rightWidth","width","Object","keys","map","c","contains","Point","retain","active","split","v","Number","z","retainParent","retainChildren","removeOutTiles","t","getTile","container","sceneContainer","ImageTile","name","layerChildren","imageLayer","setTile","renderLayers","show","x2","y2","z2","loaded","layerIndex","indexOf","splice","emit","destroy","hide","destory"],"mappings":"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","sourcesContent":["import { Bounds, GeoCoordinates, Point, toLngLat } from '@antv/geo-coord';\nimport {\n createLayerContainer,\n ILayer,\n ILayerService,\n ILngLat,\n} from '@antv/l7-core';\nimport { Container } from 'inversify';\n\nimport ImageTile from './ImageTile';\nimport TileCache from './tileCache';\n\n// Tip: 瓦片地图的存储上限\nconst CacheLimit = 30;\n\nexport default class Tile {\n public tileList: any = {};\n public tileCache: any;\n\n public updateTileList: any[];\n public tileZoom: number;\n public noPruneRange: any;\n public url: string;\n public resolution: number;\n public maxSourceZoom: number;\n public crstype: string;\n public currentCrs: any;\n\n public layerService: ILayerService;\n public layer: ILayer;\n constructor(props: any) {\n this.layerService = props.layerService;\n this.layer = props.layer;\n this.url = props.url;\n this.resolution = props.resolution === 'low' ? -1 : 0;\n this.maxSourceZoom = props.maxSourceZoom;\n this.crstype = props.crstype;\n\n this.currentCrs = new GeoCoordinates.default({\n start: { x: 0, y: 0 },\n end: { x: 0, y: 0 },\n projection: this.crstype,\n }).crs as any;\n\n this.destroyTile = this.destroyTile.bind(this);\n this.tileCache = new TileCache(CacheLimit, this.destroyTile);\n\n this.updateTileList = [];\n\n this.removeTiles = this.removeTiles.bind(this);\n }\n\n public calCurrentTiles(oprions: any) {\n const {\n NE,\n SW,\n tileCenter,\n currentZoom,\n minSourceZoom,\n minZoom,\n maxZoom,\n } = oprions;\n // TODO: 当前瓦片的层级要比地图底图的层级低\n if (currentZoom >= this.maxSourceZoom) {\n return;\n }\n const zoom = Math.floor(currentZoom) + this.resolution;\n\n this.tileZoom = zoom > this.maxSourceZoom ? this.maxSourceZoom : zoom;\n\n if (\n currentZoom < minZoom ||\n currentZoom >= maxZoom ||\n currentZoom < minSourceZoom\n ) {\n this.removeTiles();\n return;\n }\n\n this.updateTileList = [];\n\n // 计算瓦片中心\n const centerPoint = this.currentCrs.lngLatToPoint(\n toLngLat(tileCenter.lng, tileCenter.lat),\n this.tileZoom,\n );\n const centerXY = centerPoint.divideBy(256).floor();\n\n const pixelBounds = this.getPixelBounds(\n NE,\n SW,\n tileCenter,\n this.tileZoom,\n this.currentCrs,\n ); // 计算像素范围\n const tileRange = this.pxBoundsToTileRange(pixelBounds); // 计算瓦片范围\n\n const margin = 4;\n\n this.noPruneRange = new Bounds(\n tileRange.getBottomLeft().subtract([margin, -margin]),\n tileRange.getTopRight().add([margin, -margin]),\n );\n\n // T: isFinite(n: number) 用于检测 n 是否无穷大\n if (\n !(\n isFinite(tileRange.min.x) &&\n isFinite(tileRange.min.y) &&\n isFinite(tileRange.max.x) &&\n isFinite(tileRange.max.y)\n )\n ) {\n throw new Error('Attempted to load an infinite number of tiles');\n }\n\n // 根据视野判断新增的瓦片索引\n for (let j = tileRange.min.y; j <= tileRange.max.y; j++) {\n for (let i = tileRange.min.x; i <= tileRange.max.x; i++) {\n const coords = [i, j, this.tileZoom];\n const tile = this.tileList[coords.join('_')];\n if (tile) {\n tile.current = true;\n } else {\n this.tileList[coords.join('_')] = {\n current: true,\n coords,\n };\n this.updateTileList.push(coords);\n }\n }\n }\n\n // 瓦片列表排序\n this.updateTileList.sort((a: any, b: any) => {\n const tile1 = a;\n const tile2 = b;\n const d1 =\n Math.pow(tile1[0] * 1 - centerXY.x, 2) +\n Math.pow(tile1[1] * 1 - centerXY.y, 2);\n const d2 =\n Math.pow(tile2[0] * 1 - centerXY.x, 2) +\n Math.pow(tile2[1] * 1 - centerXY.y, 2);\n return d1 - d2;\n });\n\n this.pruneTiles();\n this.updateTileList.forEach((coords: any) => {\n const key = coords.join('_');\n if (this.tileList[key].current) {\n this.requestTile(key);\n }\n });\n }\n\n public pxBoundsToTileRange(pixelBounds: any) {\n return new Bounds(\n pixelBounds.min.divideBy(256).floor(),\n pixelBounds.max\n .divideBy(256)\n .ceil()\n .subtract([1, 1]),\n );\n }\n\n public getPixelBounds(\n NE: ILngLat,\n SW: ILngLat,\n tileCenter: ILngLat,\n tileZoom: number,\n crs: any,\n ) {\n const zoom = tileZoom;\n const NEPoint = crs.lngLatToPoint(toLngLat(NE.lng, NE.lat), zoom);\n const SWPoint = crs.lngLatToPoint(toLngLat(SW.lng, SW.lat), zoom);\n const centerPoint = crs.lngLatToPoint(\n toLngLat(tileCenter.lng, tileCenter.lat),\n zoom,\n );\n const topHeight = centerPoint.y - NEPoint.y;\n const bottomHeight = SWPoint.y - centerPoint.y;\n // 跨日界线的情况\n let leftWidth;\n let rightWidth;\n if (tileCenter.lng - NE.lng > 0 || tileCenter.lng - SW.lng < 0) {\n const width =\n ((Math.pow(2, zoom) * 256) / 360) * (180 - NE.lng) +\n ((Math.pow(2, zoom) * 256) / 360) * (SW.lng + 180);\n if (tileCenter.lng - NE.lng > 0) {\n // 日界线在右侧\n leftWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (tileCenter.lng - NE.lng);\n rightWidth = width - leftWidth;\n } else {\n rightWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (SW.lng - tileCenter.lng);\n leftWidth = width - rightWidth;\n }\n } else {\n // 不跨日界线\n leftWidth = ((Math.pow(2, zoom) * 256) / 360) * (tileCenter.lng - SW.lng);\n rightWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (NE.lng - tileCenter.lng);\n }\n const pixelBounds = new Bounds(\n centerPoint.subtract(leftWidth, topHeight),\n centerPoint.add(rightWidth, bottomHeight),\n );\n return pixelBounds;\n }\n\n public pruneTiles() {\n Object.keys(this.tileList).map((key) => {\n const c = this.tileList[key].coords;\n // 如果不是同一个缩放层级,则将瓦片设为不显示\n if (\n c[2] !== this.tileZoom ||\n !this.noPruneRange.contains(new Point(c[0], c[1]))\n ) {\n this.tileList[key].current = false;\n }\n });\n\n Object.keys(this.tileList).map((key) => {\n const tile = this.tileList[key];\n tile.retain = tile.current;\n });\n\n Object.keys(this.tileList).map((key) => {\n const tile = this.tileList[key];\n if (tile.current && !tile.active) {\n const [x, y, z] = key.split('_').map((v) => Number(v));\n\n if (!this.retainParent(x, y, z, z - 5)) {\n this.retainChildren(x, y, z, z + 2);\n }\n }\n });\n\n this.removeOutTiles();\n }\n\n public requestTile(key: string) {\n const t = this.tileList[key];\n if (!t) {\n return;\n }\n let tile = this.tileCache.getTile(key);\n if (!tile) {\n const container = createLayerContainer(\n this.layer.sceneContainer as Container,\n );\n tile = new ImageTile(\n key,\n this.url,\n container,\n this.layer.sceneContainer as Container,\n );\n tile.name = key;\n\n t.current = true;\n t.retain = true;\n t.active = true;\n\n // 往 imageTileLayer 中添加子图层\n this.layer.layerChildren.push(tile.imageLayer);\n\n this.tileCache.setTile(tile, key);\n\n this.pruneTiles();\n this.layerService.renderLayers();\n } else {\n // Tip: show 方法就是将相应的瓦片图片添加到渲染队列\n tile.imageLayer.show();\n t.current = true;\n t.retain = true;\n t.active = true;\n\n this.pruneTiles();\n }\n }\n\n public retainParent(x: number, y: number, z: number, minZoom: number): any {\n const x2 = Math.floor(x / 2);\n const y2 = Math.floor(y / 2);\n const z2 = z - 1;\n const tile = this.tileList[[x2, y2, z2].join('_')];\n if (tile && tile.active) {\n tile.retain = true;\n return true;\n } else if (tile && tile.loaded) {\n tile.retain = true;\n }\n if (z2 > minZoom) {\n return this.retainParent(x2, y2, z2, minZoom);\n }\n return false;\n }\n\n public retainChildren(x: number, y: number, z: number, maxZoom: number) {\n for (let i = 2 * x; i < 2 * x + 2; i++) {\n for (let j = 2 * y; j < 2 * y + 2; j++) {\n const key = [i, j, z + 1].join('_');\n const tile = this.tileList[key];\n if (tile && tile.active) {\n tile.retain = true;\n continue;\n } else if (tile && tile.loaded) {\n tile.retain = true;\n }\n\n if (z + 1 < maxZoom) {\n this.retainChildren(i, j, z + 1, maxZoom);\n }\n }\n }\n }\n\n public destroyTile(tile: any) {\n const layerIndex = this.layer.layerChildren.indexOf(tile.imageLayer);\n if (layerIndex > -1) {\n this.layer.layerChildren.splice(layerIndex, 1);\n }\n\n tile.imageLayer.emit('remove', null);\n tile.imageLayer.destroy();\n this.layerService.renderLayers();\n\n // 清除 tileCache 中的存储 相当于 tileCache.setTile(tile, null)\n tile = null;\n }\n\n public removeOutTiles() {\n for (const key in this.tileList) {\n if (!this.tileList[key].retain) {\n // Tip: 不需要显示的瓦片对象\n const tile = this.tileCache.getTile(key);\n // Tip: 若是网格对象存在\n if (tile) {\n // Tip: hide 方法就是将相应的瓦片图片从渲染队列中剔除\n tile.imageLayer.hide();\n }\n delete this.tileList[key];\n }\n }\n }\n\n public removeTiles() {\n this.layer.layerChildren.forEach((layer: any) => {\n layer.emit('remove', null);\n layer.destroy();\n });\n\n this.layer.layerChildren = [];\n this.layerService.renderLayers();\n this.tileList = {};\n this.tileCache.destory();\n }\n}\n"],"file":"Tile.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/imagetile/utils/Tile.ts"],"names":["CacheLimit","Tile","props","layerService","layer","url","resolution","maxSourceZoom","crstype","currentCrs","GeoCoordinates","default","start","x","y","end","projection","crs","destroyTile","bind","tileCache","TileCache","updateTileList","removeTiles","oprions","NE","SW","tileCenter","currentZoom","minSourceZoom","minZoom","maxZoom","zoom","Math","floor","tileZoom","centerPoint","lngLatToPoint","lng","lat","centerXY","divideBy","pixelBounds","getPixelBounds","tileRange","pxBoundsToTileRange","margin","noPruneRange","Bounds","getBottomLeft","subtract","getTopRight","add","isFinite","min","max","Error","j","i","coords","tile","tileList","join","current","push","sort","a","b","tile1","tile2","d1","pow","d2","pruneTiles","forEach","key","requestTile","ceil","NEPoint","SWPoint","topHeight","bottomHeight","leftWidth","rightWidth","width","Object","keys","map","c","contains","Point","retain","active","split","v","Number","z","retainParent","retainChildren","removeOutTiles","t","getTile","container","sceneContainer","ImageTile","name","layerChildren","imageLayer","setTile","updateLayerRenderList","renderLayers","show","x2","y2","z2","loaded","layerIndex","indexOf","splice","emit","destroy","hide","destory"],"mappings":"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","sourcesContent":["import { Bounds, GeoCoordinates, Point, toLngLat } from '@antv/geo-coord';\nimport {\n createLayerContainer,\n ILayer,\n ILayerService,\n ILngLat,\n} from '@antv/l7-core';\nimport { Container } from 'inversify';\n\nimport ImageTile from './ImageTile';\nimport TileCache from './tileCache';\n\n// Tip: 瓦片地图的存储上限\nconst CacheLimit = 30;\n\nexport default class Tile {\n public tileList: any = {};\n public tileCache: any;\n\n public updateTileList: any[];\n public tileZoom: number;\n public noPruneRange: any;\n public url: string;\n public resolution: number;\n public maxSourceZoom: number;\n public crstype: string;\n public currentCrs: any;\n\n public layerService: ILayerService;\n public layer: ILayer;\n constructor(props: any) {\n this.layerService = props.layerService;\n this.layer = props.layer;\n this.url = props.url;\n this.resolution = props.resolution === 'low' ? -1 : 0;\n this.maxSourceZoom = props.maxSourceZoom;\n this.crstype = props.crstype;\n\n this.currentCrs = new GeoCoordinates.default({\n start: { x: 0, y: 0 },\n end: { x: 0, y: 0 },\n projection: this.crstype,\n }).crs as any;\n\n this.destroyTile = this.destroyTile.bind(this);\n this.tileCache = new TileCache(CacheLimit, this.destroyTile);\n\n this.updateTileList = [];\n\n this.removeTiles = this.removeTiles.bind(this);\n }\n\n public calCurrentTiles(oprions: any) {\n const {\n NE,\n SW,\n tileCenter,\n currentZoom,\n minSourceZoom,\n minZoom,\n maxZoom,\n } = oprions;\n // TODO: 当前瓦片的层级要比地图底图的层级低\n if (currentZoom >= this.maxSourceZoom) {\n return;\n }\n const zoom = Math.floor(currentZoom) + this.resolution;\n\n this.tileZoom = zoom > this.maxSourceZoom ? this.maxSourceZoom : zoom;\n\n if (\n currentZoom < minZoom ||\n currentZoom >= maxZoom ||\n currentZoom < minSourceZoom\n ) {\n this.removeTiles();\n return;\n }\n\n this.updateTileList = [];\n\n // 计算瓦片中心\n const centerPoint = this.currentCrs.lngLatToPoint(\n toLngLat(tileCenter.lng, tileCenter.lat),\n this.tileZoom,\n );\n const centerXY = centerPoint.divideBy(256).floor();\n\n const pixelBounds = this.getPixelBounds(\n NE,\n SW,\n tileCenter,\n this.tileZoom,\n this.currentCrs,\n ); // 计算像素范围\n const tileRange = this.pxBoundsToTileRange(pixelBounds); // 计算瓦片范围\n\n const margin = 4;\n\n this.noPruneRange = new Bounds(\n tileRange.getBottomLeft().subtract([margin, -margin]),\n tileRange.getTopRight().add([margin, -margin]),\n );\n\n // T: isFinite(n: number) 用于检测 n 是否无穷大\n if (\n !(\n isFinite(tileRange.min.x) &&\n isFinite(tileRange.min.y) &&\n isFinite(tileRange.max.x) &&\n isFinite(tileRange.max.y)\n )\n ) {\n throw new Error('Attempted to load an infinite number of tiles');\n }\n\n // 根据视野判断新增的瓦片索引\n for (let j = tileRange.min.y; j <= tileRange.max.y; j++) {\n for (let i = tileRange.min.x; i <= tileRange.max.x; i++) {\n const coords = [i, j, this.tileZoom];\n const tile = this.tileList[coords.join('_')];\n if (tile) {\n tile.current = true;\n } else {\n this.tileList[coords.join('_')] = {\n current: true,\n coords,\n };\n this.updateTileList.push(coords);\n }\n }\n }\n\n // 瓦片列表排序\n this.updateTileList.sort((a: any, b: any) => {\n const tile1 = a;\n const tile2 = b;\n const d1 =\n Math.pow(tile1[0] * 1 - centerXY.x, 2) +\n Math.pow(tile1[1] * 1 - centerXY.y, 2);\n const d2 =\n Math.pow(tile2[0] * 1 - centerXY.x, 2) +\n Math.pow(tile2[1] * 1 - centerXY.y, 2);\n return d1 - d2;\n });\n\n this.pruneTiles();\n this.updateTileList.forEach((coords: any) => {\n const key = coords.join('_');\n if (this.tileList[key].current) {\n this.requestTile(key);\n }\n });\n }\n\n public pxBoundsToTileRange(pixelBounds: any) {\n return new Bounds(\n pixelBounds.min.divideBy(256).floor(),\n pixelBounds.max\n .divideBy(256)\n .ceil()\n .subtract([1, 1]),\n );\n }\n\n public getPixelBounds(\n NE: ILngLat,\n SW: ILngLat,\n tileCenter: ILngLat,\n tileZoom: number,\n crs: any,\n ) {\n const zoom = tileZoom;\n const NEPoint = crs.lngLatToPoint(toLngLat(NE.lng, NE.lat), zoom);\n const SWPoint = crs.lngLatToPoint(toLngLat(SW.lng, SW.lat), zoom);\n const centerPoint = crs.lngLatToPoint(\n toLngLat(tileCenter.lng, tileCenter.lat),\n zoom,\n );\n const topHeight = centerPoint.y - NEPoint.y;\n const bottomHeight = SWPoint.y - centerPoint.y;\n // 跨日界线的情况\n let leftWidth;\n let rightWidth;\n if (tileCenter.lng - NE.lng > 0 || tileCenter.lng - SW.lng < 0) {\n const width =\n ((Math.pow(2, zoom) * 256) / 360) * (180 - NE.lng) +\n ((Math.pow(2, zoom) * 256) / 360) * (SW.lng + 180);\n if (tileCenter.lng - NE.lng > 0) {\n // 日界线在右侧\n leftWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (tileCenter.lng - NE.lng);\n rightWidth = width - leftWidth;\n } else {\n rightWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (SW.lng - tileCenter.lng);\n leftWidth = width - rightWidth;\n }\n } else {\n // 不跨日界线\n leftWidth = ((Math.pow(2, zoom) * 256) / 360) * (tileCenter.lng - SW.lng);\n rightWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (NE.lng - tileCenter.lng);\n }\n const pixelBounds = new Bounds(\n centerPoint.subtract(leftWidth, topHeight),\n centerPoint.add(rightWidth, bottomHeight),\n );\n return pixelBounds;\n }\n\n public pruneTiles() {\n Object.keys(this.tileList).map((key) => {\n const c = this.tileList[key].coords;\n // 如果不是同一个缩放层级,则将瓦片设为不显示\n if (\n c[2] !== this.tileZoom ||\n !this.noPruneRange.contains(new Point(c[0], c[1]))\n ) {\n this.tileList[key].current = false;\n }\n });\n\n Object.keys(this.tileList).map((key) => {\n const tile = this.tileList[key];\n tile.retain = tile.current;\n });\n\n Object.keys(this.tileList).map((key) => {\n const tile = this.tileList[key];\n if (tile.current && !tile.active) {\n const [x, y, z] = key.split('_').map((v) => Number(v));\n\n if (!this.retainParent(x, y, z, z - 5)) {\n this.retainChildren(x, y, z, z + 2);\n }\n }\n });\n\n this.removeOutTiles();\n }\n\n public requestTile(key: string) {\n const t = this.tileList[key];\n if (!t) {\n return;\n }\n let tile = this.tileCache.getTile(key);\n if (!tile) {\n const container = createLayerContainer(\n this.layer.sceneContainer as Container,\n );\n tile = new ImageTile(\n key,\n this.url,\n container,\n this.layer.sceneContainer as Container,\n );\n tile.name = key;\n\n t.current = true;\n t.retain = true;\n t.active = true;\n\n // 往 imageTileLayer 中添加子图层\n this.layer.layerChildren.push(tile.imageLayer);\n\n this.tileCache.setTile(tile, key);\n\n this.pruneTiles();\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n } else {\n // Tip: show 方法就是将相应的瓦片图片添加到渲染队列\n tile.imageLayer.show();\n t.current = true;\n t.retain = true;\n t.active = true;\n\n this.pruneTiles();\n }\n }\n\n public retainParent(x: number, y: number, z: number, minZoom: number): any {\n const x2 = Math.floor(x / 2);\n const y2 = Math.floor(y / 2);\n const z2 = z - 1;\n const tile = this.tileList[[x2, y2, z2].join('_')];\n if (tile && tile.active) {\n tile.retain = true;\n return true;\n } else if (tile && tile.loaded) {\n tile.retain = true;\n }\n if (z2 > minZoom) {\n return this.retainParent(x2, y2, z2, minZoom);\n }\n return false;\n }\n\n public retainChildren(x: number, y: number, z: number, maxZoom: number) {\n for (let i = 2 * x; i < 2 * x + 2; i++) {\n for (let j = 2 * y; j < 2 * y + 2; j++) {\n const key = [i, j, z + 1].join('_');\n const tile = this.tileList[key];\n if (tile && tile.active) {\n tile.retain = true;\n continue;\n } else if (tile && tile.loaded) {\n tile.retain = true;\n }\n\n if (z + 1 < maxZoom) {\n this.retainChildren(i, j, z + 1, maxZoom);\n }\n }\n }\n }\n\n public destroyTile(tile: any) {\n const layerIndex = this.layer.layerChildren.indexOf(tile.imageLayer);\n if (layerIndex > -1) {\n this.layer.layerChildren.splice(layerIndex, 1);\n }\n\n tile.imageLayer.emit('remove', null);\n tile.imageLayer.destroy();\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n\n // 清除 tileCache 中的存储 相当于 tileCache.setTile(tile, null)\n tile = null;\n }\n\n public removeOutTiles() {\n for (const key in this.tileList) {\n if (!this.tileList[key].retain) {\n // Tip: 不需要显示的瓦片对象\n const tile = this.tileCache.getTile(key);\n // Tip: 若是网格对象存在\n if (tile) {\n // Tip: hide 方法就是将相应的瓦片图片从渲染队列中剔除\n tile.imageLayer.hide();\n }\n delete this.tileList[key];\n }\n }\n }\n\n public removeTiles() {\n this.layer.layerChildren.forEach((layer: any) => {\n layer.emit('remove', null);\n layer.destroy();\n });\n\n this.layer.layerChildren = [];\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n this.tileList = {};\n this.tileCache.destory();\n }\n}\n"],"file":"Tile.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antv/l7-layers",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.46",
|
|
4
4
|
"description": "L7's collection of built-in layers",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"license": "ISC",
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@antv/geo-coord": "^1.0.8",
|
|
27
|
-
"@antv/l7-core": "2.5.
|
|
28
|
-
"@antv/l7-source": "2.5.
|
|
29
|
-
"@antv/l7-utils": "2.5.
|
|
27
|
+
"@antv/l7-core": "^2.5.46",
|
|
28
|
+
"@antv/l7-source": "^2.5.46",
|
|
29
|
+
"@antv/l7-utils": "^2.5.46",
|
|
30
30
|
"@babel/runtime": "^7.7.7",
|
|
31
31
|
"@mapbox/martini": "^0.2.0",
|
|
32
32
|
"@turf/meta": "^6.0.2",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@types/gl-matrix": "^2.4.5",
|
|
53
53
|
"@types/lodash": "^4.14.138"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "069e6a635ba8c56150384e8f8940b31bdd0b9a82",
|
|
56
56
|
"publishConfig": {
|
|
57
57
|
"access": "public"
|
|
58
58
|
}
|