@antv/l7-layers 2.5.37-mini6 → 2.5.37-mini7

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.
@@ -47,6 +47,9 @@ var _blend = require("../utils/blend");
47
47
 
48
48
  var _dataMappingStyle = require("../utils/dataMappingStyle");
49
49
 
50
+ var _excluded = ["passes"],
51
+ _excluded2 = ["moduleName", "vertexShader", "fragmentShader", "triangulation", "segmentNumber"];
52
+
50
53
  var _dec, _dec2, _class, _descriptor, _descriptor2;
51
54
 
52
55
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
@@ -55,7 +58,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
55
58
 
56
59
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
57
60
 
58
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
61
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
59
62
 
60
63
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
61
64
 
@@ -385,7 +388,7 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
385
388
  var _this4 = this;
386
389
 
387
390
  var passes = options.passes,
388
- rest = (0, _objectWithoutProperties2.default)(options, ["passes"]);
391
+ rest = (0, _objectWithoutProperties2.default)(options, _excluded);
389
392
 
390
393
  if (passes) {
391
394
  (0, _MultiPassRendererPlugin.normalizePasses)(passes).forEach(function (pass) {
@@ -777,7 +780,7 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
777
780
  fragmentShader = options.fragmentShader,
778
781
  triangulation = options.triangulation,
779
782
  segmentNumber = options.segmentNumber,
780
- rest = (0, _objectWithoutProperties2.default)(options, ["moduleName", "vertexShader", "fragmentShader", "triangulation", "segmentNumber"]);
783
+ rest = (0, _objectWithoutProperties2.default)(options, _excluded2);
781
784
  this.shaderModuleService.registerModule(moduleName, {
782
785
  vs: vertexShader,
783
786
  fs: fragmentShader
@@ -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","updateRenderOrder","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.updateRenderOrder();\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","updateRenderOrder","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.updateRenderOrder();\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"}
@@ -5,13 +5,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.polygonPath = polygonPath;
8
+ exports.ShapeType3D = exports.ShapeType2D = void 0;
9
9
  exports.circle = circle;
10
- exports.square = square;
11
- exports.triangle = triangle;
10
+ exports.geometryShape = void 0;
12
11
  exports.hexagon = hexagon;
13
12
  exports.pentagon = pentagon;
14
- exports.geometryShape = exports.ShapeType2D = exports.ShapeType3D = void 0;
13
+ exports.polygonPath = polygonPath;
14
+ exports.square = square;
15
+ exports.triangle = triangle;
15
16
 
16
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
18
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/shape/Path.ts"],"names":["ShapeType3D","ShapeType2D","polygonPath","pointCount","start","step","Math","PI","line","i","push","path","map","t","x","sin","y","cos","circle","square","triangle","hexagon","pentagon","geometryShape","CIRCLE","HEXAGON","TRIANGLE","SQUARE","PENTAGON","CYLINDER","HEXAGONCOLUMN","TRIANGLECOLUMN","SQUARECOLUMN","PENTAGONCOLUMN"],"mappings":";;;;;;;;;;;;;;;;;;;IAEYA,W;;;WAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,2BAAAA,W;;IAOAC,W;;;WAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,2BAAAA,W;;AAaL,SAASC,WAAT,CAAqBC,UAArB,EAAmE;AAAA,MAA1BC,KAA0B,uEAAV,CAAU;AACxE,MAAMC,IAAI,GAAIC,IAAI,CAACC,EAAL,GAAU,CAAX,GAAgBJ,UAA7B;AACA,MAAMK,IAAI,GAAG,EAAb;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,UAApB,EAAgCM,CAAC,EAAjC,EAAqC;AACnCD,IAAAA,IAAI,CAACE,IAAL,CAAUL,IAAI,GAAGI,CAAP,GAAYL,KAAK,GAAGE,IAAI,CAACC,EAAd,GAAoB,EAAzC;AACD;;AACD,MAAMI,IAAW,GAAGH,IAAI,CAACI,GAAL,CAAS,UAACC,CAAD,EAAO;AAClC,QAAMC,CAAC,GAAGR,IAAI,CAACS,GAAL,CAASF,CAAC,GAAGP,IAAI,CAACC,EAAL,GAAU,CAAvB,CAAV;AACA,QAAMS,CAAC,GAAGV,IAAI,CAACW,GAAL,CAASJ,CAAC,GAAGP,IAAI,CAACC,EAAL,GAAU,CAAvB,CAAV;AACA,WAAO,CAACO,CAAD,EAAIE,CAAJ,EAAO,CAAP,CAAP;AACD,GAJmB,CAApB;AAMA,SAAOL,IAAP;AACD;;AAEM,SAASO,MAAT,GAAyB;AAC9B,SAAOhB,WAAW,CAAC,EAAD,CAAlB;AACD;;AACM,SAASiB,MAAT,GAAyB;AAC9B,SAAOjB,WAAW,CAAC,CAAD,CAAlB;AACD;;AACM,SAASkB,QAAT,GAA2B;AAChC,SAAOlB,WAAW,CAAC,CAAD,CAAlB;AACD;;AACM,SAASmB,OAAT,GAA0B;AAC/B,SAAOnB,WAAW,CAAC,CAAD,EAAI,CAAJ,CAAlB;AACD;;AACM,SAASoB,QAAT,GAA2B;AAChC,SAAOpB,WAAW,CAAC,CAAD,CAAlB;AACD;;AAEM,IAAMqB,aAAa,uEACvBtB,WAAW,CAACuB,MADW,EACFN,MADE,iDAEvBjB,WAAW,CAACwB,OAFW,EAEDJ,OAFC,iDAGvBpB,WAAW,CAACyB,QAHW,EAGAN,QAHA,iDAIvBnB,WAAW,CAAC0B,MAJW,EAIFR,MAJE,iDAKvBlB,WAAW,CAAC2B,QALW,EAKAN,QALA,iDAMvBtB,WAAW,CAAC6B,QANW,EAMAX,MANA,iDAOvBlB,WAAW,CAAC8B,aAPW,EAOKT,OAPL,iDAQvBrB,WAAW,CAAC+B,cARW,EAQMX,QARN,iDASvBpB,WAAW,CAACgC,YATW,EASIb,MATJ,iDAUvBnB,WAAW,CAACiC,cAVW,EAUMX,QAVN,kBAAnB","sourcesContent":["export type IPosition = [number, number, number] | [number, number];\nexport type IPath = IPosition[];\nexport enum ShapeType3D {\n CYLINDER = 'cylinder',\n SQUARECOLUMN = 'squareColumn',\n TRIANGLECOLUMN = 'triangleColumn',\n HEXAGONCOLUMN = 'hexagonColumn',\n PENTAGONCOLUMN = 'pentagonColumn',\n}\nexport enum ShapeType2D {\n CIRCLE = 'circle',\n SQUARE = 'square',\n TRIANGLE = 'triangle',\n HEXAGON = 'hexagon',\n PENTAGON = 'pentagon',\n}\n\n/**\n * 生成规则多边形顶点个数\n * @param pointCount 顶点个数 3 => 三角形\n * @param start 顶点起始角度 调整图形的方向\n */\nexport function polygonPath(pointCount: number, start: number = 0): IPath {\n const step = (Math.PI * 2) / pointCount;\n const line = [];\n for (let i = 0; i < pointCount; i++) {\n line.push(step * i + (start * Math.PI) / 12);\n }\n const path: IPath = line.map((t) => {\n const x = Math.sin(t + Math.PI / 4);\n const y = Math.cos(t + Math.PI / 4);\n return [x, y, 0];\n });\n // path.push(path[0]);\n return path;\n}\n\nexport function circle(): IPath {\n return polygonPath(30);\n}\nexport function square(): IPath {\n return polygonPath(4);\n}\nexport function triangle(): IPath {\n return polygonPath(3);\n}\nexport function hexagon(): IPath {\n return polygonPath(6, 1);\n}\nexport function pentagon(): IPath {\n return polygonPath(5);\n}\n\nexport const geometryShape = {\n [ShapeType2D.CIRCLE]: circle,\n [ShapeType2D.HEXAGON]: hexagon,\n [ShapeType2D.TRIANGLE]: triangle,\n [ShapeType2D.SQUARE]: square,\n [ShapeType2D.PENTAGON]: pentagon,\n [ShapeType3D.CYLINDER]: circle,\n [ShapeType3D.HEXAGONCOLUMN]: hexagon,\n [ShapeType3D.TRIANGLECOLUMN]: triangle,\n [ShapeType3D.SQUARECOLUMN]: square,\n [ShapeType3D.PENTAGONCOLUMN]: pentagon,\n};\n"],"file":"Path.js"}
1
+ {"version":3,"sources":["../../../src/core/shape/Path.ts"],"names":["ShapeType3D","ShapeType2D","polygonPath","pointCount","start","step","Math","PI","line","i","push","path","map","t","x","sin","y","cos","circle","square","triangle","hexagon","pentagon","geometryShape","CIRCLE","HEXAGON","TRIANGLE","SQUARE","PENTAGON","CYLINDER","HEXAGONCOLUMN","TRIANGLECOLUMN","SQUARECOLUMN","PENTAGONCOLUMN"],"mappings":";;;;;;;;;;;;;;;;;;;;IAEYA,W;;;WAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,2BAAAA,W;;IAOAC,W;;;WAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,2BAAAA,W;;AAaL,SAASC,WAAT,CAAqBC,UAArB,EAAmE;AAAA,MAA1BC,KAA0B,uEAAV,CAAU;AACxE,MAAMC,IAAI,GAAIC,IAAI,CAACC,EAAL,GAAU,CAAX,GAAgBJ,UAA7B;AACA,MAAMK,IAAI,GAAG,EAAb;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,UAApB,EAAgCM,CAAC,EAAjC,EAAqC;AACnCD,IAAAA,IAAI,CAACE,IAAL,CAAUL,IAAI,GAAGI,CAAP,GAAYL,KAAK,GAAGE,IAAI,CAACC,EAAd,GAAoB,EAAzC;AACD;;AACD,MAAMI,IAAW,GAAGH,IAAI,CAACI,GAAL,CAAS,UAACC,CAAD,EAAO;AAClC,QAAMC,CAAC,GAAGR,IAAI,CAACS,GAAL,CAASF,CAAC,GAAGP,IAAI,CAACC,EAAL,GAAU,CAAvB,CAAV;AACA,QAAMS,CAAC,GAAGV,IAAI,CAACW,GAAL,CAASJ,CAAC,GAAGP,IAAI,CAACC,EAAL,GAAU,CAAvB,CAAV;AACA,WAAO,CAACO,CAAD,EAAIE,CAAJ,EAAO,CAAP,CAAP;AACD,GAJmB,CAApB;AAMA,SAAOL,IAAP;AACD;;AAEM,SAASO,MAAT,GAAyB;AAC9B,SAAOhB,WAAW,CAAC,EAAD,CAAlB;AACD;;AACM,SAASiB,MAAT,GAAyB;AAC9B,SAAOjB,WAAW,CAAC,CAAD,CAAlB;AACD;;AACM,SAASkB,QAAT,GAA2B;AAChC,SAAOlB,WAAW,CAAC,CAAD,CAAlB;AACD;;AACM,SAASmB,OAAT,GAA0B;AAC/B,SAAOnB,WAAW,CAAC,CAAD,EAAI,CAAJ,CAAlB;AACD;;AACM,SAASoB,QAAT,GAA2B;AAChC,SAAOpB,WAAW,CAAC,CAAD,CAAlB;AACD;;AAEM,IAAMqB,aAAa,uEACvBtB,WAAW,CAACuB,MADW,EACFN,MADE,iDAEvBjB,WAAW,CAACwB,OAFW,EAEDJ,OAFC,iDAGvBpB,WAAW,CAACyB,QAHW,EAGAN,QAHA,iDAIvBnB,WAAW,CAAC0B,MAJW,EAIFR,MAJE,iDAKvBlB,WAAW,CAAC2B,QALW,EAKAN,QALA,iDAMvBtB,WAAW,CAAC6B,QANW,EAMAX,MANA,iDAOvBlB,WAAW,CAAC8B,aAPW,EAOKT,OAPL,iDAQvBrB,WAAW,CAAC+B,cARW,EAQMX,QARN,iDASvBpB,WAAW,CAACgC,YATW,EASIb,MATJ,iDAUvBnB,WAAW,CAACiC,cAVW,EAUMX,QAVN,kBAAnB","sourcesContent":["export type IPosition = [number, number, number] | [number, number];\nexport type IPath = IPosition[];\nexport enum ShapeType3D {\n CYLINDER = 'cylinder',\n SQUARECOLUMN = 'squareColumn',\n TRIANGLECOLUMN = 'triangleColumn',\n HEXAGONCOLUMN = 'hexagonColumn',\n PENTAGONCOLUMN = 'pentagonColumn',\n}\nexport enum ShapeType2D {\n CIRCLE = 'circle',\n SQUARE = 'square',\n TRIANGLE = 'triangle',\n HEXAGON = 'hexagon',\n PENTAGON = 'pentagon',\n}\n\n/**\n * 生成规则多边形顶点个数\n * @param pointCount 顶点个数 3 => 三角形\n * @param start 顶点起始角度 调整图形的方向\n */\nexport function polygonPath(pointCount: number, start: number = 0): IPath {\n const step = (Math.PI * 2) / pointCount;\n const line = [];\n for (let i = 0; i < pointCount; i++) {\n line.push(step * i + (start * Math.PI) / 12);\n }\n const path: IPath = line.map((t) => {\n const x = Math.sin(t + Math.PI / 4);\n const y = Math.cos(t + Math.PI / 4);\n return [x, y, 0];\n });\n // path.push(path[0]);\n return path;\n}\n\nexport function circle(): IPath {\n return polygonPath(30);\n}\nexport function square(): IPath {\n return polygonPath(4);\n}\nexport function triangle(): IPath {\n return polygonPath(3);\n}\nexport function hexagon(): IPath {\n return polygonPath(6, 1);\n}\nexport function pentagon(): IPath {\n return polygonPath(5);\n}\n\nexport const geometryShape = {\n [ShapeType2D.CIRCLE]: circle,\n [ShapeType2D.HEXAGON]: hexagon,\n [ShapeType2D.TRIANGLE]: triangle,\n [ShapeType2D.SQUARE]: square,\n [ShapeType2D.PENTAGON]: pentagon,\n [ShapeType3D.CYLINDER]: circle,\n [ShapeType3D.HEXAGONCOLUMN]: hexagon,\n [ShapeType3D.TRIANGLECOLUMN]: triangle,\n [ShapeType3D.SQUARECOLUMN]: square,\n [ShapeType3D.PENTAGONCOLUMN]: pentagon,\n};\n"],"file":"Path.js"}
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = extrudePolygon;
9
- exports.fillPolygon = fillPolygon;
10
9
  exports.extrude_PolygonNormal = extrude_PolygonNormal;
10
+ exports.fillPolygon = fillPolygon;
11
11
 
12
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
13
 
@@ -1,25 +1,25 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.PointFillTriangulation = PointFillTriangulation;
11
10
  exports.GlobelPointFillTriangulation = GlobelPointFillTriangulation;
11
+ exports.HeatmapGridTriangulation = HeatmapGridTriangulation;
12
+ exports.HeatmapTriangulation = HeatmapTriangulation;
13
+ exports.LineArcTriangulation = LineArcTriangulation;
14
+ exports.LineTriangulation = LineTriangulation;
12
15
  exports.PointExtrudeTriangulation = PointExtrudeTriangulation;
16
+ exports.PointFillTriangulation = PointFillTriangulation;
13
17
  exports.PointImageTriangulation = PointImageTriangulation;
14
- exports.LineTriangulation = LineTriangulation;
15
- exports.polygonTriangulation = polygonTriangulation;
16
18
  exports.PolygonExtrudeTriangulation = PolygonExtrudeTriangulation;
17
- exports.HeatmapGridTriangulation = HeatmapGridTriangulation;
18
19
  exports.RasterImageTriangulation = RasterImageTriangulation;
19
- exports.LineArcTriangulation = LineArcTriangulation;
20
- exports.HeatmapTriangulation = HeatmapTriangulation;
21
- exports.earthTriangulation = earthTriangulation;
22
20
  exports.earthOuterTriangulation = earthOuterTriangulation;
21
+ exports.earthTriangulation = earthTriangulation;
22
+ exports.polygonTriangulation = polygonTriangulation;
23
23
 
24
24
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
25
25
 
@@ -41,6 +41,10 @@ var _extrude = _interopRequireWildcard(require("./shape/extrude"));
41
41
 
42
42
  var _Path = require("./shape/Path");
43
43
 
44
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
45
+
46
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
47
+
44
48
  var GeometryCache = {};
45
49
 
46
50
  function PointFillTriangulation(feature) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/triangulation.ts"],"names":["GeometryCache","PointFillTriangulation","feature","coordinates","vertices","indices","size","length","GlobelPointFillTriangulation","xyz","PointExtrudeTriangulation","shape","getGeometry","positions","index","normals","PointImageTriangulation","LineTriangulation","originCoordinates","version","line","ExtrudePolyline","dash","join","path1","Array","isArray","path2","i","item1","item2","extrude_gaode2","path","forEach","item","extrude","linebuffer","complex","polygonTriangulation","flattengeo","earcut","flatten","dimensions","holes","PolygonExtrudeTriangulation","HeatmapGridTriangulation","getHeatmapGeometry","RasterImageTriangulation","indexs","LineArcTriangulation","segmentNumber","segNum","indexArray","push","map","v","HeatmapTriangulation","dir","addDir","dir1","dir2","dir3","needFlat","geometryShape","cylinder","geometry","computeVertexNormals","dim","Float32Array","vA","vB","vC","cb","vec3","create","ab","normal","li","p1","p2","p3","ax","ay","pA","fromValues","bx","by","pB","cx","cy","pC","sub","cross","normalizeNormals","newNormal","normalize","set","checkIsClosed","points","shape3d","circle","indexOf","dirX","dirY","x","y","earthTriangulation","earthmesh","EARTH_RADIUS","segments","EARTH_SEGMENTS","positionsArr","indicesArr","normalArr","earthOuterTriangulation","EARTH_RADIUS_OUTER"],"mappings":"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","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport { aProjectFlat, lngLatToMeters } from '@antv/l7-utils';\nimport earcut from 'earcut';\n// @ts-ignore\nimport { mat4, vec3 } from 'gl-matrix';\nimport {\n EARTH_RADIUS,\n EARTH_RADIUS_OUTER,\n EARTH_SEGMENTS,\n lglt2xyz,\n primitiveSphere,\n} from '../earth/utils';\nimport ExtrudePolyline from '../utils/extrude_polyline';\nimport { calculateCentroid } from '../utils/geo';\nimport extrudePolygon, {\n extrude_PolygonNormal,\n fillPolygon,\n IExtrudeGeomety,\n} from './shape/extrude';\nimport {\n geometryShape,\n IPosition,\n ShapeType2D,\n ShapeType3D,\n} from './shape/Path';\ntype IShape = ShapeType2D & ShapeType3D;\ninterface IGeometryCache {\n [key: string]: IExtrudeGeomety;\n}\nconst GeometryCache: IGeometryCache = {};\n\n/**\n * 计算2D 填充点图顶点\n * @param feature 映射feature\n */\n\nexport function PointFillTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n return {\n vertices: [...coordinates, ...coordinates, ...coordinates, ...coordinates],\n indices: [0, 1, 2, 2, 3, 0],\n size: coordinates.length,\n };\n}\n/**\n * 计算2D 填充点图顶点 (地球模式)\n * @param feature 映射feature\n */\nexport function GlobelPointFillTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n const xyz = lglt2xyz(coordinates as [number, number]);\n return {\n vertices: [...xyz, ...xyz, ...xyz, ...xyz],\n indices: [0, 1, 2, 2, 3, 0],\n size: xyz.length,\n };\n}\n\n/**\n * 计算3D 拉伸点图\n * @param feature 映射feature\n */\nexport function PointExtrudeTriangulation(feature: IEncodeFeature) {\n const { shape } = feature;\n const { positions, index, normals } = getGeometry(\n shape as ShapeType3D,\n false,\n );\n return {\n vertices: positions,\n indices: index,\n normals,\n size: 5,\n };\n}\n\n/**\n * 计算图片标注\n * @param feature 映射feature\n */\nexport function PointImageTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n return {\n vertices: [...coordinates],\n indices: [0],\n size: coordinates.length,\n };\n}\n\n/**\n * 线三角化\n * @param feature 映射feature\n */\nexport function LineTriangulation(feature: IEncodeFeature) {\n const { coordinates, originCoordinates, version } = feature;\n // let path = coordinates as number[][][] | number[][];\n // if (!Array.isArray(path[0][0])) {\n // path = [coordinates] as number[][][];\n // }\n\n const line = new ExtrudePolyline({\n dash: true,\n join: 'bevel',\n });\n\n if (version === 'GAODE2.x') {\n // 处理高德2.0几何体构建\n let path1 = coordinates as number[][][] | number[][]; // 计算位置\n if (!Array.isArray(path1[0][0])) {\n path1 = [coordinates] as number[][][];\n }\n let path2 = originCoordinates as number[][][] | number[][]; // 计算法线\n if (!Array.isArray(path2[0][0])) {\n path2 = [originCoordinates] as number[][][];\n }\n\n for (let i = 0; i < path1.length; i++) {\n // 高德2.0在计算线时,需要使用经纬度计算发现,使用 customCoords.lnglatToCoords 计算的数据来计算顶点的位置\n const item1 = path1[i];\n const item2 = path2[i];\n line.extrude_gaode2(item1 as number[][], item2 as number[][]);\n }\n } else {\n // 处理非高德2.0的几何体构建\n let path = coordinates as number[][][] | number[][];\n if (!Array.isArray(path[0][0])) {\n path = [coordinates] as number[][][];\n }\n path.forEach((item: any) => {\n line.extrude(item as number[][]);\n });\n }\n\n const linebuffer = line.complex;\n return {\n vertices: linebuffer.positions, // [ x,y,z, distance, miter,total ]\n indices: linebuffer.indices,\n normals: linebuffer.normals,\n size: 6,\n };\n}\n\nexport function polygonTriangulation(feature: IEncodeFeature) {\n const { coordinates } = feature;\n const flattengeo = earcut.flatten(coordinates as number[][][]);\n const { vertices, dimensions, holes } = flattengeo;\n return {\n indices: earcut(vertices, holes, dimensions),\n vertices,\n size: dimensions,\n };\n}\n\nexport function PolygonExtrudeTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as IPosition[][];\n const { positions, index, normals } = extrude_PolygonNormal(\n coordinates,\n true,\n );\n return {\n vertices: positions, // [ x, y, z, uv.x,uv.y ]\n indices: index,\n normals,\n size: 5,\n };\n}\n\nexport function HeatmapGridTriangulation(feature: IEncodeFeature) {\n const { shape } = feature;\n const { positions, index } = getHeatmapGeometry(shape as IShape);\n return {\n vertices: positions, // [ x, y, z ] 多边形顶点\n indices: index,\n size: 3,\n };\n}\n\n/**\n * 图片图层顶点构造\n * @param feature 数据\n */\nexport function RasterImageTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as IPosition[];\n // [ x, y, z. uv.x, uv.y]\n const positions: number[] = [\n ...coordinates[0],\n 0,\n 0,\n 1,\n coordinates[1][0],\n coordinates[0][1],\n 0,\n 1,\n 1,\n ...coordinates[1],\n 0,\n 1,\n 0,\n ...coordinates[0],\n 0,\n 0,\n 1,\n ...coordinates[1],\n 0,\n 1,\n 0,\n coordinates[0][0],\n coordinates[1][1],\n 0,\n 0,\n 0,\n ];\n const indexs = [0, 1, 2, 3, 4, 5];\n return {\n vertices: positions,\n indices: indexs,\n size: 5,\n };\n}\n/**\n * 计算3D弧线顶点\n * @param feature 映射数据\n * @param segNum 弧线线段数\n */\nexport function LineArcTriangulation(\n feature: IEncodeFeature,\n segmentNumber?: number,\n) {\n const segNum = segmentNumber ? segmentNumber : 30;\n const coordinates = feature.coordinates as IPosition[];\n const positions = [];\n const indexArray = [];\n for (let i = 0; i < segNum; i++) {\n // 上线两个顶点\n // [ x, y, z, sx,sy, tx,ty]\n positions.push(\n i,\n 1,\n i,\n coordinates[0][0],\n coordinates[0][1],\n coordinates[1][0],\n coordinates[1][1],\n i,\n -1,\n i,\n coordinates[0][0],\n coordinates[0][1],\n coordinates[1][0],\n coordinates[1][1],\n );\n\n if (i !== segNum - 1) {\n indexArray.push(\n ...[0, 1, 2, 1, 3, 2].map((v) => {\n return i * 2 + v;\n }),\n );\n }\n }\n return {\n vertices: positions,\n indices: indexArray,\n size: 7,\n };\n}\n\n/**\n * 构建热力图密度图的顶点\n * @param feature\n * @returns\n */\nexport function HeatmapTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as number[];\n if (coordinates.length === 2) {\n coordinates.push(0);\n }\n const size = feature.size as number;\n const dir = addDir(-1, 1);\n const dir1 = addDir(1, 1);\n const dir2 = addDir(-1, -1);\n const dir3 = addDir(1, -1);\n // [x,y,z, dirx ,diry, weight]\n const positions = [\n ...coordinates,\n ...dir,\n ...coordinates,\n ...dir2,\n ...coordinates,\n ...dir3,\n ...coordinates,\n ...dir1,\n ];\n const indexArray = [0, 1, 2, 3, 0, 2];\n return {\n vertices: positions,\n indices: indexArray,\n size: 5,\n };\n}\n\n/**\n * 点图层3d geomerty\n * @param shape 3D形状\n */\nfunction getGeometry(shape: ShapeType3D, needFlat = false): IExtrudeGeomety {\n if (GeometryCache && GeometryCache[shape]) {\n return GeometryCache[shape];\n }\n const path = geometryShape[shape]\n ? geometryShape[shape]()\n : geometryShape.cylinder();\n const geometry = extrude_PolygonNormal([path], needFlat);\n GeometryCache[shape] = geometry;\n return geometry;\n}\n\nfunction computeVertexNormals(\n positions: number[],\n indexArray: number[],\n dim: number = 3,\n needFlat: boolean = false,\n) {\n const normals = new Float32Array((positions.length / dim) * 3);\n let vA: number;\n let vB: number;\n let vC: number;\n const cb = vec3.create();\n const ab = vec3.create();\n const normal = vec3.create();\n for (let i = 0, li = indexArray.length; i < li; i += 3) {\n vA = indexArray[i + 0] * 3;\n vB = indexArray[i + 1] * 3;\n vC = indexArray[i + 2] * 3;\n let p1 = [positions[vA], positions[vA + 1]];\n let p2 = [positions[vB], positions[vB + 1]];\n let p3 = [positions[vC], positions[vC + 1]];\n if (needFlat) {\n p1 = lngLatToMeters(p1);\n p2 = lngLatToMeters(p2);\n p3 = lngLatToMeters(p3);\n }\n const [ax, ay] = p1;\n const pA = vec3.fromValues(ax, ay, positions[vA + 2]);\n const [bx, by] = p2;\n const pB = vec3.fromValues(bx, by, positions[vB + 2]);\n const [cx, cy] = p3;\n const pC = vec3.fromValues(cx, cy, positions[vC + 2]);\n vec3.sub(cb, pC, pB);\n vec3.sub(ab, pA, pB);\n vec3.cross(normal, cb, ab);\n normals[vA] += cb[0];\n normals[vA + 1] += cb[1];\n normals[vA + 2] += cb[2];\n normals[vB] += cb[0];\n normals[vB + 1] += cb[1];\n normals[vB + 2] += cb[2];\n normals[vC] += cb[0];\n normals[vC + 1] += cb[1];\n normals[vC + 2] += cb[2];\n }\n normalizeNormals(normals);\n return normals;\n}\n\nfunction normalizeNormals(normals: Float32Array) {\n for (let i = 0, li = normals.length; i < li; i += 3) {\n const normal = vec3.fromValues(normals[i], normals[i + 1], normals[i + 2]);\n const newNormal = vec3.create();\n vec3.normalize(newNormal, normal);\n normals.set(newNormal, i);\n }\n}\n\nfunction checkIsClosed(points: number[][][]) {\n const p1 = points[0][0];\n const p2 = points[0][points[0].length - 1];\n return p1[0] === p2[0] && p1[1] === p2[1];\n}\n\nfunction getHeatmapGeometry(shape: ShapeType2D | ShapeType3D): IExtrudeGeomety {\n const shape3d = [\n 'cylinder',\n 'triangleColumn',\n 'hexagonColumn',\n 'squareColumn',\n ];\n const path = geometryShape[shape]\n ? geometryShape[shape]()\n : geometryShape.circle();\n const geometry =\n shape3d.indexOf(shape) === -1\n ? fillPolygon([path])\n : extrudePolygon([path]);\n // const geometry = fillPolygon([path]);\n return geometry;\n}\n// 热力图计算范围\nfunction addDir(dirX: number, dirY: number) {\n const x = (dirX + 1) / 2;\n const y = (dirY + 1) / 2;\n return [x, y];\n}\n\n/**\n * 构建地球三角网格\n * @returns\n */\nexport function earthTriangulation() {\n const earthmesh = primitiveSphere(EARTH_RADIUS, { segments: EARTH_SEGMENTS });\n const { positionsArr, indicesArr, normalArr } = earthmesh;\n return {\n vertices: positionsArr,\n indices: indicesArr,\n size: 5,\n normals: normalArr,\n };\n}\n\nexport function earthOuterTriangulation() {\n const earthmesh = primitiveSphere(EARTH_RADIUS + EARTH_RADIUS_OUTER, {\n segments: EARTH_SEGMENTS,\n });\n const { positionsArr, indicesArr, normalArr } = earthmesh;\n return {\n vertices: positionsArr,\n indices: indicesArr,\n size: 5,\n normals: normalArr,\n };\n}\n"],"file":"triangulation.js"}
1
+ {"version":3,"sources":["../../src/core/triangulation.ts"],"names":["GeometryCache","PointFillTriangulation","feature","coordinates","vertices","indices","size","length","GlobelPointFillTriangulation","xyz","PointExtrudeTriangulation","shape","getGeometry","positions","index","normals","PointImageTriangulation","LineTriangulation","originCoordinates","version","line","ExtrudePolyline","dash","join","path1","Array","isArray","path2","i","item1","item2","extrude_gaode2","path","forEach","item","extrude","linebuffer","complex","polygonTriangulation","flattengeo","earcut","flatten","dimensions","holes","PolygonExtrudeTriangulation","HeatmapGridTriangulation","getHeatmapGeometry","RasterImageTriangulation","indexs","LineArcTriangulation","segmentNumber","segNum","indexArray","push","map","v","HeatmapTriangulation","dir","addDir","dir1","dir2","dir3","needFlat","geometryShape","cylinder","geometry","computeVertexNormals","dim","Float32Array","vA","vB","vC","cb","vec3","create","ab","normal","li","p1","p2","p3","ax","ay","pA","fromValues","bx","by","pB","cx","cy","pC","sub","cross","normalizeNormals","newNormal","normalize","set","checkIsClosed","points","shape3d","circle","indexOf","dirX","dirY","x","y","earthTriangulation","earthmesh","EARTH_RADIUS","segments","EARTH_SEGMENTS","positionsArr","indicesArr","normalArr","earthOuterTriangulation","EARTH_RADIUS_OUTER"],"mappings":"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","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport { aProjectFlat, lngLatToMeters } from '@antv/l7-utils';\nimport earcut from 'earcut';\n// @ts-ignore\nimport { mat4, vec3 } from 'gl-matrix';\nimport {\n EARTH_RADIUS,\n EARTH_RADIUS_OUTER,\n EARTH_SEGMENTS,\n lglt2xyz,\n primitiveSphere,\n} from '../earth/utils';\nimport ExtrudePolyline from '../utils/extrude_polyline';\nimport { calculateCentroid } from '../utils/geo';\nimport extrudePolygon, {\n extrude_PolygonNormal,\n fillPolygon,\n IExtrudeGeomety,\n} from './shape/extrude';\nimport {\n geometryShape,\n IPosition,\n ShapeType2D,\n ShapeType3D,\n} from './shape/Path';\ntype IShape = ShapeType2D & ShapeType3D;\ninterface IGeometryCache {\n [key: string]: IExtrudeGeomety;\n}\nconst GeometryCache: IGeometryCache = {};\n\n/**\n * 计算2D 填充点图顶点\n * @param feature 映射feature\n */\n\nexport function PointFillTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n return {\n vertices: [...coordinates, ...coordinates, ...coordinates, ...coordinates],\n indices: [0, 1, 2, 2, 3, 0],\n size: coordinates.length,\n };\n}\n/**\n * 计算2D 填充点图顶点 (地球模式)\n * @param feature 映射feature\n */\nexport function GlobelPointFillTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n const xyz = lglt2xyz(coordinates as [number, number]);\n return {\n vertices: [...xyz, ...xyz, ...xyz, ...xyz],\n indices: [0, 1, 2, 2, 3, 0],\n size: xyz.length,\n };\n}\n\n/**\n * 计算3D 拉伸点图\n * @param feature 映射feature\n */\nexport function PointExtrudeTriangulation(feature: IEncodeFeature) {\n const { shape } = feature;\n const { positions, index, normals } = getGeometry(\n shape as ShapeType3D,\n false,\n );\n return {\n vertices: positions,\n indices: index,\n normals,\n size: 5,\n };\n}\n\n/**\n * 计算图片标注\n * @param feature 映射feature\n */\nexport function PointImageTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n return {\n vertices: [...coordinates],\n indices: [0],\n size: coordinates.length,\n };\n}\n\n/**\n * 线三角化\n * @param feature 映射feature\n */\nexport function LineTriangulation(feature: IEncodeFeature) {\n const { coordinates, originCoordinates, version } = feature;\n // let path = coordinates as number[][][] | number[][];\n // if (!Array.isArray(path[0][0])) {\n // path = [coordinates] as number[][][];\n // }\n\n const line = new ExtrudePolyline({\n dash: true,\n join: 'bevel',\n });\n\n if (version === 'GAODE2.x') {\n // 处理高德2.0几何体构建\n let path1 = coordinates as number[][][] | number[][]; // 计算位置\n if (!Array.isArray(path1[0][0])) {\n path1 = [coordinates] as number[][][];\n }\n let path2 = originCoordinates as number[][][] | number[][]; // 计算法线\n if (!Array.isArray(path2[0][0])) {\n path2 = [originCoordinates] as number[][][];\n }\n\n for (let i = 0; i < path1.length; i++) {\n // 高德2.0在计算线时,需要使用经纬度计算发现,使用 customCoords.lnglatToCoords 计算的数据来计算顶点的位置\n const item1 = path1[i];\n const item2 = path2[i];\n line.extrude_gaode2(item1 as number[][], item2 as number[][]);\n }\n } else {\n // 处理非高德2.0的几何体构建\n let path = coordinates as number[][][] | number[][];\n if (!Array.isArray(path[0][0])) {\n path = [coordinates] as number[][][];\n }\n path.forEach((item: any) => {\n line.extrude(item as number[][]);\n });\n }\n\n const linebuffer = line.complex;\n return {\n vertices: linebuffer.positions, // [ x,y,z, distance, miter,total ]\n indices: linebuffer.indices,\n normals: linebuffer.normals,\n size: 6,\n };\n}\n\nexport function polygonTriangulation(feature: IEncodeFeature) {\n const { coordinates } = feature;\n const flattengeo = earcut.flatten(coordinates as number[][][]);\n const { vertices, dimensions, holes } = flattengeo;\n return {\n indices: earcut(vertices, holes, dimensions),\n vertices,\n size: dimensions,\n };\n}\n\nexport function PolygonExtrudeTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as IPosition[][];\n const { positions, index, normals } = extrude_PolygonNormal(\n coordinates,\n true,\n );\n return {\n vertices: positions, // [ x, y, z, uv.x,uv.y ]\n indices: index,\n normals,\n size: 5,\n };\n}\n\nexport function HeatmapGridTriangulation(feature: IEncodeFeature) {\n const { shape } = feature;\n const { positions, index } = getHeatmapGeometry(shape as IShape);\n return {\n vertices: positions, // [ x, y, z ] 多边形顶点\n indices: index,\n size: 3,\n };\n}\n\n/**\n * 图片图层顶点构造\n * @param feature 数据\n */\nexport function RasterImageTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as IPosition[];\n // [ x, y, z. uv.x, uv.y]\n const positions: number[] = [\n ...coordinates[0],\n 0,\n 0,\n 1,\n coordinates[1][0],\n coordinates[0][1],\n 0,\n 1,\n 1,\n ...coordinates[1],\n 0,\n 1,\n 0,\n ...coordinates[0],\n 0,\n 0,\n 1,\n ...coordinates[1],\n 0,\n 1,\n 0,\n coordinates[0][0],\n coordinates[1][1],\n 0,\n 0,\n 0,\n ];\n const indexs = [0, 1, 2, 3, 4, 5];\n return {\n vertices: positions,\n indices: indexs,\n size: 5,\n };\n}\n/**\n * 计算3D弧线顶点\n * @param feature 映射数据\n * @param segNum 弧线线段数\n */\nexport function LineArcTriangulation(\n feature: IEncodeFeature,\n segmentNumber?: number,\n) {\n const segNum = segmentNumber ? segmentNumber : 30;\n const coordinates = feature.coordinates as IPosition[];\n const positions = [];\n const indexArray = [];\n for (let i = 0; i < segNum; i++) {\n // 上线两个顶点\n // [ x, y, z, sx,sy, tx,ty]\n positions.push(\n i,\n 1,\n i,\n coordinates[0][0],\n coordinates[0][1],\n coordinates[1][0],\n coordinates[1][1],\n i,\n -1,\n i,\n coordinates[0][0],\n coordinates[0][1],\n coordinates[1][0],\n coordinates[1][1],\n );\n\n if (i !== segNum - 1) {\n indexArray.push(\n ...[0, 1, 2, 1, 3, 2].map((v) => {\n return i * 2 + v;\n }),\n );\n }\n }\n return {\n vertices: positions,\n indices: indexArray,\n size: 7,\n };\n}\n\n/**\n * 构建热力图密度图的顶点\n * @param feature\n * @returns\n */\nexport function HeatmapTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as number[];\n if (coordinates.length === 2) {\n coordinates.push(0);\n }\n const size = feature.size as number;\n const dir = addDir(-1, 1);\n const dir1 = addDir(1, 1);\n const dir2 = addDir(-1, -1);\n const dir3 = addDir(1, -1);\n // [x,y,z, dirx ,diry, weight]\n const positions = [\n ...coordinates,\n ...dir,\n ...coordinates,\n ...dir2,\n ...coordinates,\n ...dir3,\n ...coordinates,\n ...dir1,\n ];\n const indexArray = [0, 1, 2, 3, 0, 2];\n return {\n vertices: positions,\n indices: indexArray,\n size: 5,\n };\n}\n\n/**\n * 点图层3d geomerty\n * @param shape 3D形状\n */\nfunction getGeometry(shape: ShapeType3D, needFlat = false): IExtrudeGeomety {\n if (GeometryCache && GeometryCache[shape]) {\n return GeometryCache[shape];\n }\n const path = geometryShape[shape]\n ? geometryShape[shape]()\n : geometryShape.cylinder();\n const geometry = extrude_PolygonNormal([path], needFlat);\n GeometryCache[shape] = geometry;\n return geometry;\n}\n\nfunction computeVertexNormals(\n positions: number[],\n indexArray: number[],\n dim: number = 3,\n needFlat: boolean = false,\n) {\n const normals = new Float32Array((positions.length / dim) * 3);\n let vA: number;\n let vB: number;\n let vC: number;\n const cb = vec3.create();\n const ab = vec3.create();\n const normal = vec3.create();\n for (let i = 0, li = indexArray.length; i < li; i += 3) {\n vA = indexArray[i + 0] * 3;\n vB = indexArray[i + 1] * 3;\n vC = indexArray[i + 2] * 3;\n let p1 = [positions[vA], positions[vA + 1]];\n let p2 = [positions[vB], positions[vB + 1]];\n let p3 = [positions[vC], positions[vC + 1]];\n if (needFlat) {\n p1 = lngLatToMeters(p1);\n p2 = lngLatToMeters(p2);\n p3 = lngLatToMeters(p3);\n }\n const [ax, ay] = p1;\n const pA = vec3.fromValues(ax, ay, positions[vA + 2]);\n const [bx, by] = p2;\n const pB = vec3.fromValues(bx, by, positions[vB + 2]);\n const [cx, cy] = p3;\n const pC = vec3.fromValues(cx, cy, positions[vC + 2]);\n vec3.sub(cb, pC, pB);\n vec3.sub(ab, pA, pB);\n vec3.cross(normal, cb, ab);\n normals[vA] += cb[0];\n normals[vA + 1] += cb[1];\n normals[vA + 2] += cb[2];\n normals[vB] += cb[0];\n normals[vB + 1] += cb[1];\n normals[vB + 2] += cb[2];\n normals[vC] += cb[0];\n normals[vC + 1] += cb[1];\n normals[vC + 2] += cb[2];\n }\n normalizeNormals(normals);\n return normals;\n}\n\nfunction normalizeNormals(normals: Float32Array) {\n for (let i = 0, li = normals.length; i < li; i += 3) {\n const normal = vec3.fromValues(normals[i], normals[i + 1], normals[i + 2]);\n const newNormal = vec3.create();\n vec3.normalize(newNormal, normal);\n normals.set(newNormal, i);\n }\n}\n\nfunction checkIsClosed(points: number[][][]) {\n const p1 = points[0][0];\n const p2 = points[0][points[0].length - 1];\n return p1[0] === p2[0] && p1[1] === p2[1];\n}\n\nfunction getHeatmapGeometry(shape: ShapeType2D | ShapeType3D): IExtrudeGeomety {\n const shape3d = [\n 'cylinder',\n 'triangleColumn',\n 'hexagonColumn',\n 'squareColumn',\n ];\n const path = geometryShape[shape]\n ? geometryShape[shape]()\n : geometryShape.circle();\n const geometry =\n shape3d.indexOf(shape) === -1\n ? fillPolygon([path])\n : extrudePolygon([path]);\n // const geometry = fillPolygon([path]);\n return geometry;\n}\n// 热力图计算范围\nfunction addDir(dirX: number, dirY: number) {\n const x = (dirX + 1) / 2;\n const y = (dirY + 1) / 2;\n return [x, y];\n}\n\n/**\n * 构建地球三角网格\n * @returns\n */\nexport function earthTriangulation() {\n const earthmesh = primitiveSphere(EARTH_RADIUS, { segments: EARTH_SEGMENTS });\n const { positionsArr, indicesArr, normalArr } = earthmesh;\n return {\n vertices: positionsArr,\n indices: indicesArr,\n size: 5,\n normals: normalArr,\n };\n}\n\nexport function earthOuterTriangulation() {\n const earthmesh = primitiveSphere(EARTH_RADIUS + EARTH_RADIUS_OUTER, {\n segments: EARTH_SEGMENTS,\n });\n const { positionsArr, indicesArr, normalArr } = earthmesh;\n return {\n vertices: positionsArr,\n indices: indicesArr,\n size: 5,\n normals: normalArr,\n };\n}\n"],"file":"triangulation.js"}
@@ -5,9 +5,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.EARTH_SEGMENTS = exports.EARTH_RADIUS_OUTER = exports.EARTH_RADIUS = void 0;
8
9
  exports.lglt2xyz = lglt2xyz;
9
10
  exports.primitiveSphere = primitiveSphere;
10
- exports.EARTH_RADIUS_OUTER = exports.EARTH_SEGMENTS = exports.EARTH_RADIUS = void 0;
11
11
 
12
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
13
 
@@ -41,7 +41,7 @@ var _triangulation2 = require("../triangulation");
41
41
 
42
42
  var _dec, _class;
43
43
 
44
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
44
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
45
45
 
46
46
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
47
47
 
package/lib/index.js CHANGED
@@ -5,16 +5,22 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ Object.defineProperty(exports, "BaseLayer", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _BaseLayer.default;
12
+ }
13
+ });
8
14
  Object.defineProperty(exports, "CityBuildingLayer", {
9
15
  enumerable: true,
10
16
  get: function get() {
11
17
  return _building.default;
12
18
  }
13
19
  });
14
- Object.defineProperty(exports, "BaseLayer", {
20
+ Object.defineProperty(exports, "EarthLayer", {
15
21
  enumerable: true,
16
22
  get: function get() {
17
- return _BaseLayer.default;
23
+ return _earth.default;
18
24
  }
19
25
  });
20
26
  Object.defineProperty(exports, "HeatmapLayer", {
@@ -59,12 +65,6 @@ Object.defineProperty(exports, "RasterLayer", {
59
65
  return _raster.default;
60
66
  }
61
67
  });
62
- Object.defineProperty(exports, "EarthLayer", {
63
- enumerable: true,
64
- get: function get() {
65
- return _earth.default;
66
- }
67
- });
68
68
 
69
69
  var _l7Core = require("@antv/l7-core");
70
70
 
@@ -31,7 +31,7 @@ require("reflect-metadata");
31
31
 
32
32
  var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3;
33
33
 
34
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
34
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
35
35
 
36
36
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
37
37
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
6
 
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
@@ -25,6 +25,10 @@ require("reflect-metadata");
25
25
 
26
26
  var _dec, _class;
27
27
 
28
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
+
30
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
+
28
32
  var DataSourcePlugin = (_dec = (0, _inversify.injectable)(), _dec(_class = function () {
29
33
  function DataSourcePlugin() {
30
34
  (0, _classCallCheck2.default)(this, DataSourcePlugin);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/DataSourcePlugin.ts"],"names":["DataSourcePlugin","layer","mapService","getContainer","get","TYPES","IMapService","hooks","init","tap","source","getSource","sourceOption","data","DEFAULT_DATA","options","DEFAULT_PARSER","setSource","Source","updateClusterData","beforeRenderData","neeUpdateCluster","dataSourceNeedUpdate","dataState","cluster","clusterOptions","zoom","maxZoom","newZoom","getZoom","Math","abs","floor"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AAOA;;AACA;;AACA;;;;IAGqBA,gB,WADpB,4B;;;;;;;;WAGC,eAAaC,KAAb,EAA4B;AAAA;;AAC1B,WAAKC,UAAL,GAAkBD,KAAK,CAACE,YAAN,GAAqBC,GAArB,CAAsCC,cAAMC,WAA5C,CAAlB;AACAL,MAAAA,KAAK,CAACM,KAAN,CAAYC,IAAZ,CAAiBC,GAAjB,CAAqB,kBAArB,EAAyC,YAAM;AAC7C,YAAMC,MAAM,GAAGT,KAAK,CAACU,SAAN,EAAf;;AACA,YAAI,CAACD,MAAL,EAAa;AAEX,qBAA0BT,KAAK,CAACW,YAAN,IAAsB;AAC9CC,YAAAA,IAAI,EAAEC,sBADwC;AAE9CC,YAAAA,OAAO,EAAEC;AAFqC,WAAhD;AAAA,cAAQH,IAAR,QAAQA,IAAR;AAAA,cAAcE,OAAd,QAAcA,OAAd;;AAIAd,UAAAA,KAAK,CAACgB,SAAN,CAAgB,IAAIC,iBAAJ,CAAWL,IAAX,EAAiBE,OAAjB,CAAhB;AACD;;AAED,QAAA,KAAI,CAACI,iBAAL,CAAuBlB,KAAvB;AACD,OAZD;AAeAA,MAAAA,KAAK,CAACM,KAAN,CAAYa,gBAAZ,CAA6BX,GAA7B,CAAiC,kBAAjC,EAAqD,YAAM;AACzD,YAAMY,gBAAgB,GAAG,KAAI,CAACF,iBAAL,CAAuBlB,KAAvB,CAAzB;;AACA,YAAMqB,oBAAoB,GAAGrB,KAAK,CAACsB,SAAN,CAAgBD,oBAA7C;AACArB,QAAAA,KAAK,CAACsB,SAAN,CAAgBD,oBAAhB,GAAuC,KAAvC;AACA,eAAOD,gBAAgB,IAAIC,oBAA3B;AACD,OALD;AAMD;;;WAED,2BAA0BrB,KAA1B,EAAkD;AAChD,UAAMS,MAAM,GAAGT,KAAK,CAACU,SAAN,EAAf;AACA,UAAMa,OAAO,GAAGd,MAAM,CAACc,OAAvB;AACA,kCAAmCd,MAAM,CAACe,cAA1C;AAAA,yDAAQC,IAAR;AAAA,UAAQA,IAAR,uCAAe,CAAf;AAAA,yDAAkBC,OAAlB;AAAA,UAAkBA,OAAlB,uCAA4B,EAA5B;AACA,UAAMC,OAAO,GAAG,KAAK1B,UAAL,CAAgB2B,OAAhB,KAA4B,CAA5C;AACA,UAAMP,oBAAoB,GAAGrB,KAAK,CAACsB,SAAN,CAAgBD,oBAA7C;;AAEA,UACEE,OAAO,KACNF,oBAAoB,IAAIQ,IAAI,CAACC,GAAL,CAASL,IAAI,GAAGE,OAAhB,IAA2B,CAD7C,CAAP,IAEAD,OAAO,GAAGD,IAHZ,EAIE;AACAhB,QAAAA,MAAM,CAACS,iBAAP,CAAyBW,IAAI,CAACE,KAAL,CAAWJ,OAAX,CAAzB;AACA,eAAO,IAAP;AACD;;AACD,aAAO,KAAP;AACD","sourcesContent":["import {\n ILayer,\n ILayerPlugin,\n ILngLat,\n IMapService,\n TYPES,\n} from '@antv/l7-core';\nimport Source, { DEFAULT_DATA, DEFAULT_PARSER } from '@antv/l7-source';\nimport { injectable } from 'inversify';\nimport 'reflect-metadata';\n\n@injectable()\nexport default class DataSourcePlugin implements ILayerPlugin {\n protected mapService: IMapService;\n public apply(layer: ILayer) {\n this.mapService = layer.getContainer().get<IMapService>(TYPES.IMapService);\n layer.hooks.init.tap('DataSourcePlugin', () => {\n const source = layer.getSource();\n if (!source) {\n // TODO: 允许用户不使用 layer 的 source 方法,在这里传入一个默认的替换的默认数据\n const { data, options } = layer.sourceOption || {\n data: DEFAULT_DATA,\n options: DEFAULT_PARSER,\n };\n layer.setSource(new Source(data, options));\n }\n\n this.updateClusterData(layer);\n });\n\n // 检测数据是否需要更新\n layer.hooks.beforeRenderData.tap('DataSourcePlugin', () => {\n const neeUpdateCluster = this.updateClusterData(layer);\n const dataSourceNeedUpdate = layer.dataState.dataSourceNeedUpdate;\n layer.dataState.dataSourceNeedUpdate = false;\n return neeUpdateCluster || dataSourceNeedUpdate;\n });\n }\n\n private updateClusterData(layer: ILayer): boolean {\n const source = layer.getSource();\n const cluster = source.cluster;\n const { zoom = 0, maxZoom = 16 } = source.clusterOptions;\n const newZoom = this.mapService.getZoom() - 1;\n const dataSourceNeedUpdate = layer.dataState.dataSourceNeedUpdate;\n // 如果 dataSource 有更新,跳过 zoom 的判断,直接更新一次\n if (\n cluster &&\n (dataSourceNeedUpdate || Math.abs(zoom - newZoom) > 1) &&\n maxZoom > zoom\n ) {\n source.updateClusterData(Math.floor(newZoom));\n return true;\n }\n return false;\n }\n}\n"],"file":"DataSourcePlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/DataSourcePlugin.ts"],"names":["DataSourcePlugin","layer","mapService","getContainer","get","TYPES","IMapService","hooks","init","tap","source","getSource","sourceOption","data","DEFAULT_DATA","options","DEFAULT_PARSER","setSource","Source","updateClusterData","beforeRenderData","neeUpdateCluster","dataSourceNeedUpdate","dataState","cluster","clusterOptions","zoom","maxZoom","newZoom","getZoom","Math","abs","floor"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AAOA;;AACA;;AACA;;;;;;;;IAGqBA,gB,WADpB,4B;;;;;;;;WAGC,eAAaC,KAAb,EAA4B;AAAA;;AAC1B,WAAKC,UAAL,GAAkBD,KAAK,CAACE,YAAN,GAAqBC,GAArB,CAAsCC,cAAMC,WAA5C,CAAlB;AACAL,MAAAA,KAAK,CAACM,KAAN,CAAYC,IAAZ,CAAiBC,GAAjB,CAAqB,kBAArB,EAAyC,YAAM;AAC7C,YAAMC,MAAM,GAAGT,KAAK,CAACU,SAAN,EAAf;;AACA,YAAI,CAACD,MAAL,EAAa;AAEX,qBAA0BT,KAAK,CAACW,YAAN,IAAsB;AAC9CC,YAAAA,IAAI,EAAEC,sBADwC;AAE9CC,YAAAA,OAAO,EAAEC;AAFqC,WAAhD;AAAA,cAAQH,IAAR,QAAQA,IAAR;AAAA,cAAcE,OAAd,QAAcA,OAAd;;AAIAd,UAAAA,KAAK,CAACgB,SAAN,CAAgB,IAAIC,iBAAJ,CAAWL,IAAX,EAAiBE,OAAjB,CAAhB;AACD;;AAED,QAAA,KAAI,CAACI,iBAAL,CAAuBlB,KAAvB;AACD,OAZD;AAeAA,MAAAA,KAAK,CAACM,KAAN,CAAYa,gBAAZ,CAA6BX,GAA7B,CAAiC,kBAAjC,EAAqD,YAAM;AACzD,YAAMY,gBAAgB,GAAG,KAAI,CAACF,iBAAL,CAAuBlB,KAAvB,CAAzB;;AACA,YAAMqB,oBAAoB,GAAGrB,KAAK,CAACsB,SAAN,CAAgBD,oBAA7C;AACArB,QAAAA,KAAK,CAACsB,SAAN,CAAgBD,oBAAhB,GAAuC,KAAvC;AACA,eAAOD,gBAAgB,IAAIC,oBAA3B;AACD,OALD;AAMD;;;WAED,2BAA0BrB,KAA1B,EAAkD;AAChD,UAAMS,MAAM,GAAGT,KAAK,CAACU,SAAN,EAAf;AACA,UAAMa,OAAO,GAAGd,MAAM,CAACc,OAAvB;AACA,kCAAmCd,MAAM,CAACe,cAA1C;AAAA,yDAAQC,IAAR;AAAA,UAAQA,IAAR,uCAAe,CAAf;AAAA,yDAAkBC,OAAlB;AAAA,UAAkBA,OAAlB,uCAA4B,EAA5B;AACA,UAAMC,OAAO,GAAG,KAAK1B,UAAL,CAAgB2B,OAAhB,KAA4B,CAA5C;AACA,UAAMP,oBAAoB,GAAGrB,KAAK,CAACsB,SAAN,CAAgBD,oBAA7C;;AAEA,UACEE,OAAO,KACNF,oBAAoB,IAAIQ,IAAI,CAACC,GAAL,CAASL,IAAI,GAAGE,OAAhB,IAA2B,CAD7C,CAAP,IAEAD,OAAO,GAAGD,IAHZ,EAIE;AACAhB,QAAAA,MAAM,CAACS,iBAAP,CAAyBW,IAAI,CAACE,KAAL,CAAWJ,OAAX,CAAzB;AACA,eAAO,IAAP;AACD;;AACD,aAAO,KAAP;AACD","sourcesContent":["import {\n ILayer,\n ILayerPlugin,\n ILngLat,\n IMapService,\n TYPES,\n} from '@antv/l7-core';\nimport Source, { DEFAULT_DATA, DEFAULT_PARSER } from '@antv/l7-source';\nimport { injectable } from 'inversify';\nimport 'reflect-metadata';\n\n@injectable()\nexport default class DataSourcePlugin implements ILayerPlugin {\n protected mapService: IMapService;\n public apply(layer: ILayer) {\n this.mapService = layer.getContainer().get<IMapService>(TYPES.IMapService);\n layer.hooks.init.tap('DataSourcePlugin', () => {\n const source = layer.getSource();\n if (!source) {\n // TODO: 允许用户不使用 layer 的 source 方法,在这里传入一个默认的替换的默认数据\n const { data, options } = layer.sourceOption || {\n data: DEFAULT_DATA,\n options: DEFAULT_PARSER,\n };\n layer.setSource(new Source(data, options));\n }\n\n this.updateClusterData(layer);\n });\n\n // 检测数据是否需要更新\n layer.hooks.beforeRenderData.tap('DataSourcePlugin', () => {\n const neeUpdateCluster = this.updateClusterData(layer);\n const dataSourceNeedUpdate = layer.dataState.dataSourceNeedUpdate;\n layer.dataState.dataSourceNeedUpdate = false;\n return neeUpdateCluster || dataSourceNeedUpdate;\n });\n }\n\n private updateClusterData(layer: ILayer): boolean {\n const source = layer.getSource();\n const cluster = source.cluster;\n const { zoom = 0, maxZoom = 16 } = source.clusterOptions;\n const newZoom = this.mapService.getZoom() - 1;\n const dataSourceNeedUpdate = layer.dataState.dataSourceNeedUpdate;\n // 如果 dataSource 有更新,跳过 zoom 的判断,直接更新一次\n if (\n cluster &&\n (dataSourceNeedUpdate || Math.abs(zoom - newZoom) > 1) &&\n maxZoom > zoom\n ) {\n source.updateClusterData(Math.floor(newZoom));\n return true;\n }\n return false;\n }\n}\n"],"file":"DataSourcePlugin.js"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
6
 
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
@@ -39,6 +39,10 @@ require("reflect-metadata");
39
39
 
40
40
  var _scaleMap, _dec, _dec2, _class, _class2, _descriptor;
41
41
 
42
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
43
+
44
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
45
+
42
46
  var dateRegex = /^(?:(?!0000)[0-9]{4}([-/.]+)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]?)0?2\2(?:29))(\s+([01]|([01][0-9]|2[0-3])):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]))?$/;
43
47
  var scaleMap = (_scaleMap = {}, (0, _defineProperty2.default)(_scaleMap, _l7Core.ScaleTypes.LINEAR, d3.scaleLinear), (0, _defineProperty2.default)(_scaleMap, _l7Core.ScaleTypes.POWER, d3.scalePow), (0, _defineProperty2.default)(_scaleMap, _l7Core.ScaleTypes.LOG, d3.scaleLog), (0, _defineProperty2.default)(_scaleMap, _l7Core.ScaleTypes.IDENTITY, d3.scaleIdentity), (0, _defineProperty2.default)(_scaleMap, _l7Core.ScaleTypes.TIME, d3.scaleTime), (0, _defineProperty2.default)(_scaleMap, _l7Core.ScaleTypes.QUANTILE, d3.scaleQuantile), (0, _defineProperty2.default)(_scaleMap, _l7Core.ScaleTypes.QUANTIZE, d3.scaleQuantize), (0, _defineProperty2.default)(_scaleMap, _l7Core.ScaleTypes.THRESHOLD, d3.scaleThreshold), (0, _defineProperty2.default)(_scaleMap, _l7Core.ScaleTypes.CAT, d3.scaleOrdinal), _scaleMap);
44
48
  var FeatureScalePlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inversify.inject)(_l7Core.TYPES.IGlobalConfigService), _dec(_class = (_class2 = function () {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/FeatureScalePlugin.ts"],"names":["dateRegex","scaleMap","ScaleTypes","LINEAR","d3","scaleLinear","POWER","scalePow","LOG","scaleLog","IDENTITY","scaleIdentity","TIME","scaleTime","QUANTILE","scaleQuantile","QUANTIZE","scaleQuantize","THRESHOLD","scaleThreshold","CAT","scaleOrdinal","FeatureScalePlugin","TYPES","IGlobalConfigService","layer","styleAttributeService","hooks","init","tap","scaleOptions","getScaleOptions","attributes","getLayerStyleAttributes","dataArray","getSource","data","length","caculateScalesForAttributes","beforeRenderData","layerModelNeedUpdate","beforeRender","attributesToRescale","filter","attribute","needRescale","n","isNaN","parseFloat","isFinite","scaleCache","forEach","scale","attributeScale","type","name","names","parseFields","field","scales","push","getOrCreateScale","some","StyleScaleType","VARIABLE","callback","values","option","tick","ticks","domain","range","CONSTANT","defaultValues","map","index","scalers","func","scalekey","join","styleScale","createScale","Array","isArray","split","scaleOption","undefined","createDefaultScale","firstValue","find","d","isNumber","getDefaultType","cfg","createDefaultScaleConfig","Object","assign","test","item"],"mappings":"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","sourcesContent":["import {\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n IScale,\n IScaleOptions,\n IStyleAttribute,\n IStyleAttributeService,\n IStyleScale,\n ScaleTypeName,\n ScaleTypes,\n StyleScaleType,\n TYPES,\n} from '@antv/l7-core';\nimport { IParseDataItem } from '@antv/l7-source';\nimport { extent, ticks } from 'd3-array';\nimport * as d3 from 'd3-scale';\nimport { inject, injectable } from 'inversify';\nimport { isNil, isString, uniq } from 'lodash';\nimport 'reflect-metadata';\n\nconst dateRegex = /^(?:(?!0000)[0-9]{4}([-/.]+)(?:(?:0?[1-9]|1[0-2])\\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\\1(?:29|30)|(?:0?[13578]|1[02])\\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]?)0?2\\2(?:29))(\\s+([01]|([01][0-9]|2[0-3])):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]))?$/;\n\nconst scaleMap = {\n [ScaleTypes.LINEAR]: d3.scaleLinear,\n [ScaleTypes.POWER]: d3.scalePow,\n [ScaleTypes.LOG]: d3.scaleLog,\n [ScaleTypes.IDENTITY]: d3.scaleIdentity,\n [ScaleTypes.TIME]: d3.scaleTime,\n [ScaleTypes.QUANTILE]: d3.scaleQuantile,\n [ScaleTypes.QUANTIZE]: d3.scaleQuantize,\n [ScaleTypes.THRESHOLD]: d3.scaleThreshold,\n [ScaleTypes.CAT]: d3.scaleOrdinal,\n};\n\n/**\n * 根据 Source 原始数据为指定字段创建 Scale,保存在 StyleAttribute 上,供下游插件使用\n */\n@injectable()\nexport default class FeatureScalePlugin implements ILayerPlugin {\n @inject(TYPES.IGlobalConfigService)\n private readonly configService: IGlobalConfigService;\n // key = field_attribute name\n private scaleCache: {\n [field: string]: IStyleScale;\n } = {};\n\n private scaleOptions: IScaleOptions = {};\n\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('FeatureScalePlugin', () => {\n this.scaleOptions = layer.getScaleOptions();\n const attributes = styleAttributeService.getLayerStyleAttributes();\n const { dataArray } = layer.getSource().data;\n if (dataArray.length === 0) {\n return;\n }\n this.caculateScalesForAttributes(attributes || [], dataArray);\n });\n\n // 检测数据是否需要更新\n layer.hooks.beforeRenderData.tap('FeatureScalePlugin', () => {\n this.scaleOptions = layer.getScaleOptions();\n const attributes = styleAttributeService.getLayerStyleAttributes();\n const { dataArray } = layer.getSource().data;\n // if (dataArray.length === 0) {\n // return;\n // }\n this.caculateScalesForAttributes(attributes || [], dataArray);\n layer.layerModelNeedUpdate = true;\n return true;\n });\n\n layer.hooks.beforeRender.tap('FeatureScalePlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n this.scaleOptions = layer.getScaleOptions();\n const attributes = styleAttributeService.getLayerStyleAttributes();\n if (attributes) {\n const { dataArray } = layer.getSource().data;\n if (dataArray.length === 0) {\n return;\n }\n const attributesToRescale = attributes.filter(\n (attribute) => attribute.needRescale,\n );\n if (attributesToRescale.length) {\n this.caculateScalesForAttributes(attributesToRescale, dataArray);\n }\n }\n });\n }\n private isNumber(n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n private caculateScalesForAttributes(\n attributes: IStyleAttribute[],\n dataArray: IParseDataItem[],\n ) {\n this.scaleCache = {};\n attributes.forEach((attribute) => {\n if (attribute.scale) {\n // 创建Scale\n const attributeScale = attribute.scale;\n const type = attribute.name;\n attributeScale.names = this.parseFields(attribute!.scale!.field || []);\n const scales: IStyleScale[] = [];\n attributeScale.names.forEach((field: string | number) => {\n scales.push(this.getOrCreateScale(field, attribute, dataArray));\n });\n\n // 为scales 设置值区间\n if (scales.some((scale) => scale.type === StyleScaleType.VARIABLE)) {\n attributeScale.type = StyleScaleType.VARIABLE;\n scales.forEach((scale) => {\n // 如果设置了回调, 这不需要设置让range\n if (!attributeScale.callback) {\n if (attributeScale.values && attributeScale.values !== 'text') {\n if (\n scale.option?.type === 'linear' &&\n attributeScale.values.length > 2\n ) {\n const tick = scale.scale.ticks(attributeScale.values.length);\n if (type === 'color') {\n scale.scale.domain(tick);\n }\n }\n scale.scale.range(attributeScale.values); // 判断常量, 默认值\n } else if (scale.option?.type === 'cat') {\n // 如果没有设置初值且 类型为cat,range ==domain;\n\n scale.scale.range(scale.option.domain);\n }\n }\n });\n } else {\n // 设置attribute 常量值 常量直接在value取值\n attributeScale.type = StyleScaleType.CONSTANT;\n attributeScale.defaultValues = scales.map((scale, index) => {\n return scale.scale(attributeScale.names[index]);\n });\n }\n attributeScale.scalers = scales.map((scale: IStyleScale) => {\n return {\n field: scale.field,\n func: scale.scale,\n option: scale.option,\n };\n });\n\n attribute.needRescale = false;\n }\n });\n }\n private getOrCreateScale(\n field: string | number,\n attribute: IStyleAttribute,\n dataArray: IParseDataItem[],\n ) {\n const scalekey = [field, attribute.name].join('_');\n const values = attribute.scale?.values;\n // if (this.scaleCache[scalekey]) {\n // return this.scaleCache[scalekey];\n // }\n const styleScale = this.createScale(\n field,\n attribute.name,\n values,\n dataArray,\n );\n // this.scaleCache[scalekey] = styleScale;\n return styleScale;\n }\n\n /**\n * @example\n * 'w*h' => ['w', 'h']\n * 'w' => ['w']\n */\n private parseFields(\n field: string[] | string | number[],\n ): string[] | number[] {\n if (Array.isArray(field)) {\n return field;\n }\n if (isString(field)) {\n return field.split('*');\n }\n return [field];\n }\n\n private createScale(\n field: string | number,\n name: string,\n values: unknown[] | string | undefined,\n data?: IParseDataItem[],\n ): IStyleScale {\n // scale 支持根据视觉通道和字段\n const scaleOption: IScale | undefined =\n this.scaleOptions[name] && this.scaleOptions[name]?.field === field\n ? this.scaleOptions[name]\n : this.scaleOptions[field];\n const styleScale: IStyleScale = {\n field,\n scale: undefined,\n type: StyleScaleType.VARIABLE,\n option: scaleOption,\n };\n\n if (!data || !data.length) {\n if (scaleOption && scaleOption.type) {\n styleScale.scale = this.createDefaultScale(scaleOption);\n } else {\n styleScale.scale = d3.scaleOrdinal([field]);\n styleScale.type = StyleScaleType.CONSTANT;\n }\n return styleScale;\n }\n const firstValue = data!.find((d) => !isNil(d[field]))?.[field];\n // 常量 Scale\n if (this.isNumber(field) || (isNil(firstValue) && !scaleOption)) {\n styleScale.scale = d3.scaleOrdinal([field]);\n styleScale.type = StyleScaleType.CONSTANT;\n } else {\n // 根据数据类型判断 默认等分位,时间,和枚举类型\n let type =\n (scaleOption && scaleOption.type) || this.getDefaultType(firstValue);\n if (values === 'text') {\n // text 为内置变 如果是文本则为cat\n type = ScaleTypes.CAT;\n }\n const cfg = this.createDefaultScaleConfig(type, field, data);\n Object.assign(cfg, scaleOption);\n styleScale.scale = this.createDefaultScale(cfg);\n styleScale.option = cfg;\n }\n return styleScale;\n }\n\n private getDefaultType(firstValue: unknown) {\n let type = ScaleTypes.LINEAR;\n if (typeof firstValue === 'string') {\n type = dateRegex.test(firstValue) ? ScaleTypes.TIME : ScaleTypes.CAT;\n }\n return type;\n }\n\n private createDefaultScaleConfig(\n type: ScaleTypeName,\n field: string | number,\n data?: IParseDataItem[],\n ) {\n const cfg: IScale = {\n type,\n };\n const values = data?.map((item) => item[field]) || [];\n // 默认类型为 Quantile Scales https://github.com/d3/d3-scale#quantile-scales\n if (type !== ScaleTypes.CAT && type !== ScaleTypes.QUANTILE) {\n cfg.domain = extent(values);\n } else if (type === ScaleTypes.CAT) {\n cfg.domain = uniq(values);\n } else if (type === ScaleTypes.QUANTILE) {\n cfg.domain = values;\n }\n return cfg;\n }\n\n private createDefaultScale({ type, domain }: IScale) {\n // @ts-ignore\n const scale = scaleMap[type]();\n if (domain) {\n scale.domain(domain);\n }\n // TODO 其他属性支持\n return scale;\n }\n}\n"],"file":"FeatureScalePlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/FeatureScalePlugin.ts"],"names":["dateRegex","scaleMap","ScaleTypes","LINEAR","d3","scaleLinear","POWER","scalePow","LOG","scaleLog","IDENTITY","scaleIdentity","TIME","scaleTime","QUANTILE","scaleQuantile","QUANTIZE","scaleQuantize","THRESHOLD","scaleThreshold","CAT","scaleOrdinal","FeatureScalePlugin","TYPES","IGlobalConfigService","layer","styleAttributeService","hooks","init","tap","scaleOptions","getScaleOptions","attributes","getLayerStyleAttributes","dataArray","getSource","data","length","caculateScalesForAttributes","beforeRenderData","layerModelNeedUpdate","beforeRender","attributesToRescale","filter","attribute","needRescale","n","isNaN","parseFloat","isFinite","scaleCache","forEach","scale","attributeScale","type","name","names","parseFields","field","scales","push","getOrCreateScale","some","StyleScaleType","VARIABLE","callback","values","option","tick","ticks","domain","range","CONSTANT","defaultValues","map","index","scalers","func","scalekey","join","styleScale","createScale","Array","isArray","split","scaleOption","undefined","createDefaultScale","firstValue","find","d","isNumber","getDefaultType","cfg","createDefaultScaleConfig","Object","assign","test","item"],"mappings":"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","sourcesContent":["import {\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n IScale,\n IScaleOptions,\n IStyleAttribute,\n IStyleAttributeService,\n IStyleScale,\n ScaleTypeName,\n ScaleTypes,\n StyleScaleType,\n TYPES,\n} from '@antv/l7-core';\nimport { IParseDataItem } from '@antv/l7-source';\nimport { extent, ticks } from 'd3-array';\nimport * as d3 from 'd3-scale';\nimport { inject, injectable } from 'inversify';\nimport { isNil, isString, uniq } from 'lodash';\nimport 'reflect-metadata';\n\nconst dateRegex = /^(?:(?!0000)[0-9]{4}([-/.]+)(?:(?:0?[1-9]|1[0-2])\\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\\1(?:29|30)|(?:0?[13578]|1[02])\\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]?)0?2\\2(?:29))(\\s+([01]|([01][0-9]|2[0-3])):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]))?$/;\n\nconst scaleMap = {\n [ScaleTypes.LINEAR]: d3.scaleLinear,\n [ScaleTypes.POWER]: d3.scalePow,\n [ScaleTypes.LOG]: d3.scaleLog,\n [ScaleTypes.IDENTITY]: d3.scaleIdentity,\n [ScaleTypes.TIME]: d3.scaleTime,\n [ScaleTypes.QUANTILE]: d3.scaleQuantile,\n [ScaleTypes.QUANTIZE]: d3.scaleQuantize,\n [ScaleTypes.THRESHOLD]: d3.scaleThreshold,\n [ScaleTypes.CAT]: d3.scaleOrdinal,\n};\n\n/**\n * 根据 Source 原始数据为指定字段创建 Scale,保存在 StyleAttribute 上,供下游插件使用\n */\n@injectable()\nexport default class FeatureScalePlugin implements ILayerPlugin {\n @inject(TYPES.IGlobalConfigService)\n private readonly configService: IGlobalConfigService;\n // key = field_attribute name\n private scaleCache: {\n [field: string]: IStyleScale;\n } = {};\n\n private scaleOptions: IScaleOptions = {};\n\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('FeatureScalePlugin', () => {\n this.scaleOptions = layer.getScaleOptions();\n const attributes = styleAttributeService.getLayerStyleAttributes();\n const { dataArray } = layer.getSource().data;\n if (dataArray.length === 0) {\n return;\n }\n this.caculateScalesForAttributes(attributes || [], dataArray);\n });\n\n // 检测数据是否需要更新\n layer.hooks.beforeRenderData.tap('FeatureScalePlugin', () => {\n this.scaleOptions = layer.getScaleOptions();\n const attributes = styleAttributeService.getLayerStyleAttributes();\n const { dataArray } = layer.getSource().data;\n // if (dataArray.length === 0) {\n // return;\n // }\n this.caculateScalesForAttributes(attributes || [], dataArray);\n layer.layerModelNeedUpdate = true;\n return true;\n });\n\n layer.hooks.beforeRender.tap('FeatureScalePlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n this.scaleOptions = layer.getScaleOptions();\n const attributes = styleAttributeService.getLayerStyleAttributes();\n if (attributes) {\n const { dataArray } = layer.getSource().data;\n if (dataArray.length === 0) {\n return;\n }\n const attributesToRescale = attributes.filter(\n (attribute) => attribute.needRescale,\n );\n if (attributesToRescale.length) {\n this.caculateScalesForAttributes(attributesToRescale, dataArray);\n }\n }\n });\n }\n private isNumber(n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n private caculateScalesForAttributes(\n attributes: IStyleAttribute[],\n dataArray: IParseDataItem[],\n ) {\n this.scaleCache = {};\n attributes.forEach((attribute) => {\n if (attribute.scale) {\n // 创建Scale\n const attributeScale = attribute.scale;\n const type = attribute.name;\n attributeScale.names = this.parseFields(attribute!.scale!.field || []);\n const scales: IStyleScale[] = [];\n attributeScale.names.forEach((field: string | number) => {\n scales.push(this.getOrCreateScale(field, attribute, dataArray));\n });\n\n // 为scales 设置值区间\n if (scales.some((scale) => scale.type === StyleScaleType.VARIABLE)) {\n attributeScale.type = StyleScaleType.VARIABLE;\n scales.forEach((scale) => {\n // 如果设置了回调, 这不需要设置让range\n if (!attributeScale.callback) {\n if (attributeScale.values && attributeScale.values !== 'text') {\n if (\n scale.option?.type === 'linear' &&\n attributeScale.values.length > 2\n ) {\n const tick = scale.scale.ticks(attributeScale.values.length);\n if (type === 'color') {\n scale.scale.domain(tick);\n }\n }\n scale.scale.range(attributeScale.values); // 判断常量, 默认值\n } else if (scale.option?.type === 'cat') {\n // 如果没有设置初值且 类型为cat,range ==domain;\n\n scale.scale.range(scale.option.domain);\n }\n }\n });\n } else {\n // 设置attribute 常量值 常量直接在value取值\n attributeScale.type = StyleScaleType.CONSTANT;\n attributeScale.defaultValues = scales.map((scale, index) => {\n return scale.scale(attributeScale.names[index]);\n });\n }\n attributeScale.scalers = scales.map((scale: IStyleScale) => {\n return {\n field: scale.field,\n func: scale.scale,\n option: scale.option,\n };\n });\n\n attribute.needRescale = false;\n }\n });\n }\n private getOrCreateScale(\n field: string | number,\n attribute: IStyleAttribute,\n dataArray: IParseDataItem[],\n ) {\n const scalekey = [field, attribute.name].join('_');\n const values = attribute.scale?.values;\n // if (this.scaleCache[scalekey]) {\n // return this.scaleCache[scalekey];\n // }\n const styleScale = this.createScale(\n field,\n attribute.name,\n values,\n dataArray,\n );\n // this.scaleCache[scalekey] = styleScale;\n return styleScale;\n }\n\n /**\n * @example\n * 'w*h' => ['w', 'h']\n * 'w' => ['w']\n */\n private parseFields(\n field: string[] | string | number[],\n ): string[] | number[] {\n if (Array.isArray(field)) {\n return field;\n }\n if (isString(field)) {\n return field.split('*');\n }\n return [field];\n }\n\n private createScale(\n field: string | number,\n name: string,\n values: unknown[] | string | undefined,\n data?: IParseDataItem[],\n ): IStyleScale {\n // scale 支持根据视觉通道和字段\n const scaleOption: IScale | undefined =\n this.scaleOptions[name] && this.scaleOptions[name]?.field === field\n ? this.scaleOptions[name]\n : this.scaleOptions[field];\n const styleScale: IStyleScale = {\n field,\n scale: undefined,\n type: StyleScaleType.VARIABLE,\n option: scaleOption,\n };\n\n if (!data || !data.length) {\n if (scaleOption && scaleOption.type) {\n styleScale.scale = this.createDefaultScale(scaleOption);\n } else {\n styleScale.scale = d3.scaleOrdinal([field]);\n styleScale.type = StyleScaleType.CONSTANT;\n }\n return styleScale;\n }\n const firstValue = data!.find((d) => !isNil(d[field]))?.[field];\n // 常量 Scale\n if (this.isNumber(field) || (isNil(firstValue) && !scaleOption)) {\n styleScale.scale = d3.scaleOrdinal([field]);\n styleScale.type = StyleScaleType.CONSTANT;\n } else {\n // 根据数据类型判断 默认等分位,时间,和枚举类型\n let type =\n (scaleOption && scaleOption.type) || this.getDefaultType(firstValue);\n if (values === 'text') {\n // text 为内置变 如果是文本则为cat\n type = ScaleTypes.CAT;\n }\n const cfg = this.createDefaultScaleConfig(type, field, data);\n Object.assign(cfg, scaleOption);\n styleScale.scale = this.createDefaultScale(cfg);\n styleScale.option = cfg;\n }\n return styleScale;\n }\n\n private getDefaultType(firstValue: unknown) {\n let type = ScaleTypes.LINEAR;\n if (typeof firstValue === 'string') {\n type = dateRegex.test(firstValue) ? ScaleTypes.TIME : ScaleTypes.CAT;\n }\n return type;\n }\n\n private createDefaultScaleConfig(\n type: ScaleTypeName,\n field: string | number,\n data?: IParseDataItem[],\n ) {\n const cfg: IScale = {\n type,\n };\n const values = data?.map((item) => item[field]) || [];\n // 默认类型为 Quantile Scales https://github.com/d3/d3-scale#quantile-scales\n if (type !== ScaleTypes.CAT && type !== ScaleTypes.QUANTILE) {\n cfg.domain = extent(values);\n } else if (type === ScaleTypes.CAT) {\n cfg.domain = uniq(values);\n } else if (type === ScaleTypes.QUANTILE) {\n cfg.domain = values;\n }\n return cfg;\n }\n\n private createDefaultScale({ type, domain }: IScale) {\n // @ts-ignore\n const scale = scaleMap[type]();\n if (domain) {\n scale.domain(domain);\n }\n // TODO 其他属性支持\n return scale;\n }\n}\n"],"file":"FeatureScalePlugin.js"}
@@ -27,7 +27,7 @@ require("reflect-metadata");
27
27
 
28
28
  var _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2;
29
29
 
30
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
30
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
31
31
 
32
32
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
33
33
 
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.generateLightingUniforms = generateLightingUniforms;
9
8
  exports.default = void 0;
9
+ exports.generateLightingUniforms = generateLightingUniforms;
10
10
 
11
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
12
 
@@ -22,7 +22,9 @@ require("reflect-metadata");
22
22
 
23
23
  var _dec, _class;
24
24
 
25
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
25
+ var _excluded = ["type"];
26
+
27
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
26
28
 
27
29
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
28
30
 
@@ -79,7 +81,7 @@ function generateLightingUniforms(lights) {
79
81
  lights.forEach(function (_ref, i) {
80
82
  var _ref$type = _ref.type,
81
83
  type = _ref$type === void 0 ? 'directional' : _ref$type,
82
- rest = (0, _objectWithoutProperties2.default)(_ref, ["type"]);
84
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
83
85
  var lightsUniformName = lightTypeUniformMap[type].lights;
84
86
  var lightsNumUniformName = lightTypeUniformMap[type].num;
85
87
  var num = lightsMap[lightsNumUniformName];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/LightingPlugin.ts"],"names":["lightTypeUniformMap","directional","lights","num","spot","DEFAULT_LIGHT","type","direction","ambient","diffuse","specular","DEFAULT_DIRECTIONAL_LIGHT","DEFAULT_SPOT_LIGHT","position","constant","linear","quadratic","angle","exponent","blur","COLOR_ATTRIBUTES","generateLightingUniforms","lightsMap","u_DirectionalLights","Array","fill","u_NumOfDirectionalLights","u_SpotLights","u_NumOfSpotLights","length","forEach","i","rest","lightsUniformName","lightsNumUniformName","LightingPlugin","layer","hooks","beforeRender","tap","getLayerConfig","enableLighting","models","model","addUniforms"],"mappings":"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","sourcesContent":["import {\n CameraUniform,\n CoordinateUniform,\n ICameraService,\n ICoordinateSystemService,\n ILayer,\n ILayerPlugin,\n IRendererService,\n TYPES,\n} from '@antv/l7-core';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\nconst lightTypeUniformMap = {\n directional: {\n lights: 'u_DirectionalLights',\n num: 'u_NumOfDirectionalLights',\n },\n spot: {\n lights: 'u_SpotLights',\n num: 'u_NumOfSpotLights',\n },\n};\n\ninterface IDirectionalLight {\n type: 'directional';\n direction: [number, number, number];\n ambient: [number, number, number];\n diffuse: [number, number, number];\n specular: [number, number, number];\n}\n\ninterface ISpotLight {\n type: 'spot';\n position: [number, number, number];\n direction: [number, number, number];\n ambient: [number, number, number];\n diffuse: [number, number, number];\n specular: [number, number, number];\n constant: number;\n linear: number;\n quadratic: number;\n angle: number;\n exponent: number;\n blur: number;\n}\n\nconst DEFAULT_LIGHT: IDirectionalLight = {\n type: 'directional',\n direction: [1, 10.5, 12],\n ambient: [0.2, 0.2, 0.2],\n diffuse: [0.6, 0.6, 0.6],\n specular: [0.1, 0.1, 0.1],\n};\n\nconst DEFAULT_DIRECTIONAL_LIGHT = {\n direction: [0, 0, 0],\n ambient: [0, 0, 0],\n diffuse: [0, 0, 0],\n specular: [0, 0, 0],\n};\n\nconst DEFAULT_SPOT_LIGHT = {\n position: [0, 0, 0],\n direction: [0, 0, 0],\n ambient: [0, 0, 0],\n diffuse: [0, 0, 0],\n specular: [0, 0, 0],\n constant: 1,\n linear: 0,\n quadratic: 0,\n angle: 14,\n exponent: 40,\n blur: 5,\n};\n\nconst COLOR_ATTRIBUTES = ['ambient', 'diffuse', 'specular'];\n\nexport function generateLightingUniforms(\n lights?: Array<Partial<IDirectionalLight | ISpotLight>>,\n) {\n const lightsMap: {\n u_DirectionalLights: Array<Omit<IDirectionalLight, 'type'>>;\n u_NumOfDirectionalLights: number;\n u_SpotLights: Array<Omit<ISpotLight, 'type'>>;\n u_NumOfSpotLights: number;\n } = {\n u_DirectionalLights: new Array(3).fill({ ...DEFAULT_DIRECTIONAL_LIGHT }),\n u_NumOfDirectionalLights: 0,\n u_SpotLights: new Array(3).fill({ ...DEFAULT_SPOT_LIGHT }),\n u_NumOfSpotLights: 0,\n };\n if (!lights || !lights.length) {\n lights = [DEFAULT_LIGHT];\n }\n lights.forEach(({ type = 'directional', ...rest }, i) => {\n const lightsUniformName = lightTypeUniformMap[type].lights;\n const lightsNumUniformName = lightTypeUniformMap[type].num;\n\n // Object.keys(rest).forEach(key => {\n // if (Util.isString(rest[key]) && COLOR_ATTRIBUTES.indexOf(key) > -1) {\n // rest[key] = ColorUtil.color2RGBA(rest[key]).slice(0, 3);\n // }\n // });\n\n // @ts-ignore\n const num = lightsMap[lightsNumUniformName];\n // @ts-ignore\n lightsMap[lightsUniformName][num] = {\n // @ts-ignore\n ...lightsMap[lightsUniformName][num],\n ...rest,\n };\n // @ts-ignore\n lightsMap[lightsNumUniformName]++;\n });\n return lightsMap;\n}\n\n/**\n * 光照 & Shadow\n */\n@injectable()\nexport default class LightingPlugin implements ILayerPlugin {\n public apply(layer: ILayer) {\n layer.hooks.beforeRender.tap('LightingPlugin', () => {\n const { enableLighting } = layer.getLayerConfig();\n if (enableLighting) {\n layer.models.forEach((model) =>\n // @ts-ignore\n model.addUniforms({\n ...generateLightingUniforms(),\n }),\n );\n }\n });\n }\n}\n"],"file":"LightingPlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/LightingPlugin.ts"],"names":["lightTypeUniformMap","directional","lights","num","spot","DEFAULT_LIGHT","type","direction","ambient","diffuse","specular","DEFAULT_DIRECTIONAL_LIGHT","DEFAULT_SPOT_LIGHT","position","constant","linear","quadratic","angle","exponent","blur","COLOR_ATTRIBUTES","generateLightingUniforms","lightsMap","u_DirectionalLights","Array","fill","u_NumOfDirectionalLights","u_SpotLights","u_NumOfSpotLights","length","forEach","i","rest","lightsUniformName","lightsNumUniformName","LightingPlugin","layer","hooks","beforeRender","tap","getLayerConfig","enableLighting","models","model","addUniforms"],"mappings":"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","sourcesContent":["import {\n CameraUniform,\n CoordinateUniform,\n ICameraService,\n ICoordinateSystemService,\n ILayer,\n ILayerPlugin,\n IRendererService,\n TYPES,\n} from '@antv/l7-core';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\nconst lightTypeUniformMap = {\n directional: {\n lights: 'u_DirectionalLights',\n num: 'u_NumOfDirectionalLights',\n },\n spot: {\n lights: 'u_SpotLights',\n num: 'u_NumOfSpotLights',\n },\n};\n\ninterface IDirectionalLight {\n type: 'directional';\n direction: [number, number, number];\n ambient: [number, number, number];\n diffuse: [number, number, number];\n specular: [number, number, number];\n}\n\ninterface ISpotLight {\n type: 'spot';\n position: [number, number, number];\n direction: [number, number, number];\n ambient: [number, number, number];\n diffuse: [number, number, number];\n specular: [number, number, number];\n constant: number;\n linear: number;\n quadratic: number;\n angle: number;\n exponent: number;\n blur: number;\n}\n\nconst DEFAULT_LIGHT: IDirectionalLight = {\n type: 'directional',\n direction: [1, 10.5, 12],\n ambient: [0.2, 0.2, 0.2],\n diffuse: [0.6, 0.6, 0.6],\n specular: [0.1, 0.1, 0.1],\n};\n\nconst DEFAULT_DIRECTIONAL_LIGHT = {\n direction: [0, 0, 0],\n ambient: [0, 0, 0],\n diffuse: [0, 0, 0],\n specular: [0, 0, 0],\n};\n\nconst DEFAULT_SPOT_LIGHT = {\n position: [0, 0, 0],\n direction: [0, 0, 0],\n ambient: [0, 0, 0],\n diffuse: [0, 0, 0],\n specular: [0, 0, 0],\n constant: 1,\n linear: 0,\n quadratic: 0,\n angle: 14,\n exponent: 40,\n blur: 5,\n};\n\nconst COLOR_ATTRIBUTES = ['ambient', 'diffuse', 'specular'];\n\nexport function generateLightingUniforms(\n lights?: Array<Partial<IDirectionalLight | ISpotLight>>,\n) {\n const lightsMap: {\n u_DirectionalLights: Array<Omit<IDirectionalLight, 'type'>>;\n u_NumOfDirectionalLights: number;\n u_SpotLights: Array<Omit<ISpotLight, 'type'>>;\n u_NumOfSpotLights: number;\n } = {\n u_DirectionalLights: new Array(3).fill({ ...DEFAULT_DIRECTIONAL_LIGHT }),\n u_NumOfDirectionalLights: 0,\n u_SpotLights: new Array(3).fill({ ...DEFAULT_SPOT_LIGHT }),\n u_NumOfSpotLights: 0,\n };\n if (!lights || !lights.length) {\n lights = [DEFAULT_LIGHT];\n }\n lights.forEach(({ type = 'directional', ...rest }, i) => {\n const lightsUniformName = lightTypeUniformMap[type].lights;\n const lightsNumUniformName = lightTypeUniformMap[type].num;\n\n // Object.keys(rest).forEach(key => {\n // if (Util.isString(rest[key]) && COLOR_ATTRIBUTES.indexOf(key) > -1) {\n // rest[key] = ColorUtil.color2RGBA(rest[key]).slice(0, 3);\n // }\n // });\n\n // @ts-ignore\n const num = lightsMap[lightsNumUniformName];\n // @ts-ignore\n lightsMap[lightsUniformName][num] = {\n // @ts-ignore\n ...lightsMap[lightsUniformName][num],\n ...rest,\n };\n // @ts-ignore\n lightsMap[lightsNumUniformName]++;\n });\n return lightsMap;\n}\n\n/**\n * 光照 & Shadow\n */\n@injectable()\nexport default class LightingPlugin implements ILayerPlugin {\n public apply(layer: ILayer) {\n layer.hooks.beforeRender.tap('LightingPlugin', () => {\n const { enableLighting } = layer.getLayerConfig();\n if (enableLighting) {\n layer.models.forEach((model) =>\n // @ts-ignore\n model.addUniforms({\n ...generateLightingUniforms(),\n }),\n );\n }\n });\n }\n}\n"],"file":"LightingPlugin.js"}
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.normalizePasses = normalizePasses;
9
8
  exports.default = void 0;
9
+ exports.normalizePasses = normalizePasses;
10
10
 
11
11
  var _initializerDefineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/initializerDefineProperty"));
12
12
 
@@ -52,12 +52,12 @@ var UpdateStyleAttributePlugin = (_dec = (0, _inversify.injectable)(), _dec(_cla
52
52
  var shape = styleAttributeService.getLayerStyleAttribute('shape');
53
53
 
54
54
  if (filter && filter.needRegenerateVertices || shape && shape.needRegenerateVertices) {
55
- layer.layerModelNeedUpdate = true;
56
- attributes.forEach(function (attr) {
57
- return attr.needRegenerateVertices = false;
58
- });
59
- return;
60
- }
55
+ layer.layerModelNeedUpdate = true;
56
+ attributes.forEach(function (attr) {
57
+ return attr.needRegenerateVertices = false;
58
+ });
59
+ return;
60
+ }
61
61
 
62
62
  attributes.filter(function (attribute) {
63
63
  return attribute.needRegenerateVertices;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/UpdateStyleAttributePlugin.ts"],"names":["UpdateStyleAttributePlugin","layer","styleAttributeService","hooks","init","tap","initStyleAttribute","beforeRender","layerModelNeedUpdate","updateStyleAtrribute","attributes","getLayerStyleAttributes","filter","getLayerStyleAttribute","shape","needRegenerateVertices","forEach","attr","attribute","updateAttributeByFeatureRange","name","getEncodedData","featureRange","startIndex","endIndex"],"mappings":";;;;;;;;;;;;;AAMA;;AACA;;;;IAMqBA,0B,WADpB,4B;;;;;;;WAEC,eACEC,KADF,QAKE;AAAA;;AAAA,UAFEC,qBAEF,QAFEA,qBAEF;AACAD,MAAAA,KAAK,CAACE,KAAN,CAAYC,IAAZ,CAAiBC,GAAjB,CAAqB,4BAArB,EAAmD,YAAM;AACvD,QAAA,KAAI,CAACC,kBAAL,CAAwBL,KAAxB,EAA+B;AAAEC,UAAAA,qBAAqB,EAArBA;AAAF,SAA/B;AACD,OAFD;AASAD,MAAAA,KAAK,CAACE,KAAN,CAAYI,YAAZ,CAAyBF,GAAzB,CAA6B,4BAA7B,EAA2D,YAAM;AAC/D,YAAIJ,KAAK,CAACO,oBAAV,EAAgC;AAC9B;AACD;;AACD,QAAA,KAAI,CAACC,oBAAL,CAA0BR,KAA1B,EAAiC;AAAEC,UAAAA,qBAAqB,EAArBA;AAAF,SAAjC;AACD,OALD;AAMD;;;WACD,8BACED,KADF,SAKE;AAAA,UAFEC,qBAEF,SAFEA,qBAEF;AACA,UAAMQ,UAAU,GAAGR,qBAAqB,CAACS,uBAAtB,MAAmD,EAAtE;AACA,UAAMC,MAAM,GAAGV,qBAAqB,CAACW,sBAAtB,CAA6C,QAA7C,CAAf;AACA,UAAMC,KAAK,GAAGZ,qBAAqB,CAACW,sBAAtB,CAA6C,OAA7C,CAAd;;AACA,UACGD,MAAM,IAAIA,MAAM,CAACG,sBAAlB,IACCD,KAAK,IAAIA,KAAK,CAACC,sBAFlB,EAGE;AACAd,UAAAA,KAAK,CAACO,oBAAN,GAA6B,IAA7B;AACAE,UAAAA,UAAU,CAACM,OAAX,CAAmB,UAACC,IAAD;AAAA,mBAAWA,IAAI,CAACF,sBAAL,GAA8B,KAAzC;AAAA,WAAnB;AACA;AACD;;AACDL,MAAAA,UAAU,CACPE,MADH,CACU,UAACM,SAAD;AAAA,eAAeA,SAAS,CAACH,sBAAzB;AAAA,OADV,EAEGC,OAFH,CAEW,UAACE,SAAD,EAAe;AAEtBhB,QAAAA,qBAAqB,CAACiB,6BAAtB,CACED,SAAS,CAACE,IADZ,EAEEnB,KAAK,CAACoB,cAAN,EAFF,EAGEH,SAAS,CAACI,YAAV,CAAuBC,UAHzB,EAIEL,SAAS,CAACI,YAAV,CAAuBE,QAJzB;AAMAN,QAAAA,SAAS,CAACH,sBAAV,GAAmC,KAAnC;AACD,OAXH;AAYD;;;WAED,4BACEd,KADF,SAKE;AAAA,UAFEC,qBAEF,SAFEA,qBAEF;AACA,UAAMQ,UAAU,GAAGR,qBAAqB,CAACS,uBAAtB,MAAmD,EAAtE;AACAD,MAAAA,UAAU,CACPE,MADH,CACU,UAACM,SAAD;AAAA,eAAeA,SAAS,CAACH,sBAAzB;AAAA,OADV,EAEGC,OAFH,CAEW,UAACE,SAAD,EAAe;AAEtBhB,QAAAA,qBAAqB,CAACiB,6BAAtB,CACED,SAAS,CAACE,IADZ,EAEEnB,KAAK,CAACoB,cAAN,EAFF,EAGEH,SAAS,CAACI,YAAV,CAAuBC,UAHzB,EAIEL,SAAS,CAACI,YAAV,CAAuBE,QAJzB;AAMAN,QAAAA,SAAS,CAACH,sBAAV,GAAmC,KAAnC;AACD,OAXH;AAYD","sourcesContent":["import {\n ILayer,\n ILayerPlugin,\n IStyleAttributeService,\n TYPES,\n} from '@antv/l7-core';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\n/**\n * 在初始化阶段完成属性的注册,以及首次根据 Layer 指定的三角化方法完成 indices 和 attribute 的创建\n */\n@injectable()\nexport default class UpdateStyleAttributePlugin implements ILayerPlugin {\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('UpdateStyleAttributePlugin', () => {\n this.initStyleAttribute(layer, { styleAttributeService });\n });\n\n // layer.hooks.beforeRenderData.tap('styleAttributeService', () => {\n // // layer.layerModelNeedUpdate = true;\n // return true;\n // });\n\n layer.hooks.beforeRender.tap('UpdateStyleAttributePlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n this.updateStyleAtrribute(layer, { styleAttributeService });\n });\n }\n private updateStyleAtrribute(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const shape = styleAttributeService.getLayerStyleAttribute('shape');\n if (\n (filter && filter.needRegenerateVertices) ||\n (shape && shape.needRegenerateVertices) // TODO:Shape 更新重新build\n ) {\n layer.layerModelNeedUpdate = true;\n attributes.forEach((attr) => (attr.needRegenerateVertices = false));\n return;\n }\n attributes\n .filter((attribute) => attribute.needRegenerateVertices)\n .forEach((attribute) => {\n // 精确更新某个/某些 feature(s),需要传入 featureIdx d\n styleAttributeService.updateAttributeByFeatureRange(\n attribute.name,\n layer.getEncodedData(), // 获取经过 mapping 最新的数据\n attribute.featureRange.startIndex,\n attribute.featureRange.endIndex,\n );\n attribute.needRegenerateVertices = false;\n });\n }\n\n private initStyleAttribute(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n attributes\n .filter((attribute) => attribute.needRegenerateVertices)\n .forEach((attribute) => {\n // 精确更新某个/某些 feature(s),需要传入 featureIdx d\n styleAttributeService.updateAttributeByFeatureRange(\n attribute.name,\n layer.getEncodedData(), // 获取经过 mapping 最新的数据\n attribute.featureRange.startIndex,\n attribute.featureRange.endIndex,\n );\n attribute.needRegenerateVertices = false;\n });\n }\n}\n"],"file":"UpdateStyleAttributePlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/UpdateStyleAttributePlugin.ts"],"names":["UpdateStyleAttributePlugin","layer","styleAttributeService","hooks","init","tap","initStyleAttribute","beforeRender","layerModelNeedUpdate","updateStyleAtrribute","attributes","getLayerStyleAttributes","filter","getLayerStyleAttribute","shape","needRegenerateVertices","forEach","attr","attribute","updateAttributeByFeatureRange","name","getEncodedData","featureRange","startIndex","endIndex"],"mappings":";;;;;;;;;;;;;AAMA;;AACA;;;;IAMqBA,0B,WADpB,4B;;;;;;;WAEC,eACEC,KADF,QAKE;AAAA;;AAAA,UAFEC,qBAEF,QAFEA,qBAEF;AACAD,MAAAA,KAAK,CAACE,KAAN,CAAYC,IAAZ,CAAiBC,GAAjB,CAAqB,4BAArB,EAAmD,YAAM;AACvD,QAAA,KAAI,CAACC,kBAAL,CAAwBL,KAAxB,EAA+B;AAAEC,UAAAA,qBAAqB,EAArBA;AAAF,SAA/B;AACD,OAFD;AASAD,MAAAA,KAAK,CAACE,KAAN,CAAYI,YAAZ,CAAyBF,GAAzB,CAA6B,4BAA7B,EAA2D,YAAM;AAC/D,YAAIJ,KAAK,CAACO,oBAAV,EAAgC;AAC9B;AACD;;AACD,QAAA,KAAI,CAACC,oBAAL,CAA0BR,KAA1B,EAAiC;AAAEC,UAAAA,qBAAqB,EAArBA;AAAF,SAAjC;AACD,OALD;AAMD;;;WACD,8BACED,KADF,SAKE;AAAA,UAFEC,qBAEF,SAFEA,qBAEF;AACA,UAAMQ,UAAU,GAAGR,qBAAqB,CAACS,uBAAtB,MAAmD,EAAtE;AACA,UAAMC,MAAM,GAAGV,qBAAqB,CAACW,sBAAtB,CAA6C,QAA7C,CAAf;AACA,UAAMC,KAAK,GAAGZ,qBAAqB,CAACW,sBAAtB,CAA6C,OAA7C,CAAd;;AACA,UACGD,MAAM,IAAIA,MAAM,CAACG,sBAAlB,IACCD,KAAK,IAAIA,KAAK,CAACC,sBAFlB,EAGE;AACAd,QAAAA,KAAK,CAACO,oBAAN,GAA6B,IAA7B;AACAE,QAAAA,UAAU,CAACM,OAAX,CAAmB,UAACC,IAAD;AAAA,iBAAWA,IAAI,CAACF,sBAAL,GAA8B,KAAzC;AAAA,SAAnB;AACA;AACD;;AACDL,MAAAA,UAAU,CACPE,MADH,CACU,UAACM,SAAD;AAAA,eAAeA,SAAS,CAACH,sBAAzB;AAAA,OADV,EAEGC,OAFH,CAEW,UAACE,SAAD,EAAe;AAEtBhB,QAAAA,qBAAqB,CAACiB,6BAAtB,CACED,SAAS,CAACE,IADZ,EAEEnB,KAAK,CAACoB,cAAN,EAFF,EAGEH,SAAS,CAACI,YAAV,CAAuBC,UAHzB,EAIEL,SAAS,CAACI,YAAV,CAAuBE,QAJzB;AAMAN,QAAAA,SAAS,CAACH,sBAAV,GAAmC,KAAnC;AACD,OAXH;AAYD;;;WAED,4BACEd,KADF,SAKE;AAAA,UAFEC,qBAEF,SAFEA,qBAEF;AACA,UAAMQ,UAAU,GAAGR,qBAAqB,CAACS,uBAAtB,MAAmD,EAAtE;AACAD,MAAAA,UAAU,CACPE,MADH,CACU,UAACM,SAAD;AAAA,eAAeA,SAAS,CAACH,sBAAzB;AAAA,OADV,EAEGC,OAFH,CAEW,UAACE,SAAD,EAAe;AAEtBhB,QAAAA,qBAAqB,CAACiB,6BAAtB,CACED,SAAS,CAACE,IADZ,EAEEnB,KAAK,CAACoB,cAAN,EAFF,EAGEH,SAAS,CAACI,YAAV,CAAuBC,UAHzB,EAIEL,SAAS,CAACI,YAAV,CAAuBE,QAJzB;AAMAN,QAAAA,SAAS,CAACH,sBAAV,GAAmC,KAAnC;AACD,OAXH;AAYD","sourcesContent":["import {\n ILayer,\n ILayerPlugin,\n IStyleAttributeService,\n TYPES,\n} from '@antv/l7-core';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\n/**\n * 在初始化阶段完成属性的注册,以及首次根据 Layer 指定的三角化方法完成 indices 和 attribute 的创建\n */\n@injectable()\nexport default class UpdateStyleAttributePlugin implements ILayerPlugin {\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('UpdateStyleAttributePlugin', () => {\n this.initStyleAttribute(layer, { styleAttributeService });\n });\n\n // layer.hooks.beforeRenderData.tap('styleAttributeService', () => {\n // // layer.layerModelNeedUpdate = true;\n // return true;\n // });\n\n layer.hooks.beforeRender.tap('UpdateStyleAttributePlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n this.updateStyleAtrribute(layer, { styleAttributeService });\n });\n }\n private updateStyleAtrribute(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const shape = styleAttributeService.getLayerStyleAttribute('shape');\n if (\n (filter && filter.needRegenerateVertices) ||\n (shape && shape.needRegenerateVertices) // TODO:Shape 更新重新build\n ) {\n layer.layerModelNeedUpdate = true;\n attributes.forEach((attr) => (attr.needRegenerateVertices = false));\n return;\n }\n attributes\n .filter((attribute) => attribute.needRegenerateVertices)\n .forEach((attribute) => {\n // 精确更新某个/某些 feature(s),需要传入 featureIdx d\n styleAttributeService.updateAttributeByFeatureRange(\n attribute.name,\n layer.getEncodedData(), // 获取经过 mapping 最新的数据\n attribute.featureRange.startIndex,\n attribute.featureRange.endIndex,\n );\n attribute.needRegenerateVertices = false;\n });\n }\n\n private initStyleAttribute(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n attributes\n .filter((attribute) => attribute.needRegenerateVertices)\n .forEach((attribute) => {\n // 精确更新某个/某些 feature(s),需要传入 featureIdx d\n styleAttributeService.updateAttributeByFeatureRange(\n attribute.name,\n layer.getEncodedData(), // 获取经过 mapping 最新的数据\n attribute.featureRange.startIndex,\n attribute.featureRange.endIndex,\n );\n attribute.needRegenerateVertices = false;\n });\n }\n}\n"],"file":"UpdateStyleAttributePlugin.js"}
@@ -5,13 +5,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.polygonPath = polygonPath;
8
+ exports.ShapeType3D = exports.ShapeType2D = void 0;
9
9
  exports.circle = circle;
10
- exports.square = square;
11
- exports.triangle = triangle;
10
+ exports.geometryShape = void 0;
12
11
  exports.hexagon = hexagon;
13
12
  exports.pentagon = pentagon;
14
- exports.geometryShape = exports.ShapeType2D = exports.ShapeType3D = void 0;
13
+ exports.polygonPath = polygonPath;
14
+ exports.square = square;
15
+ exports.triangle = triangle;
15
16
 
16
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
18
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/point/shape/Path.ts"],"names":["ShapeType3D","ShapeType2D","polygonPath","pointCount","start","step","Math","PI","line","i","push","path","map","t","x","sin","y","cos","circle","square","triangle","hexagon","pentagon","geometryShape","CIRCLE","HEXAGON","TRIANGLE","SQUARE","PENTAGON","CYLINDER","HEXAGONCOLUMN","TRIANGLECOLUMN","SQUARECOLUMN","PENTAGONCOLUMN"],"mappings":";;;;;;;;;;;;;;;;;;;IAEYA,W;;;WAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,2BAAAA,W;;IAOAC,W;;;WAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,2BAAAA,W;;AAaL,SAASC,WAAT,CAAqBC,UAArB,EAAmE;AAAA,MAA1BC,KAA0B,uEAAV,CAAU;AACxE,MAAMC,IAAI,GAAIC,IAAI,CAACC,EAAL,GAAU,CAAX,GAAgBJ,UAA7B;AACA,MAAMK,IAAI,GAAG,EAAb;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,UAApB,EAAgCM,CAAC,EAAjC,EAAqC;AACnCD,IAAAA,IAAI,CAACE,IAAL,CAAUL,IAAI,GAAGI,CAAP,GAAYL,KAAK,GAAGE,IAAI,CAACC,EAAd,GAAoB,EAAzC;AACD;;AACD,MAAMI,IAAW,GAAGH,IAAI,CAACI,GAAL,CAAS,UAACC,CAAD,EAAO;AAClC,QAAMC,CAAC,GAAGR,IAAI,CAACS,GAAL,CAASF,CAAC,GAAGP,IAAI,CAACC,EAAL,GAAU,CAAvB,CAAV;AACA,QAAMS,CAAC,GAAGV,IAAI,CAACW,GAAL,CAASJ,CAAC,GAAGP,IAAI,CAACC,EAAL,GAAU,CAAvB,CAAV;AACA,WAAO,CAACO,CAAD,EAAIE,CAAJ,EAAO,CAAP,CAAP;AACD,GAJmB,CAApB;AAMA,SAAOL,IAAP;AACD;;AAEM,SAASO,MAAT,GAAyB;AAC9B,SAAOhB,WAAW,CAAC,EAAD,CAAlB;AACD;;AACM,SAASiB,MAAT,GAAyB;AAC9B,SAAOjB,WAAW,CAAC,CAAD,CAAlB;AACD;;AACM,SAASkB,QAAT,GAA2B;AAChC,SAAOlB,WAAW,CAAC,CAAD,CAAlB;AACD;;AACM,SAASmB,OAAT,GAA0B;AAC/B,SAAOnB,WAAW,CAAC,CAAD,CAAlB;AACD;;AACM,SAASoB,QAAT,GAA2B;AAChC,SAAOpB,WAAW,CAAC,CAAD,CAAlB;AACD;;AAEM,IAAMqB,aAAa,uEACvBtB,WAAW,CAACuB,MADW,EACFN,MADE,iDAEvBjB,WAAW,CAACwB,OAFW,EAEDJ,OAFC,iDAGvBpB,WAAW,CAACyB,QAHW,EAGAN,QAHA,iDAIvBnB,WAAW,CAAC0B,MAJW,EAIFR,MAJE,iDAKvBlB,WAAW,CAAC2B,QALW,EAKAN,QALA,iDAMvBtB,WAAW,CAAC6B,QANW,EAMAX,MANA,iDAOvBlB,WAAW,CAAC8B,aAPW,EAOKT,OAPL,iDAQvBrB,WAAW,CAAC+B,cARW,EAQMX,QARN,iDASvBpB,WAAW,CAACgC,YATW,EASIb,MATJ,iDAUvBnB,WAAW,CAACiC,cAVW,EAUMX,QAVN,kBAAnB","sourcesContent":["type IPosition = [number, number, number];\nexport type IPath = IPosition[];\nexport enum ShapeType3D {\n CYLINDER = 'cylinder',\n SQUARECOLUMN = 'squareColumn',\n TRIANGLECOLUMN = 'triangleColumn',\n HEXAGONCOLUMN = 'hexagonColumn',\n PENTAGONCOLUMN = 'pentagonColumn',\n}\nexport enum ShapeType2D {\n CIRCLE = 'circle',\n SQUARE = 'square',\n TRIANGLE = 'triangle',\n HEXAGON = 'hexagon',\n PENTAGON = 'pentagon',\n}\n\n/**\n * 生成规则多边形顶点个数\n * @param pointCount 顶点个数 3 => 三角形\n * @param start 顶点起始角度 调整图形的方向\n */\nexport function polygonPath(pointCount: number, start: number = 0): IPath {\n const step = (Math.PI * 2) / pointCount;\n const line = [];\n for (let i = 0; i < pointCount; i++) {\n line.push(step * i + (start * Math.PI) / 12);\n }\n const path: IPath = line.map((t) => {\n const x = Math.sin(t + Math.PI / 4);\n const y = Math.cos(t + Math.PI / 4);\n return [x, y, 0];\n });\n // path.push(path[0]);\n return path;\n}\n\nexport function circle(): IPath {\n return polygonPath(30);\n}\nexport function square(): IPath {\n return polygonPath(4);\n}\nexport function triangle(): IPath {\n return polygonPath(3);\n}\nexport function hexagon(): IPath {\n return polygonPath(6);\n}\nexport function pentagon(): IPath {\n return polygonPath(5);\n}\n\nexport const geometryShape = {\n [ShapeType2D.CIRCLE]: circle,\n [ShapeType2D.HEXAGON]: hexagon,\n [ShapeType2D.TRIANGLE]: triangle,\n [ShapeType2D.SQUARE]: square,\n [ShapeType2D.PENTAGON]: pentagon,\n [ShapeType3D.CYLINDER]: circle,\n [ShapeType3D.HEXAGONCOLUMN]: hexagon,\n [ShapeType3D.TRIANGLECOLUMN]: triangle,\n [ShapeType3D.SQUARECOLUMN]: square,\n [ShapeType3D.PENTAGONCOLUMN]: pentagon,\n};\n"],"file":"Path.js"}
1
+ {"version":3,"sources":["../../../src/point/shape/Path.ts"],"names":["ShapeType3D","ShapeType2D","polygonPath","pointCount","start","step","Math","PI","line","i","push","path","map","t","x","sin","y","cos","circle","square","triangle","hexagon","pentagon","geometryShape","CIRCLE","HEXAGON","TRIANGLE","SQUARE","PENTAGON","CYLINDER","HEXAGONCOLUMN","TRIANGLECOLUMN","SQUARECOLUMN","PENTAGONCOLUMN"],"mappings":";;;;;;;;;;;;;;;;;;;;IAEYA,W;;;WAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,2BAAAA,W;;IAOAC,W;;;WAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,2BAAAA,W;;AAaL,SAASC,WAAT,CAAqBC,UAArB,EAAmE;AAAA,MAA1BC,KAA0B,uEAAV,CAAU;AACxE,MAAMC,IAAI,GAAIC,IAAI,CAACC,EAAL,GAAU,CAAX,GAAgBJ,UAA7B;AACA,MAAMK,IAAI,GAAG,EAAb;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,UAApB,EAAgCM,CAAC,EAAjC,EAAqC;AACnCD,IAAAA,IAAI,CAACE,IAAL,CAAUL,IAAI,GAAGI,CAAP,GAAYL,KAAK,GAAGE,IAAI,CAACC,EAAd,GAAoB,EAAzC;AACD;;AACD,MAAMI,IAAW,GAAGH,IAAI,CAACI,GAAL,CAAS,UAACC,CAAD,EAAO;AAClC,QAAMC,CAAC,GAAGR,IAAI,CAACS,GAAL,CAASF,CAAC,GAAGP,IAAI,CAACC,EAAL,GAAU,CAAvB,CAAV;AACA,QAAMS,CAAC,GAAGV,IAAI,CAACW,GAAL,CAASJ,CAAC,GAAGP,IAAI,CAACC,EAAL,GAAU,CAAvB,CAAV;AACA,WAAO,CAACO,CAAD,EAAIE,CAAJ,EAAO,CAAP,CAAP;AACD,GAJmB,CAApB;AAMA,SAAOL,IAAP;AACD;;AAEM,SAASO,MAAT,GAAyB;AAC9B,SAAOhB,WAAW,CAAC,EAAD,CAAlB;AACD;;AACM,SAASiB,MAAT,GAAyB;AAC9B,SAAOjB,WAAW,CAAC,CAAD,CAAlB;AACD;;AACM,SAASkB,QAAT,GAA2B;AAChC,SAAOlB,WAAW,CAAC,CAAD,CAAlB;AACD;;AACM,SAASmB,OAAT,GAA0B;AAC/B,SAAOnB,WAAW,CAAC,CAAD,CAAlB;AACD;;AACM,SAASoB,QAAT,GAA2B;AAChC,SAAOpB,WAAW,CAAC,CAAD,CAAlB;AACD;;AAEM,IAAMqB,aAAa,uEACvBtB,WAAW,CAACuB,MADW,EACFN,MADE,iDAEvBjB,WAAW,CAACwB,OAFW,EAEDJ,OAFC,iDAGvBpB,WAAW,CAACyB,QAHW,EAGAN,QAHA,iDAIvBnB,WAAW,CAAC0B,MAJW,EAIFR,MAJE,iDAKvBlB,WAAW,CAAC2B,QALW,EAKAN,QALA,iDAMvBtB,WAAW,CAAC6B,QANW,EAMAX,MANA,iDAOvBlB,WAAW,CAAC8B,aAPW,EAOKT,OAPL,iDAQvBrB,WAAW,CAAC+B,cARW,EAQMX,QARN,iDASvBpB,WAAW,CAACgC,YATW,EASIb,MATJ,iDAUvBnB,WAAW,CAACiC,cAVW,EAUMX,QAVN,kBAAnB","sourcesContent":["type IPosition = [number, number, number];\nexport type IPath = IPosition[];\nexport enum ShapeType3D {\n CYLINDER = 'cylinder',\n SQUARECOLUMN = 'squareColumn',\n TRIANGLECOLUMN = 'triangleColumn',\n HEXAGONCOLUMN = 'hexagonColumn',\n PENTAGONCOLUMN = 'pentagonColumn',\n}\nexport enum ShapeType2D {\n CIRCLE = 'circle',\n SQUARE = 'square',\n TRIANGLE = 'triangle',\n HEXAGON = 'hexagon',\n PENTAGON = 'pentagon',\n}\n\n/**\n * 生成规则多边形顶点个数\n * @param pointCount 顶点个数 3 => 三角形\n * @param start 顶点起始角度 调整图形的方向\n */\nexport function polygonPath(pointCount: number, start: number = 0): IPath {\n const step = (Math.PI * 2) / pointCount;\n const line = [];\n for (let i = 0; i < pointCount; i++) {\n line.push(step * i + (start * Math.PI) / 12);\n }\n const path: IPath = line.map((t) => {\n const x = Math.sin(t + Math.PI / 4);\n const y = Math.cos(t + Math.PI / 4);\n return [x, y, 0];\n });\n // path.push(path[0]);\n return path;\n}\n\nexport function circle(): IPath {\n return polygonPath(30);\n}\nexport function square(): IPath {\n return polygonPath(4);\n}\nexport function triangle(): IPath {\n return polygonPath(3);\n}\nexport function hexagon(): IPath {\n return polygonPath(6);\n}\nexport function pentagon(): IPath {\n return polygonPath(5);\n}\n\nexport const geometryShape = {\n [ShapeType2D.CIRCLE]: circle,\n [ShapeType2D.HEXAGON]: hexagon,\n [ShapeType2D.TRIANGLE]: triangle,\n [ShapeType2D.SQUARE]: square,\n [ShapeType2D.PENTAGON]: pentagon,\n [ShapeType3D.CYLINDER]: circle,\n [ShapeType3D.HEXAGONCOLUMN]: hexagon,\n [ShapeType3D.TRIANGLECOLUMN]: triangle,\n [ShapeType3D.SQUARECOLUMN]: square,\n [ShapeType3D.PENTAGONCOLUMN]: pentagon,\n};\n"],"file":"Path.js"}
@@ -31,7 +31,7 @@ var _BaseLayer2 = _interopRequireDefault(require("../core/BaseLayer"));
31
31
 
32
32
  var _triangulation = require("./buffers/triangulation");
33
33
 
34
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
34
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
35
35
 
36
36
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
37
37
 
@@ -5,9 +5,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.handleStyleColor = handleStyleColor;
8
9
  exports.handleStyleDataMapping = handleStyleDataMapping;
9
10
  exports.handleStyleFloat = handleStyleFloat;
10
- exports.handleStyleColor = handleStyleColor;
11
11
 
12
12
  var _isString2 = _interopRequireDefault(require("lodash/isString"));
13
13
 
@@ -7,8 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.computeMiter = computeMiter;
9
9
  exports.computeNormal = computeNormal;
10
- exports.direction = direction;
11
10
  exports.default = void 0;
11
+ exports.direction = direction;
12
12
 
13
13
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
14
 
@@ -7,8 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.computeMiter = computeMiter;
9
9
  exports.computeNormal = computeNormal;
10
- exports.direction = direction;
11
10
  exports.default = _default;
11
+ exports.direction = direction;
12
12
 
13
13
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
14
14
 
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.shapeText = shapeText;
7
6
  exports.getGlyphQuads = getGlyphQuads;
7
+ exports.shapeText = shapeText;
8
8
 
9
9
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
10
10
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antv/l7-layers",
3
- "version": "2.5.37-mini6",
3
+ "version": "2.5.37-mini7",
4
4
  "description": "L7's collection of built-in layers",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -25,9 +25,9 @@
25
25
  "dependencies": {
26
26
  "@antv/geo-coord": "^1.0.8",
27
27
  "@antv/async-hook": "^2.1.0",
28
- "@antv/l7-core": "^2.5.37-mini6",
29
- "@antv/l7-source": "^2.5.37-mini6",
30
- "@antv/l7-utils": "^2.5.37-mini6",
28
+ "@antv/l7-core": "^2.5.37-mini7",
29
+ "@antv/l7-source": "^2.5.37-mini7",
30
+ "@antv/l7-utils": "^2.5.37-mini7",
31
31
  "@babel/runtime": "^7.7.7",
32
32
  "@mapbox/martini": "^0.2.0",
33
33
  "@turf/meta": "^6.0.2",