@antv/l7-layers 2.6.30 → 2.6.34

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.
Files changed (77) hide show
  1. package/es/citybuliding/models/build.js +3 -2
  2. package/es/citybuliding/models/build.js.map +1 -1
  3. package/es/core/BaseLayer.d.ts +1 -1
  4. package/es/core/BaseLayer.js +6 -10
  5. package/es/core/BaseLayer.js.map +1 -1
  6. package/es/core/BaseModel.d.ts +1 -1
  7. package/es/core/BaseModel.js +4 -8
  8. package/es/core/BaseModel.js.map +1 -1
  9. package/es/core/interface.d.ts +2 -0
  10. package/es/core/interface.js.map +1 -1
  11. package/es/core/triangulation.d.ts +6 -0
  12. package/es/core/triangulation.js +47 -0
  13. package/es/core/triangulation.js.map +1 -1
  14. package/es/heatmap/models/heatmap.js +2 -2
  15. package/es/line/index.d.ts +1 -1
  16. package/es/line/index.js +2 -0
  17. package/es/line/index.js.map +1 -1
  18. package/es/line/models/index.d.ts +1 -1
  19. package/es/line/models/index.js +5 -1
  20. package/es/line/models/index.js.map +1 -1
  21. package/es/line/models/line.d.ts +0 -1
  22. package/es/line/models/line.js +5 -32
  23. package/es/line/models/line.js.map +1 -1
  24. package/es/line/models/simpleLine.d.ts +10 -0
  25. package/es/line/models/simpleLine.js +221 -0
  26. package/es/line/models/simpleLine.js.map +1 -0
  27. package/es/line/models/wall.d.ts +12 -0
  28. package/es/line/models/wall.js +311 -0
  29. package/es/line/models/wall.js.map +1 -0
  30. package/es/plugins/DataMappingPlugin.js +2 -2
  31. package/es/plugins/LayerAnimateStylePlugin.js +2 -2
  32. package/es/plugins/LightingPlugin.js +2 -2
  33. package/es/plugins/PixelPickingPlugin.js +24 -7
  34. package/es/plugins/PixelPickingPlugin.js.map +1 -1
  35. package/es/point/models/fill.js +4 -0
  36. package/es/point/models/fill.js.map +1 -1
  37. package/es/point/models/icon-font.js +1 -1
  38. package/es/point/models/image.js +8 -4
  39. package/es/point/models/image.js.map +1 -1
  40. package/es/raster/raster.js +2 -2
  41. package/es/utils/extrude_polyline.d.ts +13 -0
  42. package/es/utils/extrude_polyline.js +105 -3
  43. package/es/utils/extrude_polyline.js.map +1 -1
  44. package/lib/citybuliding/models/build.js +3 -2
  45. package/lib/citybuliding/models/build.js.map +1 -1
  46. package/lib/core/BaseLayer.js +6 -10
  47. package/lib/core/BaseLayer.js.map +1 -1
  48. package/lib/core/BaseModel.js +4 -8
  49. package/lib/core/BaseModel.js.map +1 -1
  50. package/lib/core/interface.js.map +1 -1
  51. package/lib/core/triangulation.js +49 -0
  52. package/lib/core/triangulation.js.map +1 -1
  53. package/lib/heatmap/models/heatmap.js +2 -2
  54. package/lib/line/index.js +2 -0
  55. package/lib/line/index.js.map +1 -1
  56. package/lib/line/models/index.js +7 -1
  57. package/lib/line/models/index.js.map +1 -1
  58. package/lib/line/models/line.js +5 -32
  59. package/lib/line/models/line.js.map +1 -1
  60. package/lib/line/models/simpleLine.js +237 -0
  61. package/lib/line/models/simpleLine.js.map +1 -0
  62. package/lib/line/models/wall.js +327 -0
  63. package/lib/line/models/wall.js.map +1 -0
  64. package/lib/plugins/DataMappingPlugin.js +2 -2
  65. package/lib/plugins/LayerAnimateStylePlugin.js +2 -2
  66. package/lib/plugins/LightingPlugin.js +2 -2
  67. package/lib/plugins/PixelPickingPlugin.js +24 -7
  68. package/lib/plugins/PixelPickingPlugin.js.map +1 -1
  69. package/lib/point/models/fill.js +4 -0
  70. package/lib/point/models/fill.js.map +1 -1
  71. package/lib/point/models/icon-font.js +1 -1
  72. package/lib/point/models/image.js +8 -4
  73. package/lib/point/models/image.js.map +1 -1
  74. package/lib/raster/raster.js +2 -2
  75. package/lib/utils/extrude_polyline.js +105 -3
  76. package/lib/utils/extrude_polyline.js.map +1 -1
  77. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/BaseModel.ts"],"names":["BlendType","gl","lazyInject","TYPES","rgb2arr","color","BlendTypes","BaseModel","IGlobalConfigService","IShaderModuleService","layer","rendererService","getContainer","get","IRendererService","styleAttributeService","IStyleAttributeService","mapService","IMapService","iconService","IIconService","fontService","IFontService","cameraService","ICameraService","layerService","ILayerService","registerBuiltinAttributes","startModelAnimate","createTexture2D","DATA_TEXTURE_WIDTH","rowCount","cellLength","cellProperties","cacheStyleProperties","thetaOffset","undefined","opacity","strokeOpacity","strokeWidth","stroke","offsets","stylePropertyesExist","hasThetaOffset","hasOpacity","hasStrokeOpacity","hasStrokeWidth","hasStroke","hasOffsets","dataTextureTest","getOESTextureFloat","dataTexture","data","Uint8ClampedArray","mag","NEAREST","min","width","height","options","isUpdate","clearLastCalRes","push","attr","count","isStaticColor","isOffsetStatic","strokeColor","length","d","i","cellData","cellPropertiesLayouts","layout","value","patchMod","encodeData","encodeDatalength","Math","ceil","totalLength","patchData","getLayerConfig","blend","Error","option","enable","duration","interval","trailLength","animateOption","setAnimateStartTime"],"mappings":"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","sourcesContent":["import {\n BlendType,\n gl,\n IAnimateOption,\n IAttribute,\n IBlendOptions,\n ICameraService,\n IElements,\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n IIconService,\n ILayer,\n ILayerConfig,\n ILayerModel,\n ILayerService,\n IMapService,\n IModel,\n IModelUniform,\n IRendererService,\n IShaderModuleService,\n IStyleAttributeService,\n ITexture2D,\n ITexture2DInitializationOptions,\n lazyInject,\n Triangulation,\n TYPES,\n} from '@antv/l7-core';\nimport { rgb2arr } from '@antv/l7-utils';\nimport { color } from 'd3-color';\nimport { isArray, isEqual, isFunction, isNumber, isString } from 'lodash';\nimport { BlendTypes } from '../utils/blend';\n\nexport type styleSingle =\n | number\n | string\n | [string, (single: any) => number]\n | [string, [number, number]];\nexport type styleOffset =\n | string\n | [number, number]\n | [string, (single: any) => number];\nexport type styleColor =\n | string\n | [string, (single: any) => string]\n | [string, [string, string]];\nexport interface IDataTextureFrame {\n data: number[];\n width: number;\n height: number;\n}\n\nexport interface ICellProperty {\n attr: string;\n count: number;\n}\n\nexport default class BaseModel<ChildLayerStyleOptions = {}>\n implements ILayerModel {\n public triangulation: Triangulation;\n\n // style texture data mapping\n public createTexture2D: (\n options: ITexture2DInitializationOptions,\n ) => ITexture2D;\n\n protected layer: ILayer;\n protected dataTexture: ITexture2D; // 用于数据传递的数据纹理\n protected DATA_TEXTURE_WIDTH: number; // 默认有多少列(宽度)\n protected rowCount: number; // 计算得到的当前数据纹理有多少行(高度)\n protected cacheStyleProperties: {\n // 记录存储上一次样式字段的值\n thetaOffset: styleSingle | undefined;\n opacity: styleSingle | undefined;\n strokeOpacity: styleSingle | undefined;\n strokeWidth: styleSingle | undefined;\n stroke: styleColor | undefined;\n offsets: styleOffset | undefined;\n };\n protected cellLength: number; // 单个 cell 的长度\n protected cellProperties: ICellProperty[]; // 需要进行数据映射的属性集合\n protected cellTypeLayout: number[];\n protected stylePropertyesExist: {\n // 记录 style 属性是否存在的中间变量\n hasThetaOffset: number;\n hasOpacity: number;\n hasStrokeOpacity: number;\n hasStrokeWidth: number;\n hasStroke: number;\n hasOffsets: number;\n };\n protected dataTextureTest: boolean;\n\n @lazyInject(TYPES.IGlobalConfigService)\n protected readonly configService: IGlobalConfigService;\n\n // @lazyInject(TYPES.IIconService)\n // protected readonly iconService: IIconService;\n\n // @lazyInject(TYPES.IFontService)\n // protected readonly fontService: IFontService;\n\n @lazyInject(TYPES.IShaderModuleService)\n protected readonly shaderModuleService: IShaderModuleService;\n\n protected rendererService: IRendererService;\n protected iconService: IIconService;\n protected fontService: IFontService;\n protected styleAttributeService: IStyleAttributeService;\n protected mapService: IMapService;\n protected cameraService: ICameraService;\n protected layerService: ILayerService;\n\n // style texture data mapping\n\n constructor(layer: ILayer) {\n this.layer = layer;\n this.rendererService = layer\n .getContainer()\n .get<IRendererService>(TYPES.IRendererService);\n this.styleAttributeService = layer\n .getContainer()\n .get<IStyleAttributeService>(TYPES.IStyleAttributeService);\n this.mapService = layer.getContainer().get<IMapService>(TYPES.IMapService);\n this.iconService = layer\n .getContainer()\n .get<IIconService>(TYPES.IIconService);\n this.fontService = layer\n .getContainer()\n .get<IFontService>(TYPES.IFontService);\n this.cameraService = layer\n .getContainer()\n .get<ICameraService>(TYPES.ICameraService);\n this.layerService = layer\n .getContainer()\n .get<ILayerService>(TYPES.ILayerService);\n\n // 注册 Attribute\n this.registerBuiltinAttributes();\n // 开启动画\n this.startModelAnimate();\n\n const { createTexture2D } = this.rendererService;\n this.createTexture2D = createTexture2D;\n this.DATA_TEXTURE_WIDTH = 1024; // 数据纹理固定宽度\n this.rowCount = 1;\n this.cellLength = 0;\n this.cellProperties = [];\n this.cacheStyleProperties = {\n thetaOffset: undefined,\n opacity: undefined,\n strokeOpacity: undefined,\n strokeWidth: undefined,\n stroke: undefined,\n offsets: undefined,\n };\n this.stylePropertyesExist = {\n hasThetaOffset: 0,\n hasOpacity: 0,\n hasStrokeOpacity: 0,\n hasStrokeWidth: 0,\n hasStroke: 0,\n hasOffsets: 0,\n };\n this.dataTextureTest = this.layerService.getOESTextureFloat();\n // 只有在不支持数据纹理的情况下进行赋值\n if (!this.dataTextureTest) {\n this.dataTexture = this.createTexture2D({\n data: new Uint8ClampedArray(4),\n mag: gl.NEAREST,\n min: gl.NEAREST,\n width: 1,\n height: 1,\n });\n }\n }\n\n // style datatexture mapping\n\n /**\n * 清除上一次的计算结果 - 全量清除\n */\n public clearLastCalRes() {\n this.cellProperties = []; // 清空上一次计算的需要进行数据映射的属性集合\n this.cellLength = 0; // 清空上一次计算的 cell 的长度\n this.stylePropertyesExist = {\n // 全量清空上一次是否需要对 style 属性进行数据映射的判断\n hasThetaOffset: 0,\n hasOpacity: 0,\n hasStrokeOpacity: 0,\n hasStrokeWidth: 0,\n hasStroke: 0,\n hasOffsets: 0,\n };\n }\n\n public getCellTypeLayout() {\n if (this.dataTextureTest) {\n return [\n // 0\n this.rowCount, // 数据纹理有几行\n this.DATA_TEXTURE_WIDTH, // 数据纹理有几列\n 0.0,\n 0.0,\n // 1\n this.stylePropertyesExist.hasOpacity, // cell 中是否存在 opacity\n this.stylePropertyesExist.hasStrokeOpacity, // cell 中是否存在 strokeOpacity\n this.stylePropertyesExist.hasStrokeWidth, // cell 中是否存在 strokeWidth\n this.stylePropertyesExist.hasStroke, // cell 中是否存在 stroke\n // 2\n this.stylePropertyesExist.hasOffsets, // cell 中是否存在 offsets\n this.stylePropertyesExist.hasThetaOffset, // cell 中是否存在 thetaOffset\n 0.0,\n 0.0,\n // 3\n 0.0,\n 0.0,\n 0.0,\n 1.0,\n ];\n } else {\n return [\n 1.0, // 数据纹理有几行\n 1.0, // 数据纹理有几列\n 0.0,\n 0.0,\n 0.0, // cell 中是否存在 opacity\n 0.0, // cell 中是否存在 strokeOpacity\n 0.0, // cell 中是否存在 strokeWidth\n 0.0, // cell 中是否存在 stroke\n 0.0, // cell 中是否存在 offsets\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n -1.0,\n ];\n }\n }\n\n /**\n * 判断数据纹理是否需要重新计算 - 根据传入的值进行判断\n * @param options\n * @returns\n */\n public dataTextureNeedUpdate(options: {\n // TODO: thetaOffset 目前只有 lineLayer/arc 使用\n thetaOffset?: styleSingle;\n opacity?: styleSingle;\n strokeOpacity?: styleSingle;\n strokeWidth?: styleSingle;\n stroke?: styleColor;\n offsets?: styleOffset;\n textOffset?: styleOffset;\n }): boolean {\n let isUpdate = false;\n if (!isEqual(options.thetaOffset, this.cacheStyleProperties.thetaOffset)) {\n isUpdate = true;\n this.cacheStyleProperties.thetaOffset = options.thetaOffset;\n }\n if (!isEqual(options.opacity, this.cacheStyleProperties.opacity)) {\n isUpdate = true;\n this.cacheStyleProperties.opacity = options.opacity;\n }\n if (\n !isEqual(options.strokeOpacity, this.cacheStyleProperties.strokeOpacity)\n ) {\n isUpdate = true;\n this.cacheStyleProperties.strokeOpacity = options.strokeOpacity;\n }\n if (!isEqual(options.strokeWidth, this.cacheStyleProperties.strokeWidth)) {\n isUpdate = true;\n this.cacheStyleProperties.strokeWidth = options.strokeWidth;\n }\n if (!isEqual(options.stroke, this.cacheStyleProperties.stroke)) {\n isUpdate = true;\n this.cacheStyleProperties.stroke = options.stroke;\n }\n if (!isEqual(options.offsets, this.cacheStyleProperties.offsets)) {\n isUpdate = true;\n this.cacheStyleProperties.offsets = options.offsets;\n }\n if (this.dataTexture === undefined) {\n isUpdate = true;\n }\n return isUpdate;\n }\n /**\n * 判断当前的样式中哪些是需要进行数据映射的,哪些是常量,同时计算用于构建数据纹理的一些中间变量\n * @param options\n */\n public judgeStyleAttributes(options: {\n // TODO: 目前 thetaOffset 只有 lineLayer/arc 使用\n thetaOffset?: styleSingle;\n opacity?: styleSingle;\n strokeOpacity?: styleSingle;\n strokeWidth?: styleSingle;\n stroke?: styleColor;\n offsets?: styleOffset;\n }) {\n this.clearLastCalRes(); // 清除上一次的计算结果 - 全量清除\n\n if (options.opacity !== undefined && !isNumber(options.opacity)) {\n // 数据映射\n this.cellProperties.push({ attr: 'opacity', count: 1 });\n this.stylePropertyesExist.hasOpacity = 1;\n this.cellLength += 1;\n }\n\n if (\n options.strokeOpacity !== undefined &&\n !isNumber(options.strokeOpacity)\n ) {\n // 数据映射\n this.cellProperties.push({ attr: 'strokeOpacity', count: 1 });\n this.stylePropertyesExist.hasStrokeOpacity = 1;\n this.cellLength += 1;\n }\n\n if (options.strokeWidth !== undefined && !isNumber(options.strokeWidth)) {\n // 数据映射\n this.cellProperties.push({ attr: 'strokeWidth', count: 1 });\n this.stylePropertyesExist.hasStrokeWidth = 1;\n this.cellLength += 1;\n }\n\n if (options.stroke !== undefined && !this.isStaticColor(options.stroke)) {\n // 数据映射\n this.cellProperties.push({ attr: 'stroke', count: 4 });\n this.stylePropertyesExist.hasStroke = 1;\n this.cellLength += 4;\n }\n\n if (\n options.offsets !== undefined &&\n !this.isOffsetStatic(options.offsets)\n ) {\n // 数据映射\n this.cellProperties.push({ attr: 'offsets', count: 2 });\n this.stylePropertyesExist.hasOffsets = 1;\n this.cellLength += 2;\n }\n\n if (options.thetaOffset !== undefined && !isNumber(options.thetaOffset)) {\n // 数据映射\n this.cellProperties.push({ attr: 'thetaOffset', count: 1 });\n this.stylePropertyesExist.hasThetaOffset = 1;\n this.cellLength += 1;\n }\n // console.log('this.cellLength', this.cellLength)\n }\n\n /**\n * 判断变量 stroke 是否是常量值\n * @param stroke\n * @returns\n */\n public isStaticColor(stroke: styleColor): boolean {\n if (isString(stroke)) {\n if (color(stroke)) {\n return true;\n } else {\n return false;\n }\n }\n return false;\n }\n /**\n * 获取 stroke 颜色并做兼容处理\n * @param stroke\n * @returns\n */\n public getStrokeColor(stroke: styleColor) {\n if (this.isStaticColor(stroke)) {\n const strokeColor = rgb2arr(stroke as string);\n strokeColor[0] = strokeColor[0] ? strokeColor[0] : 0;\n strokeColor[1] = strokeColor[1] ? strokeColor[1] : 0;\n strokeColor[2] = strokeColor[2] ? strokeColor[2] : 0;\n strokeColor[3] = strokeColor[3] ? strokeColor[3] : 0;\n return strokeColor;\n } else {\n return [0, 0, 0, 0];\n }\n }\n\n /**\n * 判断 offsets 是否是常量\n * @param offsets\n * @returns\n */\n public isOffsetStatic(offsets: styleOffset) {\n if (\n isArray(offsets) &&\n offsets.length === 2 &&\n isNumber(offsets[0]) &&\n isNumber(offsets[1])\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * 补空位\n * @param d\n * @param count\n */\n public patchMod(d: number[], count: number) {\n for (let i = 0; i < count; i++) {\n d.push(-1);\n }\n }\n\n /**\n * 根据映射的数据字段往推入数据\n * @param d\n * @param cellData\n * @param cellPropertiesLayouts\n */\n public patchData(\n d: number[],\n cellData: IEncodeFeature,\n cellPropertiesLayouts: ICellProperty[],\n ) {\n for (const layout of cellPropertiesLayouts) {\n const { attr, count } = layout;\n\n const value = cellData[attr];\n if (value !== undefined) {\n // 数据中存在该属性\n if (attr === 'stroke') {\n d.push(...rgb2arr(value));\n } else if (attr === 'offsets') {\n if (this.isOffsetStatic(value)) {\n d.push(-value[0], value[1]);\n } else {\n d.push(0, 0);\n }\n } else {\n d.push(isNumber(value) ? value : 1.0);\n }\n } else {\n // 若不存在时则补位\n this.patchMod(d, count);\n }\n }\n }\n\n /**\n * 计算推入数据纹理的数据\n * @param cellLength\n * @param encodeData\n * @param cellPropertiesLayouts\n * @returns\n */\n public calDataFrame(\n cellLength: number,\n encodeData: IEncodeFeature[],\n cellPropertiesLayouts: ICellProperty[],\n ): IDataTextureFrame {\n const encodeDatalength = encodeData.length;\n const rowCount = Math.ceil(\n (encodeDatalength * cellLength) / this.DATA_TEXTURE_WIDTH,\n ); // 有多少行\n\n const totalLength = rowCount * this.DATA_TEXTURE_WIDTH;\n const d: number[] = [];\n for (let i = 0; i < encodeDatalength; i++) {\n // 根据 encodeData 数据推入数据\n const cellData = encodeData[i];\n this.patchData(d, cellData, cellPropertiesLayouts);\n }\n for (let i = d.length; i < totalLength; i++) {\n // 每行不足的部分用 -1 补足(数据纹理时 width * height 的矩形数据集合)\n d.push(-1);\n }\n // console.log('data', d)\n return { data: d, width: this.DATA_TEXTURE_WIDTH, height: rowCount };\n }\n\n // style datatexture mapping\n\n public getBlend(): IBlendOptions {\n const { blend = 'normal' } = this.layer.getLayerConfig();\n return BlendTypes[BlendType[blend]] as IBlendOptions;\n }\n public getDefaultStyle(): unknown {\n return {};\n }\n public getUninforms(): IModelUniform {\n throw new Error('Method not implemented.');\n }\n\n public getAnimateUniforms(): IModelUniform {\n return {};\n }\n\n public needUpdate(): boolean {\n return false;\n }\n public buildModels(): IModel[] {\n throw new Error('Method not implemented.');\n }\n public initModels(): IModel[] {\n throw new Error('Method not implemented.');\n }\n public clearModels() {\n return;\n }\n public getAttribute(): {\n attributes: {\n [attributeName: string]: IAttribute;\n };\n elements: IElements;\n } {\n throw new Error('Method not implemented.');\n }\n public render() {\n throw new Error('Method not implemented.');\n }\n protected registerBuiltinAttributes() {\n throw new Error('Method not implemented.');\n }\n protected animateOption2Array(option: IAnimateOption): number[] {\n return [\n option.enable ? 0 : 1.0,\n option.duration || 4.0,\n option.interval || 0.2,\n option.trailLength || 0.1,\n ];\n }\n protected startModelAnimate() {\n const { animateOption } = this.layer.getLayerConfig() as ILayerConfig;\n if (animateOption.enable) {\n this.layer.setAnimateStartTime();\n }\n }\n}\n"],"file":"BaseModel.js"}
1
+ {"version":3,"sources":["../../src/core/BaseModel.ts"],"names":["BlendType","gl","lazyInject","TYPES","rgb2arr","color","BlendTypes","BaseModel","IGlobalConfigService","layer","rendererService","getContainer","get","IRendererService","shaderModuleService","IShaderModuleService","styleAttributeService","IStyleAttributeService","mapService","IMapService","iconService","IIconService","fontService","IFontService","cameraService","ICameraService","layerService","ILayerService","registerBuiltinAttributes","startModelAnimate","createTexture2D","DATA_TEXTURE_WIDTH","rowCount","cellLength","cellProperties","cacheStyleProperties","thetaOffset","undefined","opacity","strokeOpacity","strokeWidth","stroke","offsets","stylePropertyesExist","hasThetaOffset","hasOpacity","hasStrokeOpacity","hasStrokeWidth","hasStroke","hasOffsets","dataTextureTest","getOESTextureFloat","dataTexture","data","Uint8ClampedArray","mag","NEAREST","min","width","height","options","isUpdate","clearLastCalRes","push","attr","count","isStaticColor","isOffsetStatic","strokeColor","length","d","i","cellData","cellPropertiesLayouts","layout","value","patchMod","encodeData","encodeDatalength","Math","ceil","totalLength","patchData","getLayerConfig","blend","Error","option","enable","duration","interval","trailLength","animateOption","setAnimateStartTime"],"mappings":"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","sourcesContent":["import {\n BlendType,\n gl,\n IAnimateOption,\n IAttribute,\n IBlendOptions,\n ICameraService,\n IElements,\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n IIconService,\n ILayer,\n ILayerConfig,\n ILayerModel,\n ILayerService,\n IMapService,\n IModel,\n IModelUniform,\n IRendererService,\n IShaderModuleService,\n IStyleAttributeService,\n ITexture2D,\n ITexture2DInitializationOptions,\n lazyInject,\n Triangulation,\n TYPES,\n} from '@antv/l7-core';\nimport { rgb2arr } from '@antv/l7-utils';\nimport { color } from 'd3-color';\nimport { isArray, isEqual, isFunction, isNumber, isString } from 'lodash';\nimport { BlendTypes } from '../utils/blend';\n\nexport type styleSingle =\n | number\n | string\n | [string, (single: any) => number]\n | [string, [number, number]];\nexport type styleOffset =\n | string\n | [number, number]\n | [string, (single: any) => number];\nexport type styleColor =\n | string\n | [string, (single: any) => string]\n | [string, [string, string]];\nexport interface IDataTextureFrame {\n data: number[];\n width: number;\n height: number;\n}\n\nexport interface ICellProperty {\n attr: string;\n count: number;\n}\n\nexport default class BaseModel<ChildLayerStyleOptions = {}>\n implements ILayerModel {\n public triangulation: Triangulation;\n\n // style texture data mapping\n public createTexture2D: (\n options: ITexture2DInitializationOptions,\n ) => ITexture2D;\n\n protected layer: ILayer;\n protected dataTexture: ITexture2D; // 用于数据传递的数据纹理\n protected DATA_TEXTURE_WIDTH: number; // 默认有多少列(宽度)\n protected rowCount: number; // 计算得到的当前数据纹理有多少行(高度)\n protected cacheStyleProperties: {\n // 记录存储上一次样式字段的值\n thetaOffset: styleSingle | undefined;\n opacity: styleSingle | undefined;\n strokeOpacity: styleSingle | undefined;\n strokeWidth: styleSingle | undefined;\n stroke: styleColor | undefined;\n offsets: styleOffset | undefined;\n };\n protected cellLength: number; // 单个 cell 的长度\n protected cellProperties: ICellProperty[]; // 需要进行数据映射的属性集合\n protected cellTypeLayout: number[];\n protected stylePropertyesExist: {\n // 记录 style 属性是否存在的中间变量\n hasThetaOffset: number;\n hasOpacity: number;\n hasStrokeOpacity: number;\n hasStrokeWidth: number;\n hasStroke: number;\n hasOffsets: number;\n };\n protected dataTextureTest: boolean;\n\n @lazyInject(TYPES.IGlobalConfigService)\n protected readonly configService: IGlobalConfigService;\n\n // @lazyInject(TYPES.IIconService)\n // protected readonly iconService: IIconService;\n\n // @lazyInject(TYPES.IFontService)\n // protected readonly fontService: IFontService;\n\n // @lazyInject(TYPES.IShaderModuleService)\n protected shaderModuleService: IShaderModuleService;\n\n protected rendererService: IRendererService;\n protected iconService: IIconService;\n protected fontService: IFontService;\n protected styleAttributeService: IStyleAttributeService;\n protected mapService: IMapService;\n protected cameraService: ICameraService;\n protected layerService: ILayerService;\n\n // style texture data mapping\n\n constructor(layer: ILayer) {\n this.layer = layer;\n this.rendererService = layer\n .getContainer()\n .get<IRendererService>(TYPES.IRendererService);\n this.shaderModuleService = layer\n .getContainer()\n .get<IShaderModuleService>(TYPES.IShaderModuleService);\n\n this.styleAttributeService = layer\n .getContainer()\n .get<IStyleAttributeService>(TYPES.IStyleAttributeService);\n this.mapService = layer.getContainer().get<IMapService>(TYPES.IMapService);\n this.iconService = layer\n .getContainer()\n .get<IIconService>(TYPES.IIconService);\n this.fontService = layer\n .getContainer()\n .get<IFontService>(TYPES.IFontService);\n this.cameraService = layer\n .getContainer()\n .get<ICameraService>(TYPES.ICameraService);\n this.layerService = layer\n .getContainer()\n .get<ILayerService>(TYPES.ILayerService);\n\n // 注册 Attribute\n this.registerBuiltinAttributes();\n // 开启动画\n this.startModelAnimate();\n\n const { createTexture2D } = this.rendererService;\n this.createTexture2D = createTexture2D;\n this.DATA_TEXTURE_WIDTH = 1024; // 数据纹理固定宽度\n this.rowCount = 1;\n this.cellLength = 0;\n this.cellProperties = [];\n this.cacheStyleProperties = {\n thetaOffset: undefined,\n opacity: undefined,\n strokeOpacity: undefined,\n strokeWidth: undefined,\n stroke: undefined,\n offsets: undefined,\n };\n this.stylePropertyesExist = {\n hasThetaOffset: 0,\n hasOpacity: 0,\n hasStrokeOpacity: 0,\n hasStrokeWidth: 0,\n hasStroke: 0,\n hasOffsets: 0,\n };\n this.dataTextureTest = this.layerService.getOESTextureFloat();\n // 只有在不支持数据纹理的情况下进行赋值\n if (!this.dataTextureTest) {\n this.dataTexture = this.createTexture2D({\n data: new Uint8ClampedArray(4),\n mag: gl.NEAREST,\n min: gl.NEAREST,\n width: 1,\n height: 1,\n });\n }\n }\n\n // style datatexture mapping\n\n /**\n * 清除上一次的计算结果 - 全量清除\n */\n public clearLastCalRes() {\n this.cellProperties = []; // 清空上一次计算的需要进行数据映射的属性集合\n this.cellLength = 0; // 清空上一次计算的 cell 的长度\n this.stylePropertyesExist = {\n // 全量清空上一次是否需要对 style 属性进行数据映射的判断\n hasThetaOffset: 0,\n hasOpacity: 0,\n hasStrokeOpacity: 0,\n hasStrokeWidth: 0,\n hasStroke: 0,\n hasOffsets: 0,\n };\n }\n\n public getCellTypeLayout() {\n if (this.dataTextureTest) {\n return [\n // 0\n this.rowCount, // 数据纹理有几行\n this.DATA_TEXTURE_WIDTH, // 数据纹理有几列\n 0.0,\n 0.0,\n // 1\n this.stylePropertyesExist.hasOpacity, // cell 中是否存在 opacity\n this.stylePropertyesExist.hasStrokeOpacity, // cell 中是否存在 strokeOpacity\n this.stylePropertyesExist.hasStrokeWidth, // cell 中是否存在 strokeWidth\n this.stylePropertyesExist.hasStroke, // cell 中是否存在 stroke\n // 2\n this.stylePropertyesExist.hasOffsets, // cell 中是否存在 offsets\n this.stylePropertyesExist.hasThetaOffset, // cell 中是否存在 thetaOffset\n 0.0,\n 0.0,\n // 3\n 0.0,\n 0.0,\n 0.0,\n 1.0,\n ];\n } else {\n return [\n 1.0, // 数据纹理有几行\n 1.0, // 数据纹理有几列\n 0.0,\n 0.0,\n 0.0, // cell 中是否存在 opacity\n 0.0, // cell 中是否存在 strokeOpacity\n 0.0, // cell 中是否存在 strokeWidth\n 0.0, // cell 中是否存在 stroke\n 0.0, // cell 中是否存在 offsets\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n -1.0,\n ];\n }\n }\n\n /**\n * 判断数据纹理是否需要重新计算 - 根据传入的值进行判断\n * @param options\n * @returns\n */\n public dataTextureNeedUpdate(options: {\n // TODO: thetaOffset 目前只有 lineLayer/arc 使用\n thetaOffset?: styleSingle;\n opacity?: styleSingle;\n strokeOpacity?: styleSingle;\n strokeWidth?: styleSingle;\n stroke?: styleColor;\n offsets?: styleOffset;\n textOffset?: styleOffset;\n }): boolean {\n let isUpdate = false;\n if (!isEqual(options.thetaOffset, this.cacheStyleProperties.thetaOffset)) {\n isUpdate = true;\n this.cacheStyleProperties.thetaOffset = options.thetaOffset;\n }\n if (!isEqual(options.opacity, this.cacheStyleProperties.opacity)) {\n isUpdate = true;\n this.cacheStyleProperties.opacity = options.opacity;\n }\n if (\n !isEqual(options.strokeOpacity, this.cacheStyleProperties.strokeOpacity)\n ) {\n isUpdate = true;\n this.cacheStyleProperties.strokeOpacity = options.strokeOpacity;\n }\n if (!isEqual(options.strokeWidth, this.cacheStyleProperties.strokeWidth)) {\n isUpdate = true;\n this.cacheStyleProperties.strokeWidth = options.strokeWidth;\n }\n if (!isEqual(options.stroke, this.cacheStyleProperties.stroke)) {\n isUpdate = true;\n this.cacheStyleProperties.stroke = options.stroke;\n }\n if (!isEqual(options.offsets, this.cacheStyleProperties.offsets)) {\n isUpdate = true;\n this.cacheStyleProperties.offsets = options.offsets;\n }\n if (this.dataTexture === undefined) {\n isUpdate = true;\n }\n return isUpdate;\n }\n /**\n * 判断当前的样式中哪些是需要进行数据映射的,哪些是常量,同时计算用于构建数据纹理的一些中间变量\n * @param options\n */\n public judgeStyleAttributes(options: {\n // TODO: 目前 thetaOffset 只有 lineLayer/arc 使用\n thetaOffset?: styleSingle;\n opacity?: styleSingle;\n strokeOpacity?: styleSingle;\n strokeWidth?: styleSingle;\n stroke?: styleColor;\n offsets?: styleOffset;\n }) {\n this.clearLastCalRes(); // 清除上一次的计算结果 - 全量清除\n\n if (options.opacity !== undefined && !isNumber(options.opacity)) {\n // 数据映射\n this.cellProperties.push({ attr: 'opacity', count: 1 });\n this.stylePropertyesExist.hasOpacity = 1;\n this.cellLength += 1;\n }\n\n if (\n options.strokeOpacity !== undefined &&\n !isNumber(options.strokeOpacity)\n ) {\n // 数据映射\n this.cellProperties.push({ attr: 'strokeOpacity', count: 1 });\n this.stylePropertyesExist.hasStrokeOpacity = 1;\n this.cellLength += 1;\n }\n\n if (options.strokeWidth !== undefined && !isNumber(options.strokeWidth)) {\n // 数据映射\n this.cellProperties.push({ attr: 'strokeWidth', count: 1 });\n this.stylePropertyesExist.hasStrokeWidth = 1;\n this.cellLength += 1;\n }\n\n if (options.stroke !== undefined && !this.isStaticColor(options.stroke)) {\n // 数据映射\n this.cellProperties.push({ attr: 'stroke', count: 4 });\n this.stylePropertyesExist.hasStroke = 1;\n this.cellLength += 4;\n }\n\n if (\n options.offsets !== undefined &&\n !this.isOffsetStatic(options.offsets)\n ) {\n // 数据映射\n this.cellProperties.push({ attr: 'offsets', count: 2 });\n this.stylePropertyesExist.hasOffsets = 1;\n this.cellLength += 2;\n }\n\n if (options.thetaOffset !== undefined && !isNumber(options.thetaOffset)) {\n // 数据映射\n this.cellProperties.push({ attr: 'thetaOffset', count: 1 });\n this.stylePropertyesExist.hasThetaOffset = 1;\n this.cellLength += 1;\n }\n // console.log('this.cellLength', this.cellLength)\n }\n\n /**\n * 判断变量 stroke 是否是常量值\n * @param stroke\n * @returns\n */\n public isStaticColor(stroke: styleColor): boolean {\n if (isString(stroke)) {\n if (color(stroke)) {\n return true;\n } else {\n return false;\n }\n }\n return false;\n }\n /**\n * 获取 stroke 颜色并做兼容处理\n * @param stroke\n * @returns\n */\n public getStrokeColor(stroke: styleColor) {\n if (this.isStaticColor(stroke)) {\n const strokeColor = rgb2arr(stroke as string);\n strokeColor[0] = strokeColor[0] ? strokeColor[0] : 0;\n strokeColor[1] = strokeColor[1] ? strokeColor[1] : 0;\n strokeColor[2] = strokeColor[2] ? strokeColor[2] : 0;\n strokeColor[3] = strokeColor[3] ? strokeColor[3] : 0;\n return strokeColor;\n } else {\n return [0, 0, 0, 0];\n }\n }\n\n /**\n * 判断 offsets 是否是常量\n * @param offsets\n * @returns\n */\n public isOffsetStatic(offsets: styleOffset) {\n if (\n isArray(offsets) &&\n offsets.length === 2 &&\n isNumber(offsets[0]) &&\n isNumber(offsets[1])\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * 补空位\n * @param d\n * @param count\n */\n public patchMod(d: number[], count: number) {\n for (let i = 0; i < count; i++) {\n d.push(-1);\n }\n }\n\n /**\n * 根据映射的数据字段往推入数据\n * @param d\n * @param cellData\n * @param cellPropertiesLayouts\n */\n public patchData(\n d: number[],\n cellData: IEncodeFeature,\n cellPropertiesLayouts: ICellProperty[],\n ) {\n for (const layout of cellPropertiesLayouts) {\n const { attr, count } = layout;\n\n const value = cellData[attr];\n if (value !== undefined) {\n // 数据中存在该属性\n if (attr === 'stroke') {\n d.push(...rgb2arr(value));\n } else if (attr === 'offsets') {\n if (this.isOffsetStatic(value)) {\n d.push(-value[0], value[1]);\n } else {\n d.push(0, 0);\n }\n } else {\n d.push(isNumber(value) ? value : 1.0);\n }\n } else {\n // 若不存在时则补位\n this.patchMod(d, count);\n }\n }\n }\n\n /**\n * 计算推入数据纹理的数据\n * @param cellLength\n * @param encodeData\n * @param cellPropertiesLayouts\n * @returns\n */\n public calDataFrame(\n cellLength: number,\n encodeData: IEncodeFeature[],\n cellPropertiesLayouts: ICellProperty[],\n ): IDataTextureFrame {\n const encodeDatalength = encodeData.length;\n const rowCount = Math.ceil(\n (encodeDatalength * cellLength) / this.DATA_TEXTURE_WIDTH,\n ); // 有多少行\n\n const totalLength = rowCount * this.DATA_TEXTURE_WIDTH;\n const d: number[] = [];\n for (let i = 0; i < encodeDatalength; i++) {\n // 根据 encodeData 数据推入数据\n const cellData = encodeData[i];\n this.patchData(d, cellData, cellPropertiesLayouts);\n }\n for (let i = d.length; i < totalLength; i++) {\n // 每行不足的部分用 -1 补足(数据纹理时 width * height 的矩形数据集合)\n d.push(-1);\n }\n // console.log('data', d)\n return { data: d, width: this.DATA_TEXTURE_WIDTH, height: rowCount };\n }\n\n // style datatexture mapping\n\n public getBlend(): IBlendOptions {\n const { blend = 'normal' } = this.layer.getLayerConfig();\n return BlendTypes[BlendType[blend]] as IBlendOptions;\n }\n public getDefaultStyle(): unknown {\n return {};\n }\n public getUninforms(): IModelUniform {\n throw new Error('Method not implemented.');\n }\n\n public getAnimateUniforms(): IModelUniform {\n return {};\n }\n\n public needUpdate(): boolean {\n return false;\n }\n public buildModels(): IModel[] {\n throw new Error('Method not implemented.');\n }\n public initModels(): IModel[] {\n throw new Error('Method not implemented.');\n }\n public clearModels() {\n return;\n }\n public getAttribute(): {\n attributes: {\n [attributeName: string]: IAttribute;\n };\n elements: IElements;\n } {\n throw new Error('Method not implemented.');\n }\n public render() {\n throw new Error('Method not implemented.');\n }\n protected registerBuiltinAttributes() {\n throw new Error('Method not implemented.');\n }\n protected animateOption2Array(option: IAnimateOption): number[] {\n return [\n option.enable ? 0 : 1.0,\n option.duration || 4.0,\n option.interval || 0.2,\n option.trailLength || 0.1,\n ];\n }\n protected startModelAnimate() {\n const { animateOption } = this.layer.getLayerConfig() as ILayerConfig;\n if (animateOption.enable) {\n this.layer.setAnimateStartTime();\n }\n }\n}\n"],"file":"BaseModel.js"}
@@ -11,6 +11,7 @@ export interface ILineLayerStyleOptions {
11
11
  forward?: boolean;
12
12
  lineTexture?: boolean;
13
13
  iconStep?: number;
14
+ iconStepCount?: number;
14
15
  textureBlend?: string;
15
16
  sourceColor?: string;
16
17
  targetColor?: string;
@@ -19,4 +20,5 @@ export interface ILineLayerStyleOptions {
19
20
  vertexHeightScale?: number;
20
21
  borderWidth?: number;
21
22
  borderColor?: string;
23
+ heightfixed?: boolean;
22
24
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/interface.ts"],"names":["lineStyleType"],"mappings":"AACA,WAAYA,aAAZ;;WAAYA,a;AAAAA,EAAAA,a,CAAAA,a;AAAAA,EAAAA,a,CAAAA,a;GAAAA,a,KAAAA,a","sourcesContent":["import { styleSingle } from '../core/BaseModel';\nexport enum lineStyleType {\n 'solid' = 0.0,\n 'dash' = 1.0,\n}\n\nexport interface ILineLayerStyleOptions {\n opacity: styleSingle;\n lineType?: keyof typeof lineStyleType; // 可选参数、线类型(all - dash/solid)\n dashArray?: [number, number]; // 可选参数、虚线间隔\n segmentNumber?: number;\n\n forward?: boolean; // 可选参数、是否反向(arcLine)\n lineTexture?: boolean; // 可选参数、是否开启纹理贴图功能(all)\n iconStep?: number; // 可选参数、纹理贴图步长(all)\n textureBlend?: string; // 可选参数、供给纹理贴图使用(all)\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n thetaOffset?: number; // 可选参数、设置弧线的偏移量\n\n globalArcHeight?: number; // 可选参数、地球模式下 3D 弧线的高度\n vertexHeightScale?: number; // 可选参数、lineLayer vertex height scale\n\n borderWidth?: number; // 可选参数 线边框宽度\n borderColor?: string; // 可选参数 线边框颜色\n}\n"],"file":"interface.js"}
1
+ {"version":3,"sources":["../../src/core/interface.ts"],"names":["lineStyleType"],"mappings":"AACA,WAAYA,aAAZ;;WAAYA,a;AAAAA,EAAAA,a,CAAAA,a;AAAAA,EAAAA,a,CAAAA,a;GAAAA,a,KAAAA,a","sourcesContent":["import { styleSingle } from '../core/BaseModel';\nexport enum lineStyleType {\n 'solid' = 0.0,\n 'dash' = 1.0,\n}\n\nexport interface ILineLayerStyleOptions {\n opacity: styleSingle;\n lineType?: keyof typeof lineStyleType; // 可选参数、线类型(all - dash/solid)\n dashArray?: [number, number]; // 可选参数、虚线间隔\n segmentNumber?: number;\n\n forward?: boolean; // 可选参数、是否反向(arcLine)\n lineTexture?: boolean; // 可选参数、是否开启纹理贴图功能(all)\n iconStep?: number; // 可选参数、纹理贴图步长(all)\n iconStepCount?: number; // 可选参数、纹理贴图间隔\n textureBlend?: string; // 可选参数、供给纹理贴图使用(all)\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n thetaOffset?: number; // 可选参数、设置弧线的偏移量\n\n globalArcHeight?: number; // 可选参数、地球模式下 3D 弧线的高度\n vertexHeightScale?: number; // 可选参数、lineLayer vertex height scale\n\n borderWidth?: number; // 可选参数 线边框宽度\n borderColor?: string; // 可选参数 线边框颜色\n\n heightfixed?: boolean; // 可选参数 高度是否固定\n}\n"],"file":"interface.js"}
@@ -46,6 +46,12 @@ export declare function LineTriangulation(feature: IEncodeFeature): {
46
46
  normals: number[];
47
47
  size: number;
48
48
  };
49
+ export declare function SimpleLineTriangulation(feature: IEncodeFeature): {
50
+ vertices: number[];
51
+ indices: number[];
52
+ normals: number[];
53
+ size: number;
54
+ };
49
55
  export declare function polygonTriangulation(feature: IEncodeFeature): {
50
56
  indices: number[];
51
57
  vertices: number[];
@@ -96,6 +96,53 @@ export function LineTriangulation(feature) {
96
96
  size: 6
97
97
  };
98
98
  }
99
+ export function SimpleLineTriangulation(feature) {
100
+ var coordinates = feature.coordinates,
101
+ originCoordinates = feature.originCoordinates,
102
+ version = feature.version;
103
+ var line = new ExtrudePolyline({
104
+ dash: true,
105
+ join: 'bevel'
106
+ });
107
+
108
+ if (version === 'GAODE2.x') {
109
+ var path1 = coordinates;
110
+
111
+ if (!Array.isArray(path1[0][0])) {
112
+ path1 = [coordinates];
113
+ }
114
+
115
+ var path2 = originCoordinates;
116
+
117
+ if (!Array.isArray(path2[0][0])) {
118
+ path2 = [originCoordinates];
119
+ }
120
+
121
+ for (var i = 0; i < path1.length; i++) {
122
+ var item1 = path1[i];
123
+ var item2 = path2[i];
124
+ line.simpleExtrude_gaode2(item1, item2);
125
+ }
126
+ } else {
127
+ var path = coordinates;
128
+
129
+ if (!Array.isArray(path[0][0])) {
130
+ path = [coordinates];
131
+ }
132
+
133
+ path.forEach(function (item) {
134
+ line.simpleExtrude(item);
135
+ });
136
+ }
137
+
138
+ var linebuffer = line.complex;
139
+ return {
140
+ vertices: linebuffer.positions,
141
+ indices: linebuffer.indices,
142
+ normals: linebuffer.normals,
143
+ size: 6
144
+ };
145
+ }
99
146
  export function polygonTriangulation(feature) {
100
147
  var coordinates = feature.coordinates;
101
148
  var flattengeo = earcut.flatten(coordinates);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/triangulation.ts"],"names":["lngLatToMeters","earcut","vec3","EARTH_RADIUS","EARTH_RADIUS_OUTER","EARTH_SEGMENTS","lglt2xyz","primitiveSphere","ExtrudePolyline","calculateCentroid","calculatePointsCenterAndRadius","extrudePolygon","extrude_PolygonNormal","fillPolygon","geometryShape","GeometryCache","PointFillTriangulation","feature","coordinates","vertices","indices","size","length","GlobelPointFillTriangulation","xyz","PointExtrudeTriangulation","shape","getGeometry","positions","index","normals","PointImageTriangulation","LineTriangulation","originCoordinates","version","line","dash","join","path1","Array","isArray","path2","i","item1","item2","extrude_gaode2","path","forEach","item","extrude","linebuffer","complex","polygonTriangulation","flattengeo","flatten","dimensions","holes","polygonTriangulationWithCenter","getVerticesWithCenter","verticesWithCenter","center","radius","lng","lat","push","PolygonExtrudeTriangulation","HeatmapGridTriangulation","getHeatmapGeometry","RasterImageTriangulation","indexs","LineArcTriangulation","segmentNumber","segNum","indexArray","map","v","HeatmapTriangulation","dir","addDir","dir1","dir2","dir3","needFlat","cylinder","geometry","computeVertexNormals","dim","Float32Array","vA","vB","vC","cb","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","segments","positionsArr","indicesArr","normalArr","earthOuterTriangulation"],"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 {\n calculateCentroid,\n calculatePointsCenterAndRadius,\n} 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\n// TODO:构建几何图形(带有中心点和大小)\nexport function polygonTriangulationWithCenter(feature: IEncodeFeature) {\n const { coordinates } = feature;\n const flattengeo = earcut.flatten(coordinates as number[][][]);\n const { vertices, dimensions, holes } = flattengeo;\n\n return {\n indices: earcut(vertices, holes, dimensions),\n vertices: getVerticesWithCenter(vertices),\n size: dimensions + 4,\n };\n}\n\nfunction getVerticesWithCenter(vertices: number[]) {\n const verticesWithCenter = [];\n const { center, radius } = calculatePointsCenterAndRadius(vertices);\n for (let i = 0; i < vertices.length; i += 2) {\n const lng = vertices[i];\n const lat = vertices[i + 1];\n verticesWithCenter.push(lng, lat, 0, ...center, radius);\n }\n return verticesWithCenter;\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":["lngLatToMeters","earcut","vec3","EARTH_RADIUS","EARTH_RADIUS_OUTER","EARTH_SEGMENTS","lglt2xyz","primitiveSphere","ExtrudePolyline","calculateCentroid","calculatePointsCenterAndRadius","extrudePolygon","extrude_PolygonNormal","fillPolygon","geometryShape","GeometryCache","PointFillTriangulation","feature","coordinates","vertices","indices","size","length","GlobelPointFillTriangulation","xyz","PointExtrudeTriangulation","shape","getGeometry","positions","index","normals","PointImageTriangulation","LineTriangulation","originCoordinates","version","line","dash","join","path1","Array","isArray","path2","i","item1","item2","extrude_gaode2","path","forEach","item","extrude","linebuffer","complex","SimpleLineTriangulation","simpleExtrude_gaode2","simpleExtrude","polygonTriangulation","flattengeo","flatten","dimensions","holes","polygonTriangulationWithCenter","getVerticesWithCenter","verticesWithCenter","center","radius","lng","lat","push","PolygonExtrudeTriangulation","HeatmapGridTriangulation","getHeatmapGeometry","RasterImageTriangulation","indexs","LineArcTriangulation","segmentNumber","segNum","indexArray","map","v","HeatmapTriangulation","dir","addDir","dir1","dir2","dir3","needFlat","cylinder","geometry","computeVertexNormals","dim","Float32Array","vA","vB","vC","cb","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","segments","positionsArr","indicesArr","normalArr","earthOuterTriangulation"],"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 {\n calculateCentroid,\n calculatePointsCenterAndRadius,\n} 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 SimpleLineTriangulation(feature: IEncodeFeature) {\n const { coordinates, originCoordinates, version } = feature;\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.simpleExtrude_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.simpleExtrude(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\n// TODO:构建几何图形(带有中心点和大小)\nexport function polygonTriangulationWithCenter(feature: IEncodeFeature) {\n const { coordinates } = feature;\n const flattengeo = earcut.flatten(coordinates as number[][][]);\n const { vertices, dimensions, holes } = flattengeo;\n\n return {\n indices: earcut(vertices, holes, dimensions),\n vertices: getVerticesWithCenter(vertices),\n size: dimensions + 4,\n };\n}\n\nfunction getVerticesWithCenter(vertices: number[]) {\n const verticesWithCenter = [];\n const { center, radius } = calculatePointsCenterAndRadius(vertices);\n for (let i = 0; i < vertices.length; i += 2) {\n const lng = vertices[i];\n const lat = vertices[i + 1];\n verticesWithCenter.push(lng, lat, 0, ...center, radius);\n }\n return verticesWithCenter;\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"}
@@ -9,9 +9,9 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
9
 
10
10
  var _dec, _class;
11
11
 
12
- 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; }
12
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
13
13
 
14
- 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) { _defineProperty(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; }
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
15
15
 
16
16
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
17
17
 
@@ -14,7 +14,7 @@ export default class LineLayer extends BaseLayer<ILineLayerStyleOptions> {
14
14
  };
15
15
  };
16
16
  };
17
- protected getDefaultConfig(): {} | {
17
+ protected getDefaultConfig(): {} | {} | {} | {
18
18
  blend: string;
19
19
  } | {
20
20
  blend: string;
package/es/line/index.js CHANGED
@@ -65,6 +65,8 @@ var LineLayer = function (_BaseLayer) {
65
65
  var type = this.getModelType();
66
66
  var defaultConfig = {
67
67
  line: {},
68
+ simpleline: {},
69
+ wall: {},
68
70
  arc3d: {
69
71
  blend: 'additive'
70
72
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/line/index.ts"],"names":["BaseLayer","LineModels","LineLayer","shape","getModelType","layerModel","models","initModels","buildModels","properties","opacity","type","minimum","maximum","defaultConfig","line","arc3d","blend","arc","arcmini","greatcircle","shapeAttribute","styleAttributeService","getLayerStyleAttribute","scale","field"],"mappings":";;;;;;;;;;;;AAAA,OAAOA,SAAP,MAAsB,mBAAtB;AAEA,OAAOC,UAAP,MAA0C,UAA1C;;IAEqBC,S;;;;;;;;;;;;;;;;2DACG,W;;;;;;;WAEtB,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIJ,UAAU,CAACE,KAAD,CAAd,CAAsB,IAAtB,CAAlB;AACA,WAAKG,MAAL,GAAc,KAAKD,UAAL,CAAgBE,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKD,UAAL,CAAgBG,WAAhB,EAAd;AACD;;;WAED,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKP,YAAL,EAAb;AACA,UAAMU,aAAa,GAAG;AACpBC,QAAAA,IAAI,EAAE,EADc;AAEpBC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,KAAK,EAAE;AAAT,SAFa;AAGpBC,QAAAA,GAAG,EAAE;AAAED,UAAAA,KAAK,EAAE;AAAT,SAHe;AAIpBE,QAAAA,OAAO,EAAE;AAAEF,UAAAA,KAAK,EAAE;AAAT,SAJW;AAKpBG,QAAAA,WAAW,EAAE;AAAEH,UAAAA,KAAK,EAAE;AAAT;AALO,OAAtB;AAOA,aAAOH,aAAa,CAACH,IAAD,CAApB;AACD;;;WACD,wBAAwC;AAAA;;AACtC,UAAMU,cAAc,GAAG,KAAKC,qBAAL,CAA2BC,sBAA3B,CACrB,OADqB,CAAvB;AAGA,UAAMpB,KAAK,GAAGkB,cAAH,aAAGA,cAAH,gDAAGA,cAAc,CAAEG,KAAnB,0DAAG,sBAAuBC,KAArC;AACA,aAAOtB,KAAK,IAAI,MAAhB;AACD;;;;EAxCoCH,S;;SAAlBE,S","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport { ILineLayerStyleOptions } from '../core/interface';\nimport LineModels, { LineModelType } from './models';\n\nexport default class LineLayer extends BaseLayer<ILineLayerStyleOptions> {\n public type: string = 'LineLayer';\n\n public buildModels() {\n const shape = this.getModelType();\n this.layerModel = new LineModels[shape](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n line: {},\n arc3d: { blend: 'additive' },\n arc: { blend: 'additive' },\n arcmini: { blend: 'additive' },\n greatcircle: { blend: 'additive' },\n };\n return defaultConfig[type];\n }\n protected getModelType(): LineModelType {\n const shapeAttribute = this.styleAttributeService.getLayerStyleAttribute(\n 'shape',\n );\n const shape = shapeAttribute?.scale?.field as LineModelType;\n return shape || 'line';\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/line/index.ts"],"names":["BaseLayer","LineModels","LineLayer","shape","getModelType","layerModel","models","initModels","buildModels","properties","opacity","type","minimum","maximum","defaultConfig","line","simpleline","wall","arc3d","blend","arc","arcmini","greatcircle","shapeAttribute","styleAttributeService","getLayerStyleAttribute","scale","field"],"mappings":";;;;;;;;;;;;AAAA,OAAOA,SAAP,MAAsB,mBAAtB;AAEA,OAAOC,UAAP,MAA0C,UAA1C;;IAEqBC,S;;;;;;;;;;;;;;;;2DACG,W;;;;;;;WAEtB,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIJ,UAAU,CAACE,KAAD,CAAd,CAAsB,IAAtB,CAAlB;AACA,WAAKG,MAAL,GAAc,KAAKD,UAAL,CAAgBE,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKD,UAAL,CAAgBG,WAAhB,EAAd;AACD;;;WAED,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKP,YAAL,EAAb;AACA,UAAMU,aAAa,GAAG;AACpBC,QAAAA,IAAI,EAAE,EADc;AAEpBC,QAAAA,UAAU,EAAE,EAFQ;AAGpBC,QAAAA,IAAI,EAAE,EAHc;AAIpBC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,KAAK,EAAE;AAAT,SAJa;AAKpBC,QAAAA,GAAG,EAAE;AAAED,UAAAA,KAAK,EAAE;AAAT,SALe;AAMpBE,QAAAA,OAAO,EAAE;AAAEF,UAAAA,KAAK,EAAE;AAAT,SANW;AAOpBG,QAAAA,WAAW,EAAE;AAAEH,UAAAA,KAAK,EAAE;AAAT;AAPO,OAAtB;AASA,aAAOL,aAAa,CAACH,IAAD,CAApB;AACD;;;WACD,wBAAwC;AAAA;;AACtC,UAAMY,cAAc,GAAG,KAAKC,qBAAL,CAA2BC,sBAA3B,CACrB,OADqB,CAAvB;AAGA,UAAMtB,KAAK,GAAGoB,cAAH,aAAGA,cAAH,gDAAGA,cAAc,CAAEG,KAAnB,0DAAG,sBAAuBC,KAArC;AACA,aAAOxB,KAAK,IAAI,MAAhB;AACD;;;;EA1CoCH,S;;SAAlBE,S","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport { ILineLayerStyleOptions } from '../core/interface';\nimport LineModels, { LineModelType } from './models';\n\nexport default class LineLayer extends BaseLayer<ILineLayerStyleOptions> {\n public type: string = 'LineLayer';\n\n public buildModels() {\n const shape = this.getModelType();\n this.layerModel = new LineModels[shape](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n line: {},\n simpleline: {},\n wall: {},\n arc3d: { blend: 'additive' },\n arc: { blend: 'additive' },\n arcmini: { blend: 'additive' },\n greatcircle: { blend: 'additive' },\n };\n return defaultConfig[type];\n }\n protected getModelType(): LineModelType {\n const shapeAttribute = this.styleAttributeService.getLayerStyleAttribute(\n 'shape',\n );\n const shape = shapeAttribute?.scale?.field as LineModelType;\n return shape || 'line';\n }\n}\n"],"file":"index.js"}
@@ -1,4 +1,4 @@
1
- export declare type LineModelType = 'arc' | 'arcmini' | 'arc3d' | 'greatcircle' | 'line';
1
+ export declare type LineModelType = 'arc' | 'arcmini' | 'arc3d' | 'greatcircle' | 'wall' | 'simpleline' | 'line';
2
2
  declare const LineModels: {
3
3
  [key in LineModelType]: any;
4
4
  };
@@ -3,12 +3,16 @@ import Arc3DModel from './arc_3d';
3
3
  import ArcMiniModel from './arcmini';
4
4
  import GreatCircleModel from './great_circle';
5
5
  import LineModel from './line';
6
+ import SimpleLineModel from './simpleLine';
7
+ import LineWallModel from './wall';
6
8
  var LineModels = {
7
9
  arc: ArcModel,
8
10
  arcmini: ArcMiniModel,
9
11
  arc3d: Arc3DModel,
10
12
  greatcircle: GreatCircleModel,
11
- line: LineModel
13
+ wall: LineWallModel,
14
+ line: LineModel,
15
+ simpleline: SimpleLineModel
12
16
  };
13
17
  export default LineModels;
14
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/line/models/index.ts"],"names":["ArcModel","Arc3DModel","ArcMiniModel","GreatCircleModel","LineModel","LineModels","arc","arcmini","arc3d","greatcircle","line"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,OAArB;AACA,OAAOC,UAAP,MAAuB,UAAvB;AACA,OAAOC,YAAP,MAAyB,WAAzB;AACA,OAAOC,gBAAP,MAA6B,gBAA7B;AACA,OAAOC,SAAP,MAAsB,QAAtB;AASA,IAAMC,UAA2C,GAAG;AAClDC,EAAAA,GAAG,EAAEN,QAD6C;AAElDO,EAAAA,OAAO,EAAEL,YAFyC;AAGlDM,EAAAA,KAAK,EAAEP,UAH2C;AAIlDQ,EAAAA,WAAW,EAAEN,gBAJqC;AAKlDO,EAAAA,IAAI,EAAEN;AAL4C,CAApD;AAQA,eAAeC,UAAf","sourcesContent":["import ArcModel from './arc';\nimport Arc3DModel from './arc_3d';\nimport ArcMiniModel from './arcmini';\nimport GreatCircleModel from './great_circle';\nimport LineModel from './line';\n\nexport type LineModelType =\n | 'arc'\n | 'arcmini'\n | 'arc3d'\n | 'greatcircle'\n | 'line';\n\nconst LineModels: { [key in LineModelType]: any } = {\n arc: ArcModel,\n arcmini: ArcMiniModel,\n arc3d: Arc3DModel,\n greatcircle: GreatCircleModel,\n line: LineModel,\n};\n\nexport default LineModels;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/line/models/index.ts"],"names":["ArcModel","Arc3DModel","ArcMiniModel","GreatCircleModel","LineModel","SimpleLineModel","LineWallModel","LineModels","arc","arcmini","arc3d","greatcircle","wall","line","simpleline"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,OAArB;AACA,OAAOC,UAAP,MAAuB,UAAvB;AACA,OAAOC,YAAP,MAAyB,WAAzB;AACA,OAAOC,gBAAP,MAA6B,gBAA7B;AACA,OAAOC,SAAP,MAAsB,QAAtB;AACA,OAAOC,eAAP,MAA4B,cAA5B;AACA,OAAOC,aAAP,MAA0B,QAA1B;AAWA,IAAMC,UAA2C,GAAG;AAClDC,EAAAA,GAAG,EAAER,QAD6C;AAElDS,EAAAA,OAAO,EAAEP,YAFyC;AAGlDQ,EAAAA,KAAK,EAAET,UAH2C;AAIlDU,EAAAA,WAAW,EAAER,gBAJqC;AAKlDS,EAAAA,IAAI,EAAEN,aAL4C;AAMlDO,EAAAA,IAAI,EAAET,SAN4C;AAOlDU,EAAAA,UAAU,EAAET;AAPsC,CAApD;AAUA,eAAeE,UAAf","sourcesContent":["import ArcModel from './arc';\nimport Arc3DModel from './arc_3d';\nimport ArcMiniModel from './arcmini';\nimport GreatCircleModel from './great_circle';\nimport LineModel from './line';\nimport SimpleLineModel from './simpleLine';\nimport LineWallModel from './wall';\n\nexport type LineModelType =\n | 'arc'\n | 'arcmini'\n | 'arc3d'\n | 'greatcircle'\n | 'wall'\n | 'simpleline'\n | 'line';\n\nconst LineModels: { [key in LineModelType]: any } = {\n arc: ArcModel,\n arcmini: ArcMiniModel,\n arc3d: Arc3DModel,\n greatcircle: GreatCircleModel,\n wall: LineWallModel,\n line: LineModel,\n simpleline: SimpleLineModel,\n};\n\nexport default LineModels;\n"],"file":"index.js"}
@@ -8,6 +8,5 @@ export default class LineModel extends BaseModel {
8
8
  clearModels(): void;
9
9
  buildModels(): IModel[];
10
10
  protected registerBuiltinAttributes(): void;
11
- private loadImage;
12
11
  private updateTexture;
13
12
  }
@@ -15,8 +15,8 @@ import { AttributeType, gl } from '@antv/l7-core';
15
15
  import { rgb2arr } from '@antv/l7-utils';
16
16
  import BaseModel from '../../core/BaseModel';
17
17
  import { LineTriangulation } from '../../core/triangulation';
18
- var line_frag = "#define LineTypeSolid 0.0\n#define LineTypeDash 1.0\n#define Animate 0.0\n#define LineTexture 1.0\nuniform float u_blur : 0.99;\nuniform float u_line_type: 0.0;\nuniform float u_opacity : 1.0;\nuniform float u_textureBlend;\n\nuniform float u_borderWidth: 0.0;\nuniform vec4 u_borderColor;\nvarying vec4 v_color;\n\n// line texture\nuniform float u_line_texture;\nuniform sampler2D u_texture;\nuniform vec2 u_textSize;\n\n// dash\nuniform float u_dash_offset : 0.0;\nuniform float u_dash_ratio : 0.1;\nvarying vec4 v_dash_array;\n\nvarying vec2 v_iconMapUV;\n\nuniform float u_linearColor: 0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\n\n#pragma include \"picking\"\n\nuniform float u_time;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ]; // \u63A7\u5236\u8FD0\u52A8\n\nvarying mat4 styleMappingMat;\n// [animate, duration, interval, trailLength],\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float animateSpeed = 0.0; // \u8FD0\u52A8\u901F\u5EA6\n float d_distance_ratio = styleMappingMat[3].r; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n\n if(u_linearColor == 1.0) { // \u4F7F\u7528\u6E10\u53D8\u989C\u8272\n gl_FragColor = mix(u_sourceColor, u_targetColor, d_distance_ratio);\n } else { // \u4F7F\u7528 color \u65B9\u6CD5\u4F20\u5165\u7684\u989C\u8272\n gl_FragColor = v_color;\n }\n\n // anti-alias\n // float blur = 1.0 - smoothstep(u_blur, 1., length(v_normal.xy));\n gl_FragColor.a *= opacity; // \u5168\u5C40\u900F\u660E\u5EA6\n if(u_aimate.x == Animate) {\n animateSpeed = u_time / u_aimate.y;\n float alpha =1.0 - fract( mod(1.0- d_distance_ratio, u_aimate.z)* (1.0/ u_aimate.z) + animateSpeed);\n alpha = (alpha + u_aimate.w -1.0) / u_aimate.w;\n alpha = smoothstep(0., 1., alpha);\n gl_FragColor.a *= alpha;\n }\n // dash line\n if(u_line_type == LineTypeDash) {\n float flag = 0.;\n float dashLength = mod(d_distance_ratio, v_dash_array.x + v_dash_array.y + v_dash_array.z + v_dash_array.w);\n if(dashLength < v_dash_array.x || (dashLength > (v_dash_array.x + v_dash_array.y) && dashLength < v_dash_array.x + v_dash_array.y + v_dash_array.z)) {\n flag = 1.;\n }\n gl_FragColor.a *=flag;\n }\n\n if(u_line_texture == LineTexture && u_line_type != LineTypeDash) { // while load texture\n float aDistance = styleMappingMat[3].g; // \u5F53\u524D\u9876\u70B9\u7684\u8DDD\u79BB\n float d_texPixelLen = styleMappingMat[3].b; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n float u = fract(mod(aDistance, d_texPixelLen)/d_texPixelLen - animateSpeed);\n float v = styleMappingMat[3].a; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n // v = max(smoothstep(0.95, 1.0, v), v);\n vec2 uv= v_iconMapUV / u_textSize + vec2(u, v) / u_textSize * 64.;\n \n // gl_FragColor = filterColor(gl_FragColor + texture2D(u_texture, vec2(u, v)));\n // gl_FragColor = filterColor(gl_FragColor + texture2D(u_texture, uv));\n vec4 pattern = texture2D(u_texture, uv);\n\n if(u_textureBlend == 0.0) { // normal\n pattern.a = 0.0;\n gl_FragColor = filterColor(gl_FragColor + pattern);\n } else { // replace\n pattern.a *= opacity;\n if(gl_FragColor.a <= 0.0) {\n pattern.a = 0.0;\n }\n gl_FragColor = filterColor(pattern);\n }\n } else {\n\n float v = styleMappingMat[3].a;\n float borderWidth = min(0.5, u_borderWidth);\n // \u7ED8\u5236 border\n if(borderWidth > 0.0) {\n float borderOuterWidth = borderWidth/2.0;\n\n if(v >= 1.0 - borderWidth || v <= borderWidth) {\n if(v > borderWidth) {\n float linear = smoothstep(0.0, 1.0, (v - (1.0 - borderWidth))/borderWidth);\n gl_FragColor.rgb = mix(gl_FragColor.rgb, u_borderColor.rgb, linear);\n } else if(v <= borderWidth) {\n float linear = smoothstep(0.0, 1.0, v/borderWidth);\n gl_FragColor.rgb = mix(u_borderColor.rgb, gl_FragColor.rgb, linear);\n }\n }\n\n if(v < borderOuterWidth) {\n gl_FragColor.a = mix(0.0, gl_FragColor.a, v/borderOuterWidth);\n } else if(v > 1.0 - borderOuterWidth) {\n gl_FragColor.a = mix(gl_FragColor.a, 0.0, (v - (1.0 - borderOuterWidth))/borderOuterWidth);\n }\n }\n\n gl_FragColor = filterColor(gl_FragColor);\n }\n\n \n \n \n}\n";
19
- var line_vert = "#define LineTypeSolid 0.0\n#define LineTypeDash 1.0\n#define Animate 0.0\n\nattribute float a_Miter;\nattribute vec4 a_Color;\nattribute vec2 a_Size;\nattribute vec3 a_Normal;\nattribute vec3 a_Position;\n\nattribute vec2 a_iconMapUV;\n\n// dash line\nattribute float a_Total_Distance;\nattribute float a_Distance;\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float u_line_type: 0.0;\nuniform vec4 u_dash_array: [10.0, 5., 0, 0];\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ];\nuniform float u_icon_step: 100;\n\nuniform float u_vertexScale: 1.0;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvarying vec4 v_color;\nvarying vec4 v_dash_array;\n\n// texV \u7EBF\u56FE\u5C42 - \u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\uFF08\u7EBF\u7684\u5BBD\u5EA6\u65B9\u5411\uFF09\nvarying vec2 v_iconMapUV;\n\n\nuniform float u_linearColor: 0;\n\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0 // distance_ratio/distance/pixelLen/texV\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n float d_distance_ratio; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n float d_texPixelLen; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n\n v_iconMapUV = a_iconMapUV;\n d_texPixelLen = project_pixel(u_icon_step);\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n d_texPixelLen *= 10.0;\n }\n\n if(u_line_type == LineTypeDash) {\n d_distance_ratio = a_Distance / a_Total_Distance;\n v_dash_array = pow(2.0, 20.0 - u_Zoom) * u_dash_array / a_Total_Distance;\n }\n if(u_aimate.x == Animate || u_linearColor == 1.0) {\n d_distance_ratio = a_Distance / a_Total_Distance;\n }\n v_color = a_Color;\n\n vec3 size = a_Miter * setPickingSize(a_Size.x) * reverse_offset_normal(a_Normal);\n\n vec2 offset = project_pixel(size.xy);\n\n float lineOffsetWidth = length(offset + offset * sign(a_Miter)); // \u7EBF\u6A2A\u5411\u504F\u79FB\u7684\u8DDD\u79BB\uFF08\u5411\u4E24\u4FA7\u504F\u79FB\u7684\u548C\uFF09\n float linePixelSize = project_pixel(a_Size.x) * 2.0; // \u5B9A\u70B9\u4F4D\u7F6E\u504F\u79FB\uFF0C\u6309\u5730\u56FE\u7B49\u7EA7\u7F29\u653E\u540E\u7684\u8DDD\u79BB \u5355\u4FA7 * 2\n float texV = lineOffsetWidth/linePixelSize; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n // \u8BBE\u7F6E\u6570\u636E\u96C6\u7684\u53C2\u6570\n styleMappingMat[3][0] = d_distance_ratio; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n styleMappingMat[3][1] = a_Distance; // \u5F53\u524D\u9876\u70B9\u7684\u8DDD\u79BB\n styleMappingMat[3][2] = d_texPixelLen; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n styleMappingMat[3][3] = texV; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n vec4 project_pos = project_position(vec4(a_Position.xy, 0, 1.0));\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, a_Size.y, 1.0));\n\n float h = float((a_Position.z)) * u_vertexScale; // \u7EBF\u9876\u70B9\u7684\u9AD8\u5EA6 - \u517C\u5BB9\u4E0D\u5B58\u5728\u7B2C\u4E09\u4E2A\u6570\u503C\u7684\u60C5\u51B5\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n // gl_Position = u_Mvp * (vec4(project_pos.xy + offset, a_Size.y, 1.0));\n gl_Position = u_Mvp * (vec4(project_pos.xy + offset, a_Size.y / 8.0 + h, 1.0)); // \u989D\u5916\u9664 8.0 \u662F\u4E3A\u4E86\u548Cgaode1.x\u7684\u9AD8\u5EA6\u517C\u5BB9\n } else {\n float lineHeight = a_Size.y;\n // \u517C\u5BB9 mapbox \u5728\u7EBF\u9AD8\u5EA6\u4E0A\u7684\u6548\u679C\u8868\u73B0\u57FA\u672C\u4E00\u81F4\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n lineHeight = lineHeight*2.0/pow(2.0, 20.0 - u_Zoom);\n }\n \n\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, lineHeight + h, 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}\n";
18
+ var line_frag = "#define LineTypeSolid 0.0\n#define LineTypeDash 1.0\n#define Animate 0.0\n#define LineTexture 1.0\nuniform float u_blur : 0.99;\nuniform float u_line_type: 0.0;\nuniform float u_opacity : 1.0;\nuniform float u_textureBlend;\n\nuniform float u_borderWidth: 0.0;\nuniform vec4 u_borderColor;\nvarying vec4 v_color;\n\n// line texture\nuniform float u_line_texture;\nuniform sampler2D u_texture;\nuniform vec2 u_textSize;\n\n// dash\nuniform float u_dash_offset : 0.0;\nuniform float u_dash_ratio : 0.1;\nvarying vec4 v_dash_array;\n\nvarying vec2 v_iconMapUV;\n\nuniform float u_linearColor: 0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\n\n#pragma include \"picking\"\n\nuniform float u_time;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ]; // \u63A7\u5236\u8FD0\u52A8\n\nvarying mat4 styleMappingMat;\n// [animate, duration, interval, trailLength],\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float animateSpeed = 0.0; // \u8FD0\u52A8\u901F\u5EA6\n float d_distance_ratio = styleMappingMat[3].r; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n\n if(u_linearColor == 1.0) { // \u4F7F\u7528\u6E10\u53D8\u989C\u8272\n gl_FragColor = mix(u_sourceColor, u_targetColor, d_distance_ratio);\n } else { // \u4F7F\u7528 color \u65B9\u6CD5\u4F20\u5165\u7684\u989C\u8272\n gl_FragColor = v_color;\n }\n\n // anti-alias\n // float blur = 1.0 - smoothstep(u_blur, 1., length(v_normal.xy));\n gl_FragColor.a *= opacity; // \u5168\u5C40\u900F\u660E\u5EA6\n if(u_aimate.x == Animate) {\n animateSpeed = u_time / u_aimate.y;\n float alpha =1.0 - fract( mod(1.0- d_distance_ratio, u_aimate.z)* (1.0/ u_aimate.z) + animateSpeed);\n alpha = (alpha + u_aimate.w -1.0) / u_aimate.w;\n alpha = smoothstep(0., 1., alpha);\n gl_FragColor.a *= alpha;\n }\n // dash line\n if(u_line_type == LineTypeDash) {\n float flag = 0.;\n float dashLength = mod(d_distance_ratio, v_dash_array.x + v_dash_array.y + v_dash_array.z + v_dash_array.w);\n if(dashLength < v_dash_array.x || (dashLength > (v_dash_array.x + v_dash_array.y) && dashLength < v_dash_array.x + v_dash_array.y + v_dash_array.z)) {\n flag = 1.;\n }\n gl_FragColor.a *=flag;\n }\n\n if(u_line_texture == LineTexture && u_line_type != LineTypeDash) { // while load texture\n float aDistance = styleMappingMat[3].g; // \u5F53\u524D\u9876\u70B9\u7684\u8DDD\u79BB\n float d_texPixelLen = styleMappingMat[3].b; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n float u = fract(mod(aDistance, d_texPixelLen)/d_texPixelLen - animateSpeed);\n float v = styleMappingMat[3].a; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n // v = max(smoothstep(0.95, 1.0, v), v);\n vec2 uv= v_iconMapUV / u_textSize + vec2(u, v) / u_textSize * 64.;\n \n // gl_FragColor = filterColor(gl_FragColor + texture2D(u_texture, vec2(u, v)));\n // gl_FragColor = filterColor(gl_FragColor + texture2D(u_texture, uv));\n vec4 pattern = texture2D(u_texture, uv);\n\n if(u_textureBlend == 0.0) { // normal\n pattern.a = 0.0;\n gl_FragColor += pattern;\n } else { // replace\n pattern.a *= opacity;\n if(gl_FragColor.a <= 0.0) {\n pattern.a = 0.0;\n }\n gl_FragColor = pattern;\n }\n } \n\n float v = styleMappingMat[3].a;\n float borderWidth = min(0.5, u_borderWidth);\n // \u7ED8\u5236 border\n if(borderWidth > 0.01) {\n float borderOuterWidth = borderWidth/2.0;\n\n if(v >= 1.0 - borderWidth || v <= borderWidth) {\n if(v > borderWidth) {\n float linear = smoothstep(0.0, 1.0, (v - (1.0 - borderWidth))/borderWidth);\n gl_FragColor.rgb = mix(gl_FragColor.rgb, u_borderColor.rgb, linear);\n } else if(v <= borderWidth) {\n float linear = smoothstep(0.0, 1.0, v/borderWidth);\n gl_FragColor.rgb = mix(u_borderColor.rgb, gl_FragColor.rgb, linear);\n }\n }\n\n if(v < borderOuterWidth) {\n gl_FragColor.a = mix(0.0, gl_FragColor.a, v/borderOuterWidth);\n } else if(v > 1.0 - borderOuterWidth) {\n gl_FragColor.a = mix(gl_FragColor.a, 0.0, (v - (1.0 - borderOuterWidth))/borderOuterWidth);\n }\n }\n\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
19
+ var line_vert = "#define LineTypeSolid 0.0\n#define LineTypeDash 1.0\n#define Animate 0.0\n\nattribute float a_Miter;\nattribute vec4 a_Color;\nattribute vec2 a_Size;\nattribute vec3 a_Normal;\nattribute vec3 a_Position;\n\nattribute vec2 a_iconMapUV;\n\n// dash line\nattribute float a_Total_Distance;\nattribute float a_Distance;\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float u_line_type: 0.0;\nuniform vec4 u_dash_array: [10.0, 5., 0, 0];\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ];\nuniform float u_icon_step: 100;\n\nuniform float u_vertexScale: 1.0;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvarying vec4 v_color;\nvarying vec4 v_dash_array;\n\n// texV \u7EBF\u56FE\u5C42 - \u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\uFF08\u7EBF\u7684\u5BBD\u5EA6\u65B9\u5411\uFF09\nvarying vec2 v_iconMapUV;\n\n\nuniform float u_linearColor: 0;\n\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0 // distance_ratio/distance/pixelLen/texV\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n float d_distance_ratio; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n float d_texPixelLen; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n\n v_iconMapUV = a_iconMapUV;\n d_texPixelLen = project_float_pixel(u_icon_step);\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n d_texPixelLen *= 10.0;\n }\n\n if(u_line_type == LineTypeDash) {\n d_distance_ratio = a_Distance / a_Total_Distance;\n v_dash_array = pow(2.0, 20.0 - u_Zoom) * u_dash_array / a_Total_Distance;\n }\n if(u_aimate.x == Animate || u_linearColor == 1.0) {\n d_distance_ratio = a_Distance / a_Total_Distance;\n }\n v_color = a_Color;\n\n vec3 size = a_Miter * setPickingSize(a_Size.x) * reverse_offset_normal(a_Normal);\n\n vec2 offset = project_pixel(size.xy);\n\n float lineOffsetWidth = length(offset + offset * sign(a_Miter)); // \u7EBF\u6A2A\u5411\u504F\u79FB\u7684\u8DDD\u79BB\uFF08\u5411\u4E24\u4FA7\u504F\u79FB\u7684\u548C\uFF09\n float linePixelSize = project_pixel(a_Size.x) * 2.0; // \u5B9A\u70B9\u4F4D\u7F6E\u504F\u79FB\uFF0C\u6309\u5730\u56FE\u7B49\u7EA7\u7F29\u653E\u540E\u7684\u8DDD\u79BB \u5355\u4FA7 * 2\n float texV = lineOffsetWidth/linePixelSize; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n // \u8BBE\u7F6E\u6570\u636E\u96C6\u7684\u53C2\u6570\n styleMappingMat[3][0] = d_distance_ratio; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n styleMappingMat[3][1] = a_Distance; // \u5F53\u524D\u9876\u70B9\u7684\u8DDD\u79BB\n styleMappingMat[3][2] = d_texPixelLen; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n styleMappingMat[3][3] = texV; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n vec4 project_pos = project_position(vec4(a_Position.xy, 0, 1.0));\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, a_Size.y, 1.0));\n\n float h = float(a_Position.z) * u_vertexScale; // \u7EBF\u9876\u70B9\u7684\u9AD8\u5EA6 - \u517C\u5BB9\u4E0D\u5B58\u5728\u7B2C\u4E09\u4E2A\u6570\u503C\u7684\u60C5\u51B5\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xy + offset, project_pixel(a_Size.y) + h * 0.2, 1.0));\n } else {\n float lineHeight = a_Size.y;\n // \u517C\u5BB9 mapbox \u5728\u7EBF\u9AD8\u5EA6\u4E0A\u7684\u6548\u679C\u8868\u73B0\u57FA\u672C\u4E00\u81F4\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n // \u4FDD\u6301\u9AD8\u5EA6\u76F8\u5BF9\u4E0D\u53D8\n h *= 2.0/pow(2.0, 20.0 - u_Zoom);\n }\n\n // #define COORDINATE_SYSTEM_P20 5.0\n // #define COORDINATE_SYSTEM_P20_OFFSET 6.0\n // amap1.x\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20 || u_CoordinateSystem == COORDINATE_SYSTEM_P20_OFFSET) {\n // \u4FDD\u6301\u9AD8\u5EA6\u76F8\u5BF9\u4E0D\u53D8\n lineHeight *= pow(2.0, 20.0 - u_Zoom);\n }\n\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, lineHeight + h, 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}\n";
20
20
  var lineStyleObj = {
21
21
  solid: 0.0,
22
22
  dash: 1.0
@@ -205,10 +205,6 @@ var LineModel = function (_BaseModel) {
205
205
  value: function registerBuiltinAttributes() {
206
206
  var _this2 = this;
207
207
 
208
- var _ref3 = this.layer.getLayerConfig(),
209
- _ref3$lineType = _ref3.lineType,
210
- lineType = _ref3$lineType === void 0 ? 'solid' : _ref3$lineType;
211
-
212
208
  this.styleAttributeService.registerStyleAttribute({
213
209
  name: 'distance',
214
210
  type: AttributeType.Attribute,
@@ -307,41 +303,18 @@ var LineModel = function (_BaseModel) {
307
303
 
308
304
  var texture = feature.texture;
309
305
 
310
- var _ref4 = iconMap[texture] || {
306
+ var _ref3 = iconMap[texture] || {
311
307
  x: 0,
312
308
  y: 0
313
309
  },
314
- x = _ref4.x,
315
- y = _ref4.y;
310
+ x = _ref3.x,
311
+ y = _ref3.y;
316
312
 
317
313
  return [x, y];
318
314
  }
319
315
  }
320
316
  });
321
317
  }
322
- }, {
323
- key: "loadImage",
324
- value: function loadImage(url) {
325
- return new Promise(function (resolve, reject) {
326
- if (url instanceof HTMLImageElement) {
327
- resolve(url);
328
- return;
329
- }
330
-
331
- var image = new Image();
332
- image.crossOrigin = 'anonymous';
333
-
334
- image.onload = function () {
335
- resolve(image);
336
- };
337
-
338
- image.onerror = function () {
339
- reject(new Error('Could not load image at ' + url));
340
- };
341
-
342
- image.src = url instanceof File ? URL.createObjectURL(url) : url;
343
- });
344
- }
345
318
  }]);
346
319
 
347
320
  return LineModel;