@antv/l7-layers 2.8.33 → 2.8.36

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 (213) hide show
  1. package/es/Geometry/index.d.ts +1 -1
  2. package/es/Geometry/index.js +4 -1
  3. package/es/Geometry/index.js.map +1 -1
  4. package/es/Geometry/models/billboard.d.ts +26 -0
  5. package/es/Geometry/models/billboard.js +213 -0
  6. package/es/Geometry/models/billboard.js.map +1 -0
  7. package/es/Geometry/models/index.d.ts +1 -1
  8. package/es/Geometry/models/index.js +3 -1
  9. package/es/Geometry/models/index.js.map +1 -1
  10. package/es/Geometry/models/sprite.js +2 -2
  11. package/es/core/BaseLayer.d.ts +2 -2
  12. package/es/core/BaseLayer.js.map +1 -1
  13. package/es/core/LayerGroup.d.ts +2 -1
  14. package/es/core/LayerGroup.js +5 -0
  15. package/es/core/LayerGroup.js.map +1 -1
  16. package/es/core/interface.d.ts +30 -2
  17. package/es/core/interface.js.map +1 -1
  18. package/es/heatmap/index.d.ts +2 -0
  19. package/es/heatmap/index.js +9 -0
  20. package/es/heatmap/index.js.map +1 -1
  21. package/es/heatmap/models/heatmap.js +1 -0
  22. package/es/heatmap/models/heatmap.js.map +1 -1
  23. package/es/image/models/image.js.map +1 -1
  24. package/es/index.d.ts +2 -2
  25. package/es/index.js +2 -2
  26. package/es/index.js.map +1 -1
  27. package/es/line/index.d.ts +1 -1
  28. package/es/line/index.js +1 -0
  29. package/es/line/index.js.map +1 -1
  30. package/es/line/models/arc.js +4 -4
  31. package/es/line/models/arc.js.map +1 -1
  32. package/es/line/models/arc_3d.js +4 -5
  33. package/es/line/models/arc_3d.js.map +1 -1
  34. package/es/line/models/arcmini.js +5 -5
  35. package/es/line/models/arcmini.js.map +1 -1
  36. package/es/line/models/great_circle.js +3 -3
  37. package/es/line/models/great_circle.js.map +1 -1
  38. package/es/line/models/index.d.ts +1 -1
  39. package/es/line/models/index.js +3 -1
  40. package/es/line/models/index.js.map +1 -1
  41. package/es/line/models/line.js +3 -3
  42. package/es/line/models/line.js.map +1 -1
  43. package/es/line/models/linearline.d.ts +20 -0
  44. package/es/line/models/linearline.js +267 -0
  45. package/es/line/models/linearline.js.map +1 -0
  46. package/es/line/models/simpleLine.js +8 -8
  47. package/es/line/models/simpleLine.js.map +1 -1
  48. package/es/line/models/wall.js +5 -5
  49. package/es/line/models/wall.js.map +1 -1
  50. package/es/mask/index.d.ts +1 -4
  51. package/es/mask/index.js.map +1 -1
  52. package/es/mask/models/fill.js.map +1 -1
  53. package/es/plugins/FeatureScalePlugin.js.map +1 -1
  54. package/es/point/models/extrude.js +3 -4
  55. package/es/point/models/extrude.js.map +1 -1
  56. package/es/point/models/fill.js +3 -4
  57. package/es/point/models/fill.js.map +1 -1
  58. package/es/point/models/fillmage.d.ts +1 -1
  59. package/es/point/models/fillmage.js +6 -21
  60. package/es/point/models/fillmage.js.map +1 -1
  61. package/es/point/models/icon-font.js +1 -1
  62. package/es/point/models/image.js +4 -4
  63. package/es/point/models/image.js.map +1 -1
  64. package/es/point/models/normal.js +2 -2
  65. package/es/point/models/normal.js.map +1 -1
  66. package/es/point/models/radar.js +5 -18
  67. package/es/point/models/radar.js.map +1 -1
  68. package/es/point/models/simplePoint.js +5 -6
  69. package/es/point/models/simplePoint.js.map +1 -1
  70. package/es/point/models/text.js +4 -4
  71. package/es/point/models/text.js.map +1 -1
  72. package/es/polygon/models/extrude.js +2 -3
  73. package/es/polygon/models/extrude.js.map +1 -1
  74. package/es/polygon/models/fill.d.ts +1 -0
  75. package/es/polygon/models/fill.js +37 -12
  76. package/es/polygon/models/fill.js.map +1 -1
  77. package/es/polygon/models/ocean.js +3 -4
  78. package/es/polygon/models/ocean.js.map +1 -1
  79. package/es/polygon/models/water.js +3 -4
  80. package/es/polygon/models/water.js.map +1 -1
  81. package/es/raster/index.d.ts +3 -3
  82. package/es/raster/index.js +16 -6
  83. package/es/raster/index.js.map +1 -1
  84. package/es/raster/models/index.d.ts +1 -1
  85. package/es/raster/models/index.js +3 -1
  86. package/es/raster/models/index.js.map +1 -1
  87. package/es/raster/models/raste-tile.d.ts +23 -0
  88. package/es/raster/models/raste-tile.js +285 -0
  89. package/es/raster/models/raste-tile.js.map +1 -0
  90. package/es/raster/models/raster.js +2 -0
  91. package/es/raster/models/raster.js.map +1 -1
  92. package/es/wind/index.d.ts +1 -17
  93. package/es/wind/index.js.map +1 -1
  94. package/es/wind/models/utils.d.ts +12 -12
  95. package/es/wind/models/utils.js +6 -5
  96. package/es/wind/models/utils.js.map +1 -1
  97. package/es/wind/models/wind.js.map +1 -1
  98. package/es/wind/models/windRender.js.map +1 -1
  99. package/lib/Geometry/index.js +4 -1
  100. package/lib/Geometry/index.js.map +1 -1
  101. package/lib/Geometry/models/billboard.js +227 -0
  102. package/lib/Geometry/models/billboard.js.map +1 -0
  103. package/lib/Geometry/models/index.js +4 -1
  104. package/lib/Geometry/models/index.js.map +1 -1
  105. package/lib/Geometry/models/sprite.js +2 -2
  106. package/lib/core/BaseLayer.js.map +1 -1
  107. package/lib/core/LayerGroup.js +5 -0
  108. package/lib/core/LayerGroup.js.map +1 -1
  109. package/lib/core/interface.js.map +1 -1
  110. package/lib/heatmap/index.js +9 -0
  111. package/lib/heatmap/index.js.map +1 -1
  112. package/lib/heatmap/models/heatmap.js +1 -0
  113. package/lib/heatmap/models/heatmap.js.map +1 -1
  114. package/lib/image/models/image.js.map +1 -1
  115. package/lib/index.js +29 -8
  116. package/lib/index.js.map +1 -1
  117. package/lib/line/index.js +1 -0
  118. package/lib/line/index.js.map +1 -1
  119. package/lib/line/models/arc.js +4 -5
  120. package/lib/line/models/arc.js.map +1 -1
  121. package/lib/line/models/arc_3d.js +4 -6
  122. package/lib/line/models/arc_3d.js.map +1 -1
  123. package/lib/line/models/arcmini.js +5 -6
  124. package/lib/line/models/arcmini.js.map +1 -1
  125. package/lib/line/models/great_circle.js +3 -4
  126. package/lib/line/models/great_circle.js.map +1 -1
  127. package/lib/line/models/index.js +4 -1
  128. package/lib/line/models/index.js.map +1 -1
  129. package/lib/line/models/line.js +3 -4
  130. package/lib/line/models/line.js.map +1 -1
  131. package/lib/line/models/linearline.js +282 -0
  132. package/lib/line/models/linearline.js.map +1 -0
  133. package/lib/line/models/simpleLine.js +8 -9
  134. package/lib/line/models/simpleLine.js.map +1 -1
  135. package/lib/line/models/wall.js +5 -6
  136. package/lib/line/models/wall.js.map +1 -1
  137. package/lib/mask/index.js.map +1 -1
  138. package/lib/mask/models/fill.js.map +1 -1
  139. package/lib/plugins/FeatureScalePlugin.js.map +1 -1
  140. package/lib/point/models/extrude.js +3 -5
  141. package/lib/point/models/extrude.js.map +1 -1
  142. package/lib/point/models/fill.js +3 -5
  143. package/lib/point/models/fill.js.map +1 -1
  144. package/lib/point/models/fillmage.js +7 -23
  145. package/lib/point/models/fillmage.js.map +1 -1
  146. package/lib/point/models/icon-font.js +1 -1
  147. package/lib/point/models/image.js +4 -5
  148. package/lib/point/models/image.js.map +1 -1
  149. package/lib/point/models/normal.js +2 -3
  150. package/lib/point/models/normal.js.map +1 -1
  151. package/lib/point/models/radar.js +5 -19
  152. package/lib/point/models/radar.js.map +1 -1
  153. package/lib/point/models/simplePoint.js +5 -7
  154. package/lib/point/models/simplePoint.js.map +1 -1
  155. package/lib/point/models/text.js +4 -5
  156. package/lib/point/models/text.js.map +1 -1
  157. package/lib/polygon/models/extrude.js +2 -4
  158. package/lib/polygon/models/extrude.js.map +1 -1
  159. package/lib/polygon/models/fill.js +37 -13
  160. package/lib/polygon/models/fill.js.map +1 -1
  161. package/lib/polygon/models/ocean.js +3 -5
  162. package/lib/polygon/models/ocean.js.map +1 -1
  163. package/lib/polygon/models/water.js +3 -5
  164. package/lib/polygon/models/water.js.map +1 -1
  165. package/lib/raster/index.js +16 -6
  166. package/lib/raster/index.js.map +1 -1
  167. package/lib/raster/models/index.js +4 -1
  168. package/lib/raster/models/index.js.map +1 -1
  169. package/lib/raster/models/raste-tile.js +294 -0
  170. package/lib/raster/models/raste-tile.js.map +1 -0
  171. package/lib/raster/models/raster.js +2 -0
  172. package/lib/raster/models/raster.js.map +1 -1
  173. package/lib/wind/index.js.map +1 -1
  174. package/lib/wind/models/utils.js +6 -5
  175. package/lib/wind/models/utils.js.map +1 -1
  176. package/lib/wind/models/wind.js.map +1 -1
  177. package/lib/wind/models/windRender.js.map +1 -1
  178. package/package.json +5 -6
  179. package/es/imagetile/index.d.ts +0 -22
  180. package/es/imagetile/index.js +0 -82
  181. package/es/imagetile/index.js.map +0 -1
  182. package/es/imagetile/models/imagetile.d.ts +0 -12
  183. package/es/imagetile/models/imagetile.js +0 -133
  184. package/es/imagetile/models/imagetile.js.map +0 -1
  185. package/es/imagetile/models/index.d.ts +0 -5
  186. package/es/imagetile/models/index.js +0 -6
  187. package/es/imagetile/models/index.js.map +0 -1
  188. package/es/imagetile/utils/ImageTile.d.ts +0 -20
  189. package/es/imagetile/utils/ImageTile.js +0 -92
  190. package/es/imagetile/utils/ImageTile.js.map +0 -1
  191. package/es/imagetile/utils/Tile.d.ts +0 -27
  192. package/es/imagetile/utils/Tile.js +0 -313
  193. package/es/imagetile/utils/Tile.js.map +0 -1
  194. package/es/imagetile/utils/lruCache.d.ts +0 -20
  195. package/es/imagetile/utils/lruCache.js +0 -105
  196. package/es/imagetile/utils/lruCache.js.map +0 -1
  197. package/es/imagetile/utils/tileCache.d.ts +0 -8
  198. package/es/imagetile/utils/tileCache.js +0 -50
  199. package/es/imagetile/utils/tileCache.js.map +0 -1
  200. package/lib/imagetile/index.js +0 -95
  201. package/lib/imagetile/index.js.map +0 -1
  202. package/lib/imagetile/models/imagetile.js +0 -146
  203. package/lib/imagetile/models/imagetile.js.map +0 -1
  204. package/lib/imagetile/models/index.js +0 -17
  205. package/lib/imagetile/models/index.js.map +0 -1
  206. package/lib/imagetile/utils/ImageTile.js +0 -101
  207. package/lib/imagetile/utils/ImageTile.js.map +0 -1
  208. package/lib/imagetile/utils/Tile.js +0 -316
  209. package/lib/imagetile/utils/Tile.js.map +0 -1
  210. package/lib/imagetile/utils/lruCache.js +0 -109
  211. package/lib/imagetile/utils/lruCache.js.map +0 -1
  212. package/lib/imagetile/utils/tileCache.js +0 -58
  213. package/lib/imagetile/utils/tileCache.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/line/models/wall.ts"],"names":["LineWallModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","layer","render","mag","gl","NEAREST","min","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","sourceColor","targetColor","textureBlend","heightfixed","lineTexture","iconStep","iconStepCount","getDirty","bind","useLinearColor","sourceColorArr","targetColorArr","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","u_heightfixed","Number","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_textureBlend","u_texture","u_line_texture","u_iconStepCount","u_icon_step","u_textSize","u_linearColor","u_sourceColor","u_targetColor","animateOption","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","updateTexture","on","buildModels","destroy","off","buildLayerModel","moduleName","vertexShader","line_vert","fragmentShader","line_frag","triangulation","LineTriangulation","primitive","TRIANGLES","blend","getBlend","depth","enable","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","DYNAMIC_DRAW","Array","isArray","normal","iconMap","getIconMap","x","y","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\n\nimport { rgb2arr } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { ILineLayerStyleOptions, lineStyleType } from '../../core/interface';\nimport { LineTriangulation } from '../../core/triangulation';\nimport line_frag from '../shaders/wall_frag.glsl';\nimport line_vert from '../shaders/wall_vert.glsl';\n\nexport default class LineWallModel extends BaseModel {\n protected texture: ITexture2D;\n public getUninforms(): IModelUniform {\n const {\n opacity,\n sourceColor,\n targetColor,\n textureBlend = 'normal',\n heightfixed = false,\n lineTexture = false,\n iconStep = 100,\n iconStepCount = 1,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n // 转化渐变色\n let useLinearColor = 0; // 默认不生效\n let sourceColorArr = [0, 0, 0, 0];\n let targetColorArr = [0, 0, 0, 0];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n useLinearColor = 1;\n }\n\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n return {\n u_heightfixed: Number(heightfixed),\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n // u_opacity: opacity === undefined ? 1 : opacity,\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_textureBlend: textureBlend === 'normal' ? 0.0 : 1.0,\n\n // 纹理支持参数\n u_texture: this.texture, // 贴图\n u_line_texture: lineTexture ? 1.0 : 0.0, // 传入线的标识\n u_iconStepCount: iconStepCount,\n u_icon_step: iconStep,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n };\n }\n public getAnimateUniforms(): IModelUniform {\n const { animateOption } = this.layer.getLayerConfig() as ILayerConfig;\n return {\n u_aimate: this.animateOption2Array(animateOption as IAnimateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\n return this.buildModels();\n }\n\n public clearModels() {\n this.texture?.destroy();\n this.dataTexture?.destroy();\n this.iconService.off('imageUpdate', this.updateTexture);\n }\n\n public buildModels(): IModel[] {\n return [\n this.layer.buildLayerModel({\n moduleName: 'linewall',\n vertexShader: line_vert,\n fragmentShader: line_frag,\n triangulation: LineTriangulation,\n primitive: gl.TRIANGLES,\n blend: this.getBlend(),\n depth: { enable: false },\n }),\n ];\n }\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'distance',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Distance',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3]];\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'total_distance',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Total_Distance',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[5]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 1 } = feature;\n return Array.isArray(size) ? [size[0], size[1]] : [size as number, 0];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n // @ts-ignore\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'miter',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Miter',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[4]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_iconMapUV',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { texture } = feature;\n const { x, y } = iconMap[texture as string] || { x: 0, y: 0 };\n return [x, y];\n },\n },\n });\n }\n private updateTexture = () => {\n const { createTexture2D } = this.rendererService;\n if (this.texture) {\n this.texture.update({\n data: this.iconService.getCanvas(),\n });\n this.layer.render();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.NEAREST,\n min: gl.NEAREST,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n });\n };\n}\n"],"file":"wall.js"}
1
+ {"version":3,"sources":["../../../src/line/models/wall.ts"],"names":["LineWallModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","layer","render","mag","gl","NEAREST","min","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","sourceColor","targetColor","textureBlend","heightfixed","lineTexture","iconStep","iconStepCount","getDirty","bind","useLinearColor","sourceColorArr","targetColorArr","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","u_heightfixed","Number","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_textureBlend","u_texture","u_line_texture","u_iconStepCount","u_icon_step","u_textSize","u_linearColor","u_sourceColor","u_targetColor","animateOption","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","updateTexture","on","buildModels","destroy","off","buildLayerModel","moduleName","vertexShader","line_vert","fragmentShader","line_frag","triangulation","LineTriangulation","primitive","TRIANGLES","blend","getBlend","depth","enable","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","DYNAMIC_DRAW","Array","isArray","normal","iconMap","getIconMap","x","y","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\n\nimport { rgb2arr } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { ILineLayerStyleOptions } from '../../core/interface';\nimport { LineTriangulation } from '../../core/triangulation';\nimport line_frag from '../shaders/wall_frag.glsl';\nimport line_vert from '../shaders/wall_vert.glsl';\n\nexport default class LineWallModel extends BaseModel {\n protected texture: ITexture2D;\n public getUninforms(): IModelUniform {\n const {\n opacity = 1,\n sourceColor,\n targetColor,\n textureBlend = 'normal',\n heightfixed = false,\n lineTexture = false,\n iconStep = 100,\n iconStepCount = 1,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n // 转化渐变色\n let useLinearColor = 0; // 默认不生效\n let sourceColorArr = [0, 0, 0, 0];\n let targetColorArr = [0, 0, 0, 0];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n useLinearColor = 1;\n }\n\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n return {\n u_heightfixed: Number(heightfixed),\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: Number(opacity),\n u_textureBlend: textureBlend === 'normal' ? 0.0 : 1.0,\n\n // 纹理支持参数\n u_texture: this.texture, // 贴图\n u_line_texture: lineTexture ? 1.0 : 0.0, // 传入线的标识\n u_iconStepCount: iconStepCount,\n u_icon_step: iconStep,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n };\n }\n public getAnimateUniforms(): IModelUniform {\n const { animateOption } = this.layer.getLayerConfig() as ILayerConfig;\n return {\n u_aimate: this.animateOption2Array(animateOption as IAnimateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\n return this.buildModels();\n }\n\n public clearModels() {\n this.texture?.destroy();\n this.dataTexture?.destroy();\n this.iconService.off('imageUpdate', this.updateTexture);\n }\n\n public buildModels(): IModel[] {\n return [\n this.layer.buildLayerModel({\n moduleName: 'linewall',\n vertexShader: line_vert,\n fragmentShader: line_frag,\n triangulation: LineTriangulation,\n primitive: gl.TRIANGLES,\n blend: this.getBlend(),\n depth: { enable: false },\n }),\n ];\n }\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'distance',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Distance',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3]];\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'total_distance',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Total_Distance',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[5]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 1 } = feature;\n return Array.isArray(size) ? [size[0], size[1]] : [size as number, 0];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n // @ts-ignore\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'miter',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Miter',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[4]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_iconMapUV',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { texture } = feature;\n const { x, y } = iconMap[texture as string] || { x: 0, y: 0 };\n return [x, y];\n },\n },\n });\n }\n private updateTexture = () => {\n const { createTexture2D } = this.rendererService;\n if (this.texture) {\n this.texture.update({\n data: this.iconService.getCanvas(),\n });\n this.layer.render();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.NEAREST,\n min: gl.NEAREST,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n });\n };\n}\n"],"file":"wall.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mask/index.ts"],"names":["MaskLayer","shape","getModelType","layerModel","MaskModels","models","initModels","buildModels","properties","opacity","type","minimum","maximum","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;IAMqBA,S;;;;;;;;;;;;;;;uFACG,W;;;;;;WACtB,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIC,gBAAWH,KAAX,CAAJ,CAAsB,IAAtB,CAAlB;AACA,WAAKI,MAAL,GAAc,KAAKF,UAAL,CAAgBG,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKF,UAAL,CAAgBI,WAAhB,EAAd;AACD;;;WACD,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;;;WAED,wBAAwC;AACtC,aAAO,MAAP;AACD;;;EAxBoCC,mB","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport MaskModels, { MaskModelType } from './models';\n\ninterface IMaskLayerStyleOptions {\n opacity: number;\n}\n\nexport default class MaskLayer extends BaseLayer<IMaskLayerStyleOptions> {\n public type: string = 'MaskLayer';\n public buildModels() {\n const shape = this.getModelType();\n this.layerModel = new MaskModels[shape](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getModelType(): MaskModelType {\n return 'fill';\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/mask/index.ts"],"names":["MaskLayer","shape","getModelType","layerModel","MaskModels","models","initModels","buildModels","properties","opacity","type","minimum","maximum","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;IAEqBA,S;;;;;;;;;;;;;;;uFACG,W;;;;;;WACtB,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIC,gBAAWH,KAAX,CAAJ,CAAsB,IAAtB,CAAlB;AACA,WAAKI,MAAL,GAAc,KAAKF,UAAL,CAAgBG,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKF,UAAL,CAAgBI,WAAhB,EAAd;AACD;;;WACD,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;;;WAED,wBAAwC;AACtC,aAAO,MAAP;AACD;;;EAxBoCC,mB","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport { IMaskLayerStyleOptions } from '../core/interface';\nimport MaskModels, { MaskModelType } from './models';\n\nexport default class MaskLayer extends BaseLayer<IMaskLayerStyleOptions> {\n public type: string = 'MaskLayer';\n public buildModels() {\n const shape = this.getModelType();\n this.layerModel = new MaskModels[shape](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getModelType(): MaskModelType {\n return 'fill';\n }\n}\n"],"file":"index.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mask/models/fill.ts"],"names":["MaskModel","layer","getLayerConfig","opacity","u_opacity","buildModels","buildLayerModel","moduleName","vertexShader","mask_vert","fragmentShader","mask_frag","triangulation","polygonTriangulation","blend","getBlend","depth","enable","stencil","mask","func","cmp","gl","ALWAYS","ref","opFront","fail","REPLACE","zfail","zpass","dataTexture","destroy","layerService","clear","BaseModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;;;;;;;;IAMqBA,S;;;;;;;;;;;;WACnB,wBAAsB;AACpB,iBAAwB,KAAKC,KAAL,CAAWC,cAAX,EAAxB;AAAA,8BAAQC,OAAR;AAAA,UAAQA,OAAR,6BAAkB,CAAlB;;AACA,aAAO;AACLC,QAAAA,SAAS,EAAE,wBAASD,OAAT,IAAoBA,OAApB,GAA8B;AADpC,OAAP;AAGD;;;WAED,sBAA8B;AAC5B,aAAO,KAAKE,WAAL,EAAP;AACD;;;WAED,uBAA+B;AAC7B,aAAO,CACL,KAAKJ,KAAL,CAAWK,eAAX,CAA2B;AACzBC,QAAAA,UAAU,EAAE,MADa;AAEzBC,QAAAA,YAAY,EAAEC,SAFW;AAGzBC,QAAAA,cAAc,EAAEC,SAHS;AAIzBC,QAAAA,aAAa,EAAEC,mCAJU;AAKzBC,QAAAA,KAAK,EAAE,KAAKC,QAAL,EALkB;AAMzBC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,MAAM,EAAE;AAAV,SANkB;AAQzBC,QAAAA,OAAO,EAAE;AACPD,UAAAA,MAAM,EAAE,IADD;AAEPE,UAAAA,IAAI,EAAE,IAFC;AAGPC,UAAAA,IAAI,EAAE;AACJC,YAAAA,GAAG,EAAEC,WAAGC,MADJ;AAEJC,YAAAA,GAAG,EAAE,CAFD;AAGJL,YAAAA,IAAI,EAAE;AAHF,WAHC;AAQPM,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAEJ,WAAGK,OADF;AAEPC,YAAAA,KAAK,EAAEN,WAAGK,OAFH;AAGPE,YAAAA,KAAK,EAAEP,WAAGK;AAHH;AARF;AARgB,OAA3B,CADK,CAAP;AAyBD;;;WAED,uBAAqB;AAAA;;AACnB,gCAAKG,WAAL,wEAAkBC,OAAlB;AACA,WAAKC,YAAL,CAAkBC,KAAlB;AACD;;;WAED,qCAAsC;AACpC,aAAO,EAAP;AACD;;;EA/CoCC,mB","sourcesContent":["import { gl, IModel } from '@antv/l7-core';\nimport { isNumber } from 'lodash';\nimport BaseModel, { styleSingle } from '../../core/BaseModel';\nimport { polygonTriangulation } from '../../core/triangulation';\nimport mask_frag from '../shaders/mask_frag.glsl';\nimport mask_vert from '../shaders/mask_vert.glsl';\ninterface IMaskStyleOptions {\n opacity: styleSingle;\n}\nexport default class MaskModel extends BaseModel {\n public getUninforms() {\n const { opacity = 0 } = this.layer.getLayerConfig() as IMaskStyleOptions;\n return {\n u_opacity: isNumber(opacity) ? opacity : 0.0,\n };\n }\n\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n return [\n this.layer.buildLayerModel({\n moduleName: 'mask',\n vertexShader: mask_vert,\n fragmentShader: mask_frag,\n triangulation: polygonTriangulation,\n blend: this.getBlend(),\n depth: { enable: false },\n\n stencil: {\n enable: true,\n mask: 0xff,\n func: {\n cmp: gl.ALWAYS,\n ref: 1,\n mask: 0xff,\n },\n opFront: {\n fail: gl.REPLACE,\n zfail: gl.REPLACE,\n zpass: gl.REPLACE,\n },\n },\n }),\n ];\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n this.layerService.clear();\n }\n\n protected registerBuiltinAttributes() {\n return '';\n }\n}\n"],"file":"fill.js"}
1
+ {"version":3,"sources":["../../../src/mask/models/fill.ts"],"names":["MaskModel","layer","getLayerConfig","opacity","u_opacity","buildModels","buildLayerModel","moduleName","vertexShader","mask_vert","fragmentShader","mask_frag","triangulation","polygonTriangulation","blend","getBlend","depth","enable","stencil","mask","func","cmp","gl","ALWAYS","ref","opFront","fail","REPLACE","zfail","zpass","dataTexture","destroy","layerService","clear","BaseModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAEA;;;;;;;;;IAIqBA,S;;;;;;;;;;;;WACnB,wBAAsB;AACpB,iBAEI,KAAKC,KAAL,CAAWC,cAAX,EAFJ;AAAA,8BACEC,OADF;AAAA,UACEA,OADF,6BACY,CADZ;;AAGA,aAAO;AACLC,QAAAA,SAAS,EAAE,wBAASD,OAAT,IAAoBA,OAApB,GAA8B;AADpC,OAAP;AAGD;;;WAED,sBAA8B;AAC5B,aAAO,KAAKE,WAAL,EAAP;AACD;;;WAED,uBAA+B;AAC7B,aAAO,CACL,KAAKJ,KAAL,CAAWK,eAAX,CAA2B;AACzBC,QAAAA,UAAU,EAAE,MADa;AAEzBC,QAAAA,YAAY,EAAEC,SAFW;AAGzBC,QAAAA,cAAc,EAAEC,SAHS;AAIzBC,QAAAA,aAAa,EAAEC,mCAJU;AAKzBC,QAAAA,KAAK,EAAE,KAAKC,QAAL,EALkB;AAMzBC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,MAAM,EAAE;AAAV,SANkB;AAQzBC,QAAAA,OAAO,EAAE;AACPD,UAAAA,MAAM,EAAE,IADD;AAEPE,UAAAA,IAAI,EAAE,IAFC;AAGPC,UAAAA,IAAI,EAAE;AACJC,YAAAA,GAAG,EAAEC,WAAGC,MADJ;AAEJC,YAAAA,GAAG,EAAE,CAFD;AAGJL,YAAAA,IAAI,EAAE;AAHF,WAHC;AAQPM,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAEJ,WAAGK,OADF;AAEPC,YAAAA,KAAK,EAAEN,WAAGK,OAFH;AAGPE,YAAAA,KAAK,EAAEP,WAAGK;AAHH;AARF;AARgB,OAA3B,CADK,CAAP;AAyBD;;;WAED,uBAAqB;AAAA;;AACnB,gCAAKG,WAAL,wEAAkBC,OAAlB;AACA,WAAKC,YAAL,CAAkBC,KAAlB;AACD;;;WAED,qCAAsC;AACpC,aAAO,EAAP;AACD;;;EAjDoCC,mB","sourcesContent":["import { gl, IModel } from '@antv/l7-core';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IMaskLayerStyleOptions } from '../../core/interface';\nimport { polygonTriangulation } from '../../core/triangulation';\nimport mask_frag from '../shaders/mask_frag.glsl';\nimport mask_vert from '../shaders/mask_vert.glsl';\n\nexport default class MaskModel extends BaseModel {\n public getUninforms() {\n const {\n opacity = 0,\n } = this.layer.getLayerConfig() as IMaskLayerStyleOptions;\n return {\n u_opacity: isNumber(opacity) ? opacity : 0.0,\n };\n }\n\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n return [\n this.layer.buildLayerModel({\n moduleName: 'mask',\n vertexShader: mask_vert,\n fragmentShader: mask_frag,\n triangulation: polygonTriangulation,\n blend: this.getBlend(),\n depth: { enable: false },\n\n stencil: {\n enable: true,\n mask: 0xff,\n func: {\n cmp: gl.ALWAYS,\n ref: 1,\n mask: 0xff,\n },\n opFront: {\n fail: gl.REPLACE,\n zfail: gl.REPLACE,\n zpass: gl.REPLACE,\n },\n },\n }),\n ];\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n this.layerService.clear();\n }\n\n protected registerBuiltinAttributes() {\n return '';\n }\n}\n"],"file":"fill.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/FeatureScalePlugin.ts"],"names":["dateRegex","scaleMap","ScaleTypes","LINEAR","d3","scaleLinear","POWER","scalePow","LOG","scaleLog","IDENTITY","scaleIdentity","TIME","scaleTime","QUANTILE","scaleQuantile","QUANTIZE","scaleQuantize","THRESHOLD","scaleThreshold","CAT","scaleOrdinal","FeatureScalePlugin","TYPES","IGlobalConfigService","layer","styleAttributeService","hooks","init","tap","scaleOptions","getScaleOptions","attributes","getLayerStyleAttributes","dataArray","getSource","data","length","caculateScalesForAttributes","beforeRenderData","layerModelNeedUpdate","beforeRender","attributesToRescale","filter","attribute","needRescale","n","isNaN","parseFloat","isFinite","scaleCache","forEach","scale","attributeScale","type","name","names","parseFields","field","scales","push","getOrCreateScale","some","StyleScaleType","VARIABLE","callback","values","option","tick","ticks","domain","range","CONSTANT","defaultValues","map","index","scalers","func","scalekey","join","styleScale","createScale","Array","isArray","split","scaleOption","undefined","createDefaultScale","firstValue","find","d","isNumber","getDefaultType","cfg","createDefaultScaleConfig","Object","assign","test","item"],"mappings":"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","sourcesContent":["import {\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n IScale,\n IScaleOptions,\n IStyleAttribute,\n IStyleAttributeService,\n IStyleScale,\n ScaleTypeName,\n ScaleTypes,\n StyleScaleType,\n TYPES,\n} from '@antv/l7-core';\nimport { IParseDataItem } from '@antv/l7-source';\nimport { extent, ticks } from 'd3-array';\nimport * as d3 from 'd3-scale';\nimport { inject, injectable } from 'inversify';\nimport { isNil, isString, uniq } from 'lodash';\nimport 'reflect-metadata';\n\nconst dateRegex = /^(?:(?!0000)[0-9]{4}([-/.]+)(?:(?:0?[1-9]|1[0-2])\\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\\1(?:29|30)|(?:0?[13578]|1[02])\\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]?)0?2\\2(?:29))(\\s+([01]|([01][0-9]|2[0-3])):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]))?$/;\n\nconst scaleMap = {\n [ScaleTypes.LINEAR]: d3.scaleLinear,\n [ScaleTypes.POWER]: d3.scalePow,\n [ScaleTypes.LOG]: d3.scaleLog,\n [ScaleTypes.IDENTITY]: d3.scaleIdentity,\n [ScaleTypes.TIME]: d3.scaleTime,\n [ScaleTypes.QUANTILE]: d3.scaleQuantile,\n [ScaleTypes.QUANTIZE]: d3.scaleQuantize,\n [ScaleTypes.THRESHOLD]: d3.scaleThreshold,\n [ScaleTypes.CAT]: d3.scaleOrdinal,\n};\n\n/**\n * 根据 Source 原始数据为指定字段创建 Scale,保存在 StyleAttribute 上,供下游插件使用\n */\n@injectable()\nexport default class FeatureScalePlugin implements ILayerPlugin {\n @inject(TYPES.IGlobalConfigService)\n private readonly configService: IGlobalConfigService;\n // key = field_attribute name\n private scaleCache: {\n [field: string]: IStyleScale;\n } = {};\n\n private scaleOptions: IScaleOptions = {};\n\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('FeatureScalePlugin', () => {\n this.scaleOptions = layer.getScaleOptions();\n const attributes = styleAttributeService.getLayerStyleAttributes();\n const { dataArray } = layer.getSource().data;\n if (dataArray.length === 0) {\n return;\n }\n this.caculateScalesForAttributes(attributes || [], dataArray);\n });\n\n // 检测数据是否需要更新\n layer.hooks.beforeRenderData.tap('FeatureScalePlugin', () => {\n this.scaleOptions = layer.getScaleOptions();\n const attributes = styleAttributeService.getLayerStyleAttributes();\n const { dataArray } = layer.getSource().data;\n this.caculateScalesForAttributes(attributes || [], dataArray);\n layer.layerModelNeedUpdate = true;\n return true;\n });\n\n layer.hooks.beforeRender.tap('FeatureScalePlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n this.scaleOptions = layer.getScaleOptions();\n const attributes = styleAttributeService.getLayerStyleAttributes();\n if (attributes) {\n const { dataArray } = layer.getSource().data;\n if (dataArray.length === 0) {\n return;\n }\n const attributesToRescale = attributes.filter(\n (attribute) => attribute.needRescale,\n );\n if (attributesToRescale.length) {\n this.caculateScalesForAttributes(attributesToRescale, dataArray);\n }\n }\n });\n }\n private isNumber(n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n private caculateScalesForAttributes(\n attributes: IStyleAttribute[],\n dataArray: IParseDataItem[],\n ) {\n this.scaleCache = {};\n attributes.forEach((attribute) => {\n if (attribute.scale) {\n // 创建Scale\n const attributeScale = attribute.scale;\n const type = attribute.name;\n attributeScale.names = this.parseFields(attribute!.scale!.field || []);\n const scales: IStyleScale[] = [];\n attributeScale.names.forEach((field: string | number) => {\n scales.push(this.getOrCreateScale(field, attribute, dataArray));\n });\n\n // 为scales 设置值区间\n if (scales.some((scale) => scale.type === StyleScaleType.VARIABLE)) {\n attributeScale.type = StyleScaleType.VARIABLE;\n scales.forEach((scale) => {\n // 如果设置了回调, 这不需要设置让range\n if (!attributeScale.callback) {\n if (attributeScale.values && attributeScale.values !== 'text') {\n if (\n scale.option?.type === 'linear' &&\n attributeScale.values.length > 2\n ) {\n const tick = scale.scale.ticks(attributeScale.values.length);\n if (type === 'color') {\n // TODO: 这里改变了值域,获取图例的时候有问题\n scale.scale.domain(tick);\n }\n }\n scale.scale.range(attributeScale.values); // 判断常量, 默认值\n } else if (scale.option?.type === 'cat') {\n // 如果没有设置初值且 类型为cat,range ==domain;\n\n scale.scale.range(scale.option.domain);\n }\n }\n });\n } else {\n // 设置attribute 常量值 常量直接在value取值\n attributeScale.type = StyleScaleType.CONSTANT;\n attributeScale.defaultValues = scales.map((scale, index) => {\n return scale.scale(attributeScale.names[index]);\n });\n }\n attributeScale.scalers = scales.map((scale: IStyleScale) => {\n return {\n field: scale.field,\n func: scale.scale,\n option: scale.option,\n };\n });\n\n attribute.needRescale = false;\n }\n });\n }\n private getOrCreateScale(\n field: string | number,\n attribute: IStyleAttribute,\n dataArray: IParseDataItem[],\n ) {\n const scalekey = [field, attribute.name].join('_');\n const values = attribute.scale?.values;\n // if (this.scaleCache[scalekey]) {\n // return this.scaleCache[scalekey];\n // }\n const styleScale = this.createScale(\n field,\n attribute.name,\n values,\n dataArray,\n );\n // this.scaleCache[scalekey] = styleScale;\n return styleScale;\n }\n\n /**\n * @example\n * 'w*h' => ['w', 'h']\n * 'w' => ['w']\n */\n private parseFields(\n field: string[] | string | number[],\n ): string[] | number[] {\n if (Array.isArray(field)) {\n return field;\n }\n if (isString(field)) {\n return field.split('*');\n }\n return [field];\n }\n\n private createScale(\n field: string | number,\n name: string,\n values: unknown[] | string | undefined,\n data?: IParseDataItem[],\n ): IStyleScale {\n // scale 支持根据视觉通道和字段\n const scaleOption: IScale | undefined =\n this.scaleOptions[name] && this.scaleOptions[name]?.field === field\n ? this.scaleOptions[name]\n : this.scaleOptions[field];\n const styleScale: IStyleScale = {\n field,\n scale: undefined,\n type: StyleScaleType.VARIABLE,\n option: scaleOption,\n };\n\n if (!data || !data.length) {\n if (scaleOption && scaleOption.type) {\n styleScale.scale = this.createDefaultScale(scaleOption);\n } else {\n styleScale.scale = d3.scaleOrdinal([field]);\n styleScale.type = StyleScaleType.CONSTANT;\n }\n return styleScale;\n }\n const firstValue = data!.find((d) => !isNil(d[field]))?.[field];\n // 常量 Scale\n if (this.isNumber(field) || (isNil(firstValue) && !scaleOption)) {\n styleScale.scale = d3.scaleOrdinal([field]);\n styleScale.type = StyleScaleType.CONSTANT;\n } else {\n // 根据数据类型判断 默认等分位,时间,和枚举类型\n let type =\n (scaleOption && scaleOption.type) || this.getDefaultType(firstValue);\n if (values === 'text') {\n // text 为内置变 如果是文本则为cat\n type = ScaleTypes.CAT;\n }\n const cfg = this.createDefaultScaleConfig(type, field, data);\n Object.assign(cfg, scaleOption);\n styleScale.scale = this.createDefaultScale(cfg);\n styleScale.option = cfg;\n }\n return styleScale;\n }\n\n private getDefaultType(firstValue: unknown) {\n let type = ScaleTypes.LINEAR;\n if (typeof firstValue === 'string') {\n type = dateRegex.test(firstValue) ? ScaleTypes.TIME : ScaleTypes.CAT;\n }\n return type;\n }\n\n private createDefaultScaleConfig(\n type: ScaleTypeName,\n field: string | number,\n data?: IParseDataItem[],\n ) {\n const cfg: IScale = {\n type,\n };\n const values = data?.map((item) => item[field]) || [];\n // 默认类型为 Quantile Scales https://github.com/d3/d3-scale#quantile-scales\n if (type !== ScaleTypes.CAT && type !== ScaleTypes.QUANTILE) {\n cfg.domain = extent(values);\n } else if (type === ScaleTypes.CAT) {\n cfg.domain = uniq(values);\n } else if (type === ScaleTypes.QUANTILE) {\n cfg.domain = values;\n }\n return cfg;\n }\n\n private createDefaultScale({ type, domain }: IScale) {\n // @ts-ignore\n const scale = scaleMap[type]();\n if (domain) {\n scale.domain(domain);\n }\n // TODO 其他属性支持\n return scale;\n }\n}\n"],"file":"FeatureScalePlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/FeatureScalePlugin.ts"],"names":["dateRegex","scaleMap","ScaleTypes","LINEAR","d3","scaleLinear","POWER","scalePow","LOG","scaleLog","IDENTITY","scaleIdentity","TIME","scaleTime","QUANTILE","scaleQuantile","QUANTIZE","scaleQuantize","THRESHOLD","scaleThreshold","CAT","scaleOrdinal","FeatureScalePlugin","TYPES","IGlobalConfigService","layer","styleAttributeService","hooks","init","tap","scaleOptions","getScaleOptions","attributes","getLayerStyleAttributes","dataArray","getSource","data","length","caculateScalesForAttributes","beforeRenderData","layerModelNeedUpdate","beforeRender","attributesToRescale","filter","attribute","needRescale","n","isNaN","parseFloat","isFinite","scaleCache","forEach","scale","attributeScale","type","name","names","parseFields","field","scales","push","getOrCreateScale","some","StyleScaleType","VARIABLE","callback","values","option","tick","ticks","domain","range","CONSTANT","defaultValues","map","index","scalers","func","scalekey","join","styleScale","createScale","Array","isArray","split","scaleOption","undefined","createDefaultScale","firstValue","find","d","isNumber","getDefaultType","cfg","createDefaultScaleConfig","Object","assign","test","item"],"mappings":"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","sourcesContent":["import {\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n IScale,\n IScaleOptions,\n IStyleAttribute,\n IStyleAttributeService,\n IStyleScale,\n ScaleTypeName,\n ScaleTypes,\n StyleScaleType,\n TYPES,\n} from '@antv/l7-core';\nimport { IParseDataItem } from '@antv/l7-source';\nimport { extent, ticks } from 'd3-array';\nimport * as d3 from 'd3-scale';\nimport { inject, injectable } from 'inversify';\nimport { isNil, isString, uniq } from 'lodash';\nimport 'reflect-metadata';\n\nconst dateRegex = /^(?:(?!0000)[0-9]{4}([-/.]+)(?:(?:0?[1-9]|1[0-2])\\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\\1(?:29|30)|(?:0?[13578]|1[02])\\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]?)0?2\\2(?:29))(\\s+([01]|([01][0-9]|2[0-3])):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]))?$/;\n\nconst scaleMap = {\n [ScaleTypes.LINEAR]: d3.scaleLinear,\n [ScaleTypes.POWER]: d3.scalePow,\n [ScaleTypes.LOG]: d3.scaleLog,\n [ScaleTypes.IDENTITY]: d3.scaleIdentity,\n [ScaleTypes.TIME]: d3.scaleTime,\n [ScaleTypes.QUANTILE]: d3.scaleQuantile,\n [ScaleTypes.QUANTIZE]: d3.scaleQuantize,\n [ScaleTypes.THRESHOLD]: d3.scaleThreshold,\n [ScaleTypes.CAT]: d3.scaleOrdinal,\n};\n\n/**\n * 根据 Source 原始数据为指定字段创建 Scale,保存在 StyleAttribute 上,供下游插件使用\n */\n@injectable()\nexport default class FeatureScalePlugin implements ILayerPlugin {\n @inject(TYPES.IGlobalConfigService)\n private readonly configService: IGlobalConfigService;\n // key = field_attribute name\n private scaleCache: {\n [field: string]: IStyleScale;\n } = {};\n\n private scaleOptions: IScaleOptions = {};\n\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('FeatureScalePlugin', () => {\n this.scaleOptions = layer.getScaleOptions();\n const attributes = styleAttributeService.getLayerStyleAttributes();\n const { dataArray } = layer.getSource().data;\n if (dataArray.length === 0) {\n return;\n }\n this.caculateScalesForAttributes(attributes || [], dataArray);\n });\n\n // 检测数据是否需要更新\n layer.hooks.beforeRenderData.tap('FeatureScalePlugin', () => {\n this.scaleOptions = layer.getScaleOptions();\n const attributes = styleAttributeService.getLayerStyleAttributes();\n const { dataArray } = layer.getSource().data;\n this.caculateScalesForAttributes(attributes || [], dataArray);\n layer.layerModelNeedUpdate = true;\n return true;\n });\n\n layer.hooks.beforeRender.tap('FeatureScalePlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n this.scaleOptions = layer.getScaleOptions();\n const attributes = styleAttributeService.getLayerStyleAttributes();\n if (attributes) {\n const { dataArray } = layer.getSource().data;\n if (dataArray.length === 0) {\n return;\n }\n const attributesToRescale = attributes.filter(\n (attribute) => attribute.needRescale,\n );\n if (attributesToRescale.length) {\n this.caculateScalesForAttributes(attributesToRescale, dataArray);\n }\n }\n });\n }\n private isNumber(n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n private caculateScalesForAttributes(\n attributes: IStyleAttribute[],\n dataArray: IParseDataItem[],\n ) {\n this.scaleCache = {};\n attributes.forEach((attribute) => {\n if (attribute.scale) {\n // 创建Scale\n const attributeScale = attribute.scale;\n const type = attribute.name;\n attributeScale.names = this.parseFields(attribute!.scale!.field || []);\n const scales: IStyleScale[] = [];\n attributeScale.names.forEach((field: string | number) => {\n scales.push(this.getOrCreateScale(field, attribute, dataArray));\n });\n\n // 为scales 设置值区间\n if (scales.some((scale) => scale.type === StyleScaleType.VARIABLE)) {\n attributeScale.type = StyleScaleType.VARIABLE;\n scales.forEach((scale) => {\n // 如果设置了回调, 这不需要设置让range\n if (!attributeScale.callback) {\n if (attributeScale.values && attributeScale.values !== 'text') {\n if (\n scale.option?.type === 'linear' &&\n attributeScale.values.length > 2\n ) {\n const tick = scale.scale.ticks(attributeScale.values.length);\n if (type === 'color') {\n // TODO: 这里改变了值域,获取图例的时候有问题\n scale.scale.domain(tick);\n }\n }\n scale.scale.range(attributeScale.values); // 判断常量, 默认值\n } else if (scale.option?.type === 'cat') {\n // 如果没有设置初值且 类型为cat,range ==domain;\n\n scale.scale.range(scale.option.domain);\n }\n }\n });\n } else {\n // 设置attribute 常量值 常量直接在value取值\n attributeScale.type = StyleScaleType.CONSTANT;\n attributeScale.defaultValues = scales.map((scale, index) => {\n return scale.scale(attributeScale.names[index]);\n });\n }\n attributeScale.scalers = scales.map((scale: IStyleScale) => {\n return {\n field: scale.field,\n func: scale.scale,\n option: scale.option,\n };\n });\n\n attribute.needRescale = false;\n }\n });\n }\n private getOrCreateScale(\n field: string | number,\n attribute: IStyleAttribute,\n dataArray: IParseDataItem[],\n ) {\n const scalekey = [field, attribute.name].join('_');\n const values = attribute.scale?.values;\n // if (this.scaleCache[scalekey]) {\n // return this.scaleCache[scalekey];\n // }\n const styleScale = this.createScale(\n field,\n attribute.name,\n values,\n dataArray,\n );\n // this.scaleCache[scalekey] = styleScale;\n return styleScale;\n }\n\n /**\n * @example\n * 'w*h' => ['w', 'h']\n * 'w' => ['w']\n */\n private parseFields(\n field: string[] | string | number[] | number,\n ): string[] | number[] {\n if (Array.isArray(field)) {\n return field;\n }\n if (isString(field)) {\n return field.split('*');\n }\n return [field];\n }\n\n private createScale(\n field: string | number,\n name: string,\n values: unknown[] | string | undefined,\n data?: IParseDataItem[],\n ): IStyleScale {\n // scale 支持根据视觉通道和字段\n const scaleOption: IScale | undefined =\n this.scaleOptions[name] && this.scaleOptions[name]?.field === field\n ? this.scaleOptions[name]\n : this.scaleOptions[field];\n const styleScale: IStyleScale = {\n field,\n scale: undefined,\n type: StyleScaleType.VARIABLE,\n option: scaleOption,\n };\n\n if (!data || !data.length) {\n if (scaleOption && scaleOption.type) {\n styleScale.scale = this.createDefaultScale(scaleOption);\n } else {\n styleScale.scale = d3.scaleOrdinal([field]);\n styleScale.type = StyleScaleType.CONSTANT;\n }\n return styleScale;\n }\n const firstValue = data!.find((d) => !isNil(d[field]))?.[field];\n // 常量 Scale\n if (this.isNumber(field) || (isNil(firstValue) && !scaleOption)) {\n styleScale.scale = d3.scaleOrdinal([field]);\n styleScale.type = StyleScaleType.CONSTANT;\n } else {\n // 根据数据类型判断 默认等分位,时间,和枚举类型\n let type =\n (scaleOption && scaleOption.type) || this.getDefaultType(firstValue);\n if (values === 'text') {\n // text 为内置变 如果是文本则为cat\n type = ScaleTypes.CAT;\n }\n const cfg = this.createDefaultScaleConfig(type, field, data);\n Object.assign(cfg, scaleOption);\n styleScale.scale = this.createDefaultScale(cfg);\n styleScale.option = cfg;\n }\n return styleScale;\n }\n\n private getDefaultType(firstValue: unknown) {\n let type = ScaleTypes.LINEAR;\n if (typeof firstValue === 'string') {\n type = dateRegex.test(firstValue) ? ScaleTypes.TIME : ScaleTypes.CAT;\n }\n return type;\n }\n\n private createDefaultScaleConfig(\n type: ScaleTypeName,\n field: string | number,\n data?: IParseDataItem[],\n ) {\n const cfg: IScale = {\n type,\n };\n const values = data?.map((item) => item[field]) || [];\n // 默认类型为 Quantile Scales https://github.com/d3/d3-scale#quantile-scales\n if (type !== ScaleTypes.CAT && type !== ScaleTypes.QUANTILE) {\n cfg.domain = extent(values);\n } else if (type === ScaleTypes.CAT) {\n cfg.domain = uniq(values);\n } else if (type === ScaleTypes.QUANTILE) {\n cfg.domain = values;\n }\n return cfg;\n }\n\n private createDefaultScale({ type, domain }: IScale) {\n // @ts-ignore\n const scale = scaleMap[type]();\n if (domain) {\n scale.domain(domain);\n }\n // TODO 其他属性支持\n return scale;\n }\n}\n"],"file":"FeatureScalePlugin.js"}
@@ -21,8 +21,6 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
21
21
 
22
22
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
23
 
24
- var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
25
-
26
24
  var _l7Core = require("@antv/l7-core");
27
25
 
28
26
  var _l7Utils = require("@antv/l7-utils");
@@ -39,8 +37,8 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
39
37
 
40
38
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
41
39
 
42
- var pointExtrudeFrag = "varying vec4 v_color;\nuniform float u_opacity: 1.0;\n\nvarying float v_z;\nvarying float v_lightWeight;\nuniform float u_pickLight: 0.0;\n\n#pragma include \"picking\"\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\nuniform float u_linearColor: 0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\n\nuniform float u_opacitylinear: 0.0;\nuniform float u_opacitylinear_dir: 1.0;\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n\n // \u8BBE\u7F6E\u5706\u67F1\u7684\u5E95\u8272\n if(u_linearColor == 1.0) { // \u4F7F\u7528\u6E10\u53D8\u989C\u8272\n gl_FragColor = mix(u_sourceColor, u_targetColor, v_z);\n gl_FragColor.rgb *= v_lightWeight;\n } else { // \u4F7F\u7528 color \u65B9\u6CD5\u4F20\u5165\u7684\u989C\u8272\n gl_FragColor = v_color;\n }\n\n // \u5E94\u7528\u900F\u660E\u5EA6\n gl_FragColor.a *= opacity;\n\n // \u5F00\u542F\u900F\u660E\u5EA6\u6E10\u53D8\n if(u_opacitylinear > 0.0) {\n gl_FragColor.a *= u_opacitylinear_dir > 0.0 ? (1.0 - v_z): v_z;\n }\n\n // picking\n if(u_pickLight > 0.0) {\n gl_FragColor = filterColorAlpha(gl_FragColor, v_lightWeight);\n } else {\n gl_FragColor = filterColor(gl_FragColor);\n }\n}\n";
43
- var pointExtrudeVert = "precision highp float;\n\n#define pi 3.1415926535\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec3 a_Position;\nattribute vec3 a_Pos;\nattribute vec4 a_Color;\nattribute vec3 a_Size;\nattribute vec3 a_Normal;\n\nuniform float u_heightfixed: 0.0; // \u9ED8\u8BA4\u4E0D\u56FA\u5B9A\nuniform float u_globel;\nuniform float u_r;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nvarying vec4 v_color;\n\nuniform float u_opacity : 1;\nuniform float u_lightEnable: 1;\n\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\nvarying float v_z;\nvarying float v_lightWeight;\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nfloat getYRadian(float x, float z) {\n if(x > 0.0 && z > 0.0) {\n return atan(x/z);\n } else if(x > 0.0 && z <= 0.0){\n return atan(-z/x) + pi/2.0;\n } else if(x <= 0.0 && z <= 0.0) {\n return pi + atan(x/z); //atan(x/z) + \n } else {\n return atan(z/-x) + pi*3.0/2.0;\n }\n}\n\nfloat getXRadian(float y, float r) {\n return atan(y/r);\n}\n\nvoid main() {\n\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\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 vec3 size = a_Size * a_Position;\n\n // a_Position.z \u662F\u5728\u6784\u5EFA\u7F51\u683C\u7684\u65F6\u5019\u4F20\u5165\u7684\u6807\u51C6\u503C 0 - 1\uFF0C\u5728\u63D2\u503C\u5668\u63D2\u503C\u53EF\u4EE5\u83B7\u53D6 0\uFF5E1 \u7EBF\u6027\u6E10\u53D8\u7684\u503C\n v_z = a_Position.z;\n\n \n\n // vec2 offset = project_pixel(size.xy);\n // vec2 offset = (size.xy);\n\n vec3 offset = size; // \u63A7\u5236\u5706\u67F1\u4F53\u7684\u5927\u5C0F - \u4ECE\u6807\u51C6\u5355\u4F4D\u5706\u67F1\u4F53\u8FDB\u884C\u504F\u79FB\n if(u_heightfixed < 1.0) { // \u5706\u67F1\u4F53\u4E0D\u56FA\u5B9A\u9AD8\u5EA6\n // offset = project_pixel(offset);\n if (u_CoordinateSystem == COORDINATE_SYSTEM_P20 || u_CoordinateSystem == COORDINATE_SYSTEM_P20_OFFSET) {\n // P20 \u5750\u6807\u7CFB\u4E0B\uFF0C\u4E3A\u4E86\u548C Web \u58A8\u5361\u6258\u5750\u6807\u7CFB\u7EDF\u4E00\uFF0Czoom \u9ED8\u8BA4\u51CF1\n offset = offset * pow(2.0, (19.0 - u_Zoom));\n }\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n // P20_2 \u5750\u6807\u7CFB\u4E0B\uFF0C\u4E3A\u4E86\u548C Web \u58A8\u5361\u6258\u5750\u6807\u7CFB\u7EDF\u4E00\uFF0Czoom \u9ED8\u8BA4\u51CF3\n offset = offset * pow(2.0, (19.0 - 3.0 - u_Zoom));\n }\n } else {// \u5706\u67F1\u4F53\u56FA\u5B9A\u9AD8\u5EA6 \uFF08 \u5904\u7406 mapbox \uFF09\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n offset *= 4.0/pow(2.0, 21.0 - u_Zoom);\n }\n }\n\n\n vec4 project_pos = project_position(vec4(a_Pos.xy, 0., 1.0));\n\n // vec4 pos = vec4(project_pos.xy + offset, project_pixel(size.z) * u_r, 1.0);\n // u_r \u63A7\u5236\u5706\u67F1\u7684\u751F\u957F\n vec4 pos = vec4(project_pos.xy + offset.xy, offset.z * u_r, 1.0);\n\n // \u5706\u67F1\u5149\u7167\u6548\u679C\n // float lightWeight = u_lightEnable > 0.0 ? calc_lighting(pos): 1.0;\n float lightWeight = 1.0;\n if(u_lightEnable > 0.0) { // \u53D6\u6D88\u4E09\u5143\u8868\u8FBE\u5F0F\uFF0C\u589E\u5F3A\u5065\u58EE\u6027\n lightWeight = calc_lighting(pos);\n }\n v_lightWeight = lightWeight;\n\n v_color =vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n // gl_Position = project_common_position_to_clipspace(pos);\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * pos;\n } else {\n gl_Position = project_common_position_to_clipspace(pos);\n }\n \n if(u_globel > 0.0) {\n // \u5728\u5730\u7403\u6A21\u5F0F\u4E0B\uFF0C\u5C06\u539F\u672C\u5782\u76F4\u4E8E xy \u5E73\u9762\u7684\u5706\u67F1\u8C03\u6574\u59FF\u6001\u5230\u9002\u5E94\u5706\u7684\u89D2\u5EA6\n //\u65CB\u8F6C\u77E9\u9635mx\uFF0C\u521B\u5EFA\u7ED5x\u8F74\u65CB\u8F6C\u77E9\u9635\n float r = sqrt(a_Pos.z*a_Pos.z + a_Pos.x*a_Pos.x);\n float xRadian = getXRadian(a_Pos.y, r);\n float xcos = cos(xRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u4F59\u5F26\u503C\n float xsin = sin(xRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u6B63\u5F26\u503C\n mat4 mx = mat4(\n 1,0,0,0, \n 0,xcos,-xsin,0, \n 0,xsin,xcos,0, \n 0,0,0,1);\n\n //\u65CB\u8F6C\u77E9\u9635my\uFF0C\u521B\u5EFA\u7ED5y\u8F74\u65CB\u8F6C\u77E9\u9635\n float yRadian = getYRadian(a_Pos.x, a_Pos.z);\n float ycos = cos(yRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u4F59\u5F26\u503C\n float ysin = sin(yRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u6B63\u5F26\u503C\n mat4 my = mat4(\n ycos,0,-ysin,0, \n 0,1,0,0, \n ysin,0,ycos,0, \n 0,0,0,1);\n\n gl_Position = u_ViewProjectionMatrix * vec4(( my * mx * vec4(a_Position * a_Size, 1.0)).xyz + a_Pos, 1.0);\n }\n\n setPickingColor(a_PickingColor);\n}\n";
40
+ var pointExtrudeFrag = "varying vec4 v_color;\nuniform float u_opacity: 1.0;\n\nuniform float u_pickLight: 0.0;\n\n#pragma include \"picking\"\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\nuniform float u_linearColor: 0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\n\nuniform float u_opacitylinear: 0.0;\nuniform float u_opacitylinear_dir: 1.0;\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float lightWeight = styleMappingMat[1][3];\n float barLinearZ = styleMappingMat[2][3];\n\n // \u8BBE\u7F6E\u5706\u67F1\u7684\u5E95\u8272\n if(u_linearColor == 1.0) { // \u4F7F\u7528\u6E10\u53D8\u989C\u8272\n gl_FragColor = mix(u_sourceColor, u_targetColor, barLinearZ);\n gl_FragColor.rgb *= lightWeight;\n } else { // \u4F7F\u7528 color \u65B9\u6CD5\u4F20\u5165\u7684\u989C\u8272\n gl_FragColor = v_color;\n }\n\n // \u5E94\u7528\u900F\u660E\u5EA6\n gl_FragColor.a *= opacity;\n\n // \u5F00\u542F\u900F\u660E\u5EA6\u6E10\u53D8\n if(u_opacitylinear > 0.0) {\n gl_FragColor.a *= u_opacitylinear_dir > 0.0 ? (1.0 - barLinearZ): barLinearZ;\n }\n\n // picking\n if(u_pickLight > 0.0) {\n gl_FragColor = filterColorAlpha(gl_FragColor, lightWeight);\n } else {\n gl_FragColor = filterColor(gl_FragColor);\n }\n}\n";
41
+ var pointExtrudeVert = "precision highp float;\n\n#define pi 3.1415926535\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec3 a_Position;\nattribute vec3 a_Pos;\nattribute vec4 a_Color;\nattribute vec3 a_Size;\nattribute vec3 a_Normal;\n\nuniform float u_heightfixed: 0.0; // \u9ED8\u8BA4\u4E0D\u56FA\u5B9A\nuniform float u_globel;\nuniform float u_r;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nvarying vec4 v_color;\n\nuniform float u_opacity : 1;\nuniform float u_lightEnable: 1;\n\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\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nfloat getYRadian(float x, float z) {\n if(x > 0.0 && z > 0.0) {\n return atan(x/z);\n } else if(x > 0.0 && z <= 0.0){\n return atan(-z/x) + pi/2.0;\n } else if(x <= 0.0 && z <= 0.0) {\n return pi + atan(x/z); //atan(x/z) + \n } else {\n return atan(z/-x) + pi*3.0/2.0;\n }\n}\n\nfloat getXRadian(float y, float r) {\n return atan(y/r);\n}\n\nvoid main() {\n\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 - lightWeight\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1] - linearZ(\u5782\u76F4\u65B9\u5411 0 - 1 \u7684\u503C)\n 0.0, 0.0, 0.0, 0.0\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 vec3 size = a_Size * a_Position;\n\n // a_Position.z \u662F\u5728\u6784\u5EFA\u7F51\u683C\u7684\u65F6\u5019\u4F20\u5165\u7684\u6807\u51C6\u503C 0 - 1\uFF0C\u5728\u63D2\u503C\u5668\u63D2\u503C\u53EF\u4EE5\u83B7\u53D6 0\uFF5E1 \u7EBF\u6027\u6E10\u53D8\u7684\u503C\n styleMappingMat[2][3] = a_Position.z;\n\n vec3 offset = size; // \u63A7\u5236\u5706\u67F1\u4F53\u7684\u5927\u5C0F - \u4ECE\u6807\u51C6\u5355\u4F4D\u5706\u67F1\u4F53\u8FDB\u884C\u504F\u79FB\n if(u_heightfixed < 1.0) { // \u5706\u67F1\u4F53\u4E0D\u56FA\u5B9A\u9AD8\u5EA6\n \n if (u_CoordinateSystem == COORDINATE_SYSTEM_P20 || u_CoordinateSystem == COORDINATE_SYSTEM_P20_OFFSET) {\n // P20 \u5750\u6807\u7CFB\u4E0B\uFF0C\u4E3A\u4E86\u548C Web \u58A8\u5361\u6258\u5750\u6807\u7CFB\u7EDF\u4E00\uFF0Czoom \u9ED8\u8BA4\u51CF1\n offset = offset * pow(2.0, (19.0 - u_Zoom));\n }\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n // P20_2 \u5750\u6807\u7CFB\u4E0B\uFF0C\u4E3A\u4E86\u548C Web \u58A8\u5361\u6258\u5750\u6807\u7CFB\u7EDF\u4E00\uFF0Czoom \u9ED8\u8BA4\u51CF3\n offset = offset * pow(2.0, (19.0 - 3.0 - u_Zoom));\n }\n } else {// \u5706\u67F1\u4F53\u56FA\u5B9A\u9AD8\u5EA6 \uFF08 \u5904\u7406 mapbox \uFF09\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n offset *= 4.0/pow(2.0, 21.0 - u_Zoom);\n }\n }\n\n\n vec4 project_pos = project_position(vec4(a_Pos.xy, 0., 1.0));\n\n // u_r \u63A7\u5236\u5706\u67F1\u7684\u751F\u957F\n vec4 pos = vec4(project_pos.xy + offset.xy, offset.z * u_r, 1.0);\n\n // \u5706\u67F1\u5149\u7167\u6548\u679C\n float lightWeight = 1.0;\n if(u_lightEnable > 0.0) { // \u53D6\u6D88\u4E09\u5143\u8868\u8FBE\u5F0F\uFF0C\u589E\u5F3A\u5065\u58EE\u6027\n lightWeight = calc_lighting(pos);\n }\n styleMappingMat[1][3] = lightWeight;\n\n v_color =vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n // gl_Position = project_common_position_to_clipspace(pos);\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * pos;\n } else {\n gl_Position = project_common_position_to_clipspace(pos);\n }\n \n if(u_globel > 0.0) {\n // \u5728\u5730\u7403\u6A21\u5F0F\u4E0B\uFF0C\u5C06\u539F\u672C\u5782\u76F4\u4E8E xy \u5E73\u9762\u7684\u5706\u67F1\u8C03\u6574\u59FF\u6001\u5230\u9002\u5E94\u5706\u7684\u89D2\u5EA6\n //\u65CB\u8F6C\u77E9\u9635mx\uFF0C\u521B\u5EFA\u7ED5x\u8F74\u65CB\u8F6C\u77E9\u9635\n float r = sqrt(a_Pos.z*a_Pos.z + a_Pos.x*a_Pos.x);\n float xRadian = getXRadian(a_Pos.y, r);\n float xcos = cos(xRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u4F59\u5F26\u503C\n float xsin = sin(xRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u6B63\u5F26\u503C\n mat4 mx = mat4(\n 1,0,0,0, \n 0,xcos,-xsin,0, \n 0,xsin,xcos,0, \n 0,0,0,1);\n\n //\u65CB\u8F6C\u77E9\u9635my\uFF0C\u521B\u5EFA\u7ED5y\u8F74\u65CB\u8F6C\u77E9\u9635\n float yRadian = getYRadian(a_Pos.x, a_Pos.z);\n float ycos = cos(yRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u4F59\u5F26\u503C\n float ysin = sin(yRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u6B63\u5F26\u503C\n mat4 my = mat4(\n ycos,0,-ysin,0, \n 0,1,0,0, \n ysin,0,ycos,0, \n 0,0,0,1);\n\n gl_Position = u_ViewProjectionMatrix * vec4(( my * mx * vec4(a_Position * a_Size, 1.0)).xyz + a_Pos, 1.0);\n }\n\n setPickingColor(a_PickingColor);\n}\n";
44
42
 
45
43
  var ExtrudeModel = function (_BaseModel) {
46
44
  (0, _inherits2.default)(ExtrudeModel, _BaseModel);
@@ -155,7 +153,7 @@ var ExtrudeModel = function (_BaseModel) {
155
153
  u_globel: this.mapService.version === 'GLOBEL' ? 1 : 0,
156
154
  u_dataTexture: this.dataTexture,
157
155
  u_cellTypeLayout: this.getCellTypeLayout(),
158
- u_opacity: (0, _isNumber2.default)(opacity) ? opacity : 1.0,
156
+ u_opacity: Number(opacity),
159
157
  u_linearColor: useLinearColor,
160
158
  u_sourceColor: sourceColorArr,
161
159
  u_targetColor: targetColorArr,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/point/models/extrude.ts"],"names":["ExtrudeModel","layer","getLayerConfig","animateOption","enable","speed","repeat","opacity","sourceColor","targetColor","pickLight","heightfixed","opacityLinear","dir","lightEnable","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","useLinearColor","sourceColorArr","targetColorArr","raiseCount","raiserepeat","u_pickLight","Number","u_heightfixed","u_r","u_globel","mapService","version","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_linearColor","u_sourceColor","u_targetColor","u_opacitylinear","u_opacitylinear_dir","u_lightEnable","buildModels","depth","buildLayerModel","moduleName","vertexShader","pointExtrudeVert","fragmentShader","pointExtrudeFrag","triangulation","PointExtrudeTriangulation","blend","getBlend","cull","face","destroy","isGlobel","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","buffersize","Array","isArray","STATIC_DRAW","normal","coordinates","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n} from '@antv/l7-core';\nimport { getCullFace, rgb2arr } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport { PointExtrudeTriangulation } from '../../core/triangulation';\nimport { lglt2xyz } from '../../earth/utils';\nimport { calculateCentroid } from '../../utils/geo';\nimport pointExtrudeFrag from '../shaders/extrude/extrude_frag.glsl';\nimport pointExtrudeVert from '../shaders/extrude/extrude_vert.glsl';\n\nexport default class ExtrudeModel extends BaseModel {\n private raiseCount: number = 0;\n private raiserepeat: number = 0;\n public getUninforms() {\n const {\n animateOption = {\n enable: false,\n speed: 0.01,\n repeat: false,\n },\n opacity = 1,\n\n sourceColor,\n targetColor,\n\n pickLight = false,\n heightfixed = false,\n\n opacityLinear = {\n enable: false,\n dir: 'up',\n },\n\n lightEnable = true,\n } = this.layer.getLayerConfig() as Partial<\n ILayerConfig & IPointLayerStyleOptions\n >;\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n })\n ) {\n this.judgeStyleAttributes({\n opacity,\n });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n // 转化渐变色\n let useLinearColor = 0; // 默认不生效\n let sourceColorArr = [0, 0, 0, 0];\n let targetColorArr = [0, 0, 0, 0];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n useLinearColor = 1;\n }\n\n if (this.raiseCount < 1 && this.raiserepeat > 0) {\n if (animateOption.enable) {\n const { speed = 0.01, repeat = false } = animateOption;\n this.raiseCount += speed;\n if (this.raiseCount >= 1) {\n if (this.raiserepeat > 1) {\n this.raiseCount = 0;\n this.raiserepeat--;\n } else {\n this.raiseCount = 1;\n }\n }\n }\n }\n\n return {\n // 圆柱体的拾取高亮是否要计算光照\n u_pickLight: Number(pickLight),\n // 圆柱体是否固定高度\n u_heightfixed: Number(heightfixed),\n\n u_r: animateOption.enable && this.raiserepeat > 0 ? this.raiseCount : 1.0,\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n u_globel: this.mapService.version === 'GLOBEL' ? 1 : 0,\n\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n // u_opacity: opacity || 1.0,\n // u_offsets: offsets || [0, 0],\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n\n // 透明度渐变\n u_opacitylinear: Number(opacityLinear.enable),\n u_opacitylinear_dir: opacityLinear.dir === 'up' ? 1.0 : 0.0,\n\n // 光照计算开关\n u_lightEnable: Number(lightEnable),\n };\n }\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n // GAODE1.x GAODE2.x MAPBOX\n const {\n depth = true,\n animateOption: { repeat = 1 },\n } = this.layer.getLayerConfig() as ILayerConfig;\n this.raiserepeat = repeat;\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointExtrude2',\n vertexShader: pointExtrudeVert,\n fragmentShader: pointExtrudeFrag,\n triangulation: PointExtrudeTriangulation,\n blend: this.getBlend(),\n cull: {\n enable: true,\n face: getCullFace(this.mapService.version),\n },\n depth: {\n enable: depth,\n },\n // primitive: gl.POINTS,\n }),\n ];\n }\n public clearModels() {\n this.dataTexture?.destroy();\n }\n protected registerBuiltinAttributes() {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size } = feature;\n if (size) {\n let buffersize: number[] = [];\n if (Array.isArray(size)) {\n buffersize =\n size.length === 2 ? [size[0], size[0], size[1]] : size;\n }\n if (!Array.isArray(size)) {\n buffersize = [size, size, size];\n }\n return buffersize;\n } else {\n return [2, 2, 2];\n }\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'pos',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Pos',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (feature: IEncodeFeature, featureIdx: number) => {\n const coordinates = calculateCentroid(feature.coordinates);\n if (isGlobel) {\n // TODO: 在地球模式下需要将传入 shader 的经纬度转化成对应的 xyz 坐标\n return lglt2xyz([coordinates[0], coordinates[1]]) as [\n number,\n number,\n number,\n ];\n } else {\n return [coordinates[0], coordinates[1], 0];\n }\n },\n },\n });\n }\n}\n"],"file":"extrude.js"}
1
+ {"version":3,"sources":["../../../src/point/models/extrude.ts"],"names":["ExtrudeModel","layer","getLayerConfig","animateOption","enable","speed","repeat","opacity","sourceColor","targetColor","pickLight","heightfixed","opacityLinear","dir","lightEnable","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","useLinearColor","sourceColorArr","targetColorArr","raiseCount","raiserepeat","u_pickLight","Number","u_heightfixed","u_r","u_globel","mapService","version","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_linearColor","u_sourceColor","u_targetColor","u_opacitylinear","u_opacitylinear_dir","u_lightEnable","buildModels","depth","buildLayerModel","moduleName","vertexShader","pointExtrudeVert","fragmentShader","pointExtrudeFrag","triangulation","PointExtrudeTriangulation","blend","getBlend","cull","face","destroy","isGlobel","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","buffersize","Array","isArray","STATIC_DRAW","normal","coordinates","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n} from '@antv/l7-core';\nimport { getCullFace, rgb2arr } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport { PointExtrudeTriangulation } from '../../core/triangulation';\nimport { lglt2xyz } from '../../earth/utils';\nimport { calculateCentroid } from '../../utils/geo';\nimport pointExtrudeFrag from '../shaders/extrude/extrude_frag.glsl';\nimport pointExtrudeVert from '../shaders/extrude/extrude_vert.glsl';\n\nexport default class ExtrudeModel extends BaseModel {\n private raiseCount: number = 0;\n private raiserepeat: number = 0;\n public getUninforms() {\n const {\n animateOption = {\n enable: false,\n speed: 0.01,\n repeat: false,\n },\n opacity = 1,\n\n sourceColor,\n targetColor,\n\n pickLight = false,\n heightfixed = false,\n\n opacityLinear = {\n enable: false,\n dir: 'up',\n },\n\n lightEnable = true,\n } = this.layer.getLayerConfig() as Partial<\n ILayerConfig & IPointLayerStyleOptions\n >;\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n })\n ) {\n this.judgeStyleAttributes({\n opacity,\n });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n // 转化渐变色\n let useLinearColor = 0; // 默认不生效\n let sourceColorArr = [0, 0, 0, 0];\n let targetColorArr = [0, 0, 0, 0];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n useLinearColor = 1;\n }\n\n if (this.raiseCount < 1 && this.raiserepeat > 0) {\n if (animateOption.enable) {\n const { speed = 0.01, repeat = false } = animateOption;\n this.raiseCount += speed;\n if (this.raiseCount >= 1) {\n if (this.raiserepeat > 1) {\n this.raiseCount = 0;\n this.raiserepeat--;\n } else {\n this.raiseCount = 1;\n }\n }\n }\n }\n\n return {\n // 圆柱体的拾取高亮是否要计算光照\n u_pickLight: Number(pickLight),\n // 圆柱体是否固定高度\n u_heightfixed: Number(heightfixed),\n\n u_r: animateOption.enable && this.raiserepeat > 0 ? this.raiseCount : 1.0,\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n u_globel: this.mapService.version === 'GLOBEL' ? 1 : 0,\n\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: Number(opacity),\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n\n // 透明度渐变\n u_opacitylinear: Number(opacityLinear.enable),\n u_opacitylinear_dir: opacityLinear.dir === 'up' ? 1.0 : 0.0,\n\n // 光照计算开关\n u_lightEnable: Number(lightEnable),\n };\n }\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n // GAODE1.x GAODE2.x MAPBOX\n const {\n depth = true,\n animateOption: { repeat = 1 },\n } = this.layer.getLayerConfig() as ILayerConfig;\n this.raiserepeat = repeat;\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointExtrude2',\n vertexShader: pointExtrudeVert,\n fragmentShader: pointExtrudeFrag,\n triangulation: PointExtrudeTriangulation,\n blend: this.getBlend(),\n cull: {\n enable: true,\n face: getCullFace(this.mapService.version),\n },\n depth: {\n enable: depth,\n },\n }),\n ];\n }\n public clearModels() {\n this.dataTexture?.destroy();\n }\n protected registerBuiltinAttributes() {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size } = feature;\n if (size) {\n let buffersize: number[] = [];\n if (Array.isArray(size)) {\n buffersize =\n size.length === 2 ? [size[0], size[0], size[1]] : size;\n }\n if (!Array.isArray(size)) {\n buffersize = [size, size, size];\n }\n return buffersize;\n } else {\n return [2, 2, 2];\n }\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'pos',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Pos',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (feature: IEncodeFeature, featureIdx: number) => {\n const coordinates = calculateCentroid(feature.coordinates);\n if (isGlobel) {\n // TODO: 在地球模式下需要将传入 shader 的经纬度转化成对应的 xyz 坐标\n return lglt2xyz([coordinates[0], coordinates[1]]) as [\n number,\n number,\n number,\n ];\n } else {\n return [coordinates[0], coordinates[1], 0];\n }\n },\n },\n });\n }\n}\n"],"file":"extrude.js"}
@@ -25,8 +25,6 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
25
25
 
26
26
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
27
 
28
- var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
29
-
30
28
  var _l7Core = require("@antv/l7-core");
31
29
 
32
30
  var _l7Utils = require("@antv/l7-utils");
@@ -134,9 +132,9 @@ var FillModel = function (_BaseModel) {
134
132
  u_globel: this.mapService.version === _l7Maps.Version.GLOBEL ? 1 : 0,
135
133
  u_dataTexture: this.dataTexture,
136
134
  u_cellTypeLayout: this.getCellTypeLayout(),
137
- u_opacity: (0, _isNumber2.default)(opacity) ? opacity : 1.0,
138
- u_stroke_opacity: (0, _isNumber2.default)(strokeOpacity) ? strokeOpacity : 1.0,
139
- u_stroke_width: (0, _isNumber2.default)(strokeWidth) ? strokeWidth : 0.0,
135
+ u_opacity: Number(opacity),
136
+ u_stroke_opacity: Number(strokeOpacity),
137
+ u_stroke_width: Number(strokeWidth),
140
138
  u_stroke_color: this.getStrokeColor(stroke),
141
139
  u_offsets: this.isOffsetStatic(offsets) ? offsets : [0, 0]
142
140
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/point/models/fill.ts"],"names":["FillModel","layer","getLayerConfig","opacity","strokeOpacity","strokeWidth","stroke","offsets","blend","blur","raisingHeight","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_raisingHeight","Number","u_isMeter","isMeter","u_blur","u_additive","u_globel","mapService","version","Version","GLOBEL","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_stroke_opacity","u_stroke_width","u_stroke_color","getStrokeColor","u_offsets","isOffsetStatic","animateOption","enable","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","styleAttributeService","createAttributesAndIndices","PointFillTriangulation","unit","L7MAP","calMeter2Coord","buildModels","getSource","extent","minLng","minLat","maxLng","maxLat","center","MAPBOX","window","mapboxgl","MercatorCoordinate","coord","fromLngLat","lng","lat","offsetInMeters","offsetInMercatorCoordinateUnits","meterInMercatorCoordinateUnits","westCoord","x","y","z","westLnglat","toLngLat","meter2coord","m1","meterToCoord","m2","Boolean","mask","maskInside","getShaders","frag","vert","isGlobel","triangulation","GlobelPointFillTriangulation","buildLayerModel","moduleName","vertexShader","fragmentShader","depth","getBlend","stencil","cull","face","waveFillFrag","pointFillVert","pointFillFrag","destroy","option","speed","rings","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","extrude","n1","vec3","fromValues","n2","xzReg","angle","Math","PI","yReg","asin","m","mat4","create","rotateY","rotateX","v1","transformMat4","normalize","v2","v3","v4","extrudeIndex","Array","isArray","shape","shape2d","shapeIndex","indexOf","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IAttribute,\n IElements,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n} from '@antv/l7-core';\nimport { getCullFace, getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport {\n GlobelPointFillTriangulation,\n PointFillTriangulation,\n} from '../../core/triangulation';\n// animate pointLayer shader - support animate\nimport waveFillFrag from '../shaders/animate/wave_frag.glsl';\n// static pointLayer shader - not support animate\nimport pointFillFrag from '../shaders/fill_frag.glsl';\nimport pointFillVert from '../shaders/fill_vert.glsl';\n\nimport { isNumber } from 'lodash';\n\nimport { Version } from '@antv/l7-maps';\nimport { mat4, vec3 } from 'gl-matrix';\nexport default class FillModel extends BaseModel {\n public meter2coord: number = 1;\n private isMeter: boolean = false;\n public getUninforms(): IModelUniform {\n const {\n opacity = 1,\n strokeOpacity = 1,\n strokeWidth = 0,\n stroke = 'rgba(0,0,0,0)',\n offsets = [0, 0],\n blend,\n blur = 0,\n raisingHeight = 0,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n })\n ) {\n // 判断当前的样式中哪些是需要进行数据映射的,哪些是常量,同时计算用于构建数据纹理的一些中间变量\n this.judgeStyleAttributes({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n });\n\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_raisingHeight: Number(raisingHeight),\n\n u_isMeter: Number(this.isMeter),\n u_blur: blur,\n\n u_additive: blend === 'additive' ? 1.0 : 0.0,\n u_globel: this.mapService.version === Version.GLOBEL ? 1 : 0,\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_stroke_opacity: isNumber(strokeOpacity) ? strokeOpacity : 1.0,\n u_stroke_width: isNumber(strokeWidth) ? strokeWidth : 0.0,\n u_stroke_color: this.getStrokeColor(stroke),\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n public getAnimateUniforms(): IModelUniform {\n const {\n animateOption = { enable: false },\n } = this.layer.getLayerConfig() as ILayerConfig;\n return {\n u_aimate: this.animateOption2Array(animateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public getAttribute(): {\n attributes: {\n [attributeName: string]: IAttribute;\n };\n elements: IElements;\n } {\n return this.styleAttributeService.createAttributesAndIndices(\n this.layer.getEncodedData(),\n PointFillTriangulation,\n );\n }\n\n public initModels(): IModel[] {\n const {\n unit = 'l7size',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { version } = this.mapService;\n if (\n unit === 'meter' &&\n version !== Version.L7MAP &&\n version !== Version.GLOBEL\n ) {\n this.isMeter = true;\n this.calMeter2Coord();\n }\n\n return this.buildModels();\n }\n\n /**\n * 计算等面积点图层(unit meter)笛卡尔坐标标度与世界坐标标度的比例\n * @returns\n */\n public calMeter2Coord() {\n // @ts-ignore\n const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;\n const center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];\n\n const { version } = this.mapService;\n if (version === Version.MAPBOX && window.mapboxgl.MercatorCoordinate) {\n const coord = window.mapboxgl.MercatorCoordinate.fromLngLat(\n { lng: center[0], lat: center[1] },\n 0,\n );\n const offsetInMeters = 1;\n const offsetInMercatorCoordinateUnits =\n offsetInMeters * coord.meterInMercatorCoordinateUnits();\n const westCoord = new window.mapboxgl.MercatorCoordinate(\n coord.x - offsetInMercatorCoordinateUnits,\n coord.y,\n coord.z,\n );\n const westLnglat = westCoord.toLngLat();\n\n this.meter2coord = center[0] - westLnglat.lng;\n return;\n }\n\n // @ts-ignore\n const m1 = this.mapService.meterToCoord(center, [minLng, minLat]);\n // @ts-ignore\n const m2 = this.mapService.meterToCoord(center, [\n maxLng === minLng ? maxLng + 0.1 : maxLng,\n maxLat === minLat ? minLat + 0.1 : maxLat,\n ]);\n this.meter2coord = (m1 + m2) / 2;\n if (!Boolean(this.meter2coord)) {\n // Tip: 兼容单个数据导致的 m1、m2 为 NaN\n this.meter2coord = 7.70681090738883;\n }\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n animateOption = { enable: false },\n } = this.layer.getLayerConfig() as Partial<\n ILayerConfig & IPointLayerStyleOptions\n >;\n const { frag, vert, type } = this.getShaders(animateOption);\n\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n this.layer.triangulation = isGlobel\n ? GlobelPointFillTriangulation\n : PointFillTriangulation;\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointfill_' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: isGlobel\n ? GlobelPointFillTriangulation\n : PointFillTriangulation,\n // depth: { enable: false },\n depth: { enable: isGlobel },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n cull: {\n enable: true,\n face: getCullFace(this.mapService.version),\n },\n }),\n ];\n }\n\n /**\n * 根据 animateOption 的值返回对应的 shader 代码\n * @returns\n */\n public getShaders(\n animateOption: Partial<IAnimateOption>,\n ): { frag: string; vert: string; type: string } {\n if (animateOption.enable) {\n switch (animateOption.type) {\n case 'wave':\n return {\n frag: waveFillFrag,\n vert: pointFillVert,\n type: 'wave',\n };\n default:\n return {\n frag: waveFillFrag,\n vert: pointFillVert,\n type: 'wave',\n };\n }\n } else {\n return {\n frag: pointFillFrag,\n vert: pointFillVert,\n type: 'normal',\n };\n }\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n // overwrite baseModel func\n protected animateOption2Array(option: Partial<IAnimateOption>): number[] {\n return [option.enable ? 0 : 1.0, option.speed || 1, option.rings || 3, 0];\n }\n protected registerBuiltinAttributes() {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n let extrude;\n // 地球模式\n if (isGlobel) {\n const [x, y, z] = vertex;\n const n1 = vec3.fromValues(0, 0, 1);\n const n2 = vec3.fromValues(x, 0, z);\n\n const xzReg =\n x >= 0 ? vec3.angle(n1, n2) : Math.PI * 2 - vec3.angle(n1, n2);\n\n const yReg = Math.PI * 2 - Math.asin(y / 100);\n\n const m = mat4.create();\n mat4.rotateY(m, m, xzReg);\n mat4.rotateX(m, m, yReg);\n\n const v1 = vec3.fromValues(1, 1, 0);\n vec3.transformMat4(v1, v1, m);\n vec3.normalize(v1, v1);\n\n const v2 = vec3.fromValues(-1, 1, 0);\n vec3.transformMat4(v2, v2, m);\n vec3.normalize(v2, v2);\n\n const v3 = vec3.fromValues(-1, -1, 0);\n vec3.transformMat4(v3, v3, m);\n vec3.normalize(v3, v3);\n\n const v4 = vec3.fromValues(1, -1, 0);\n vec3.transformMat4(v4, v4, m);\n vec3.normalize(v4, v4);\n\n extrude = [...v1, ...v2, ...v3, ...v4];\n } else {\n // 平面模式\n extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n }\n\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 5 } = feature;\n // console.log('featureIdx', featureIdx, feature)\n return Array.isArray(size)\n ? [size[0] * this.meter2coord]\n : [(size as number) * this.meter2coord];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'shape',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Shape',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { shape = 2 } = feature;\n const shape2d = this.layer.getLayerConfig().shape2d as string[];\n const shapeIndex = shape2d.indexOf(shape as string);\n return [shapeIndex];\n },\n },\n });\n }\n}\n"],"file":"fill.js"}
1
+ {"version":3,"sources":["../../../src/point/models/fill.ts"],"names":["FillModel","layer","getLayerConfig","opacity","strokeOpacity","strokeWidth","stroke","offsets","blend","blur","raisingHeight","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_raisingHeight","Number","u_isMeter","isMeter","u_blur","u_additive","u_globel","mapService","version","Version","GLOBEL","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_stroke_opacity","u_stroke_width","u_stroke_color","getStrokeColor","u_offsets","isOffsetStatic","animateOption","enable","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","styleAttributeService","createAttributesAndIndices","PointFillTriangulation","unit","L7MAP","calMeter2Coord","buildModels","getSource","extent","minLng","minLat","maxLng","maxLat","center","MAPBOX","window","mapboxgl","MercatorCoordinate","coord","fromLngLat","lng","lat","offsetInMeters","offsetInMercatorCoordinateUnits","meterInMercatorCoordinateUnits","westCoord","x","y","z","westLnglat","toLngLat","meter2coord","m1","meterToCoord","m2","Boolean","mask","maskInside","getShaders","frag","vert","isGlobel","triangulation","GlobelPointFillTriangulation","buildLayerModel","moduleName","vertexShader","fragmentShader","depth","getBlend","stencil","cull","face","waveFillFrag","pointFillVert","pointFillFrag","destroy","option","speed","rings","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","extrude","n1","vec3","fromValues","n2","xzReg","angle","Math","PI","yReg","asin","m","mat4","create","rotateY","rotateX","v1","transformMat4","normalize","v2","v3","v4","extrudeIndex","Array","isArray","shape","shape2d","shapeIndex","indexOf","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IAttribute,\n IElements,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n} from '@antv/l7-core';\nimport { getCullFace, getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport {\n GlobelPointFillTriangulation,\n PointFillTriangulation,\n} from '../../core/triangulation';\n// animate pointLayer shader - support animate\nimport waveFillFrag from '../shaders/animate/wave_frag.glsl';\n// static pointLayer shader - not support animate\nimport pointFillFrag from '../shaders/fill_frag.glsl';\nimport pointFillVert from '../shaders/fill_vert.glsl';\n\nimport { Version } from '@antv/l7-maps';\nimport { mat4, vec3 } from 'gl-matrix';\nexport default class FillModel extends BaseModel {\n public meter2coord: number = 1;\n private isMeter: boolean = false;\n public getUninforms(): IModelUniform {\n const {\n opacity = 1,\n strokeOpacity = 1,\n strokeWidth = 0,\n stroke = 'rgba(0,0,0,0)',\n offsets = [0, 0],\n blend,\n blur = 0,\n raisingHeight = 0,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n })\n ) {\n // 判断当前的样式中哪些是需要进行数据映射的,哪些是常量,同时计算用于构建数据纹理的一些中间变量\n this.judgeStyleAttributes({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n });\n\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_raisingHeight: Number(raisingHeight),\n\n u_isMeter: Number(this.isMeter),\n u_blur: blur,\n\n u_additive: blend === 'additive' ? 1.0 : 0.0,\n u_globel: this.mapService.version === Version.GLOBEL ? 1 : 0,\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: Number(opacity),\n u_stroke_opacity: Number(strokeOpacity),\n u_stroke_width: Number(strokeWidth),\n u_stroke_color: this.getStrokeColor(stroke),\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n public getAnimateUniforms(): IModelUniform {\n const {\n animateOption = { enable: false },\n } = this.layer.getLayerConfig() as ILayerConfig;\n return {\n u_aimate: this.animateOption2Array(animateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public getAttribute(): {\n attributes: {\n [attributeName: string]: IAttribute;\n };\n elements: IElements;\n } {\n return this.styleAttributeService.createAttributesAndIndices(\n this.layer.getEncodedData(),\n PointFillTriangulation,\n );\n }\n\n public initModels(): IModel[] {\n const {\n unit = 'l7size',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { version } = this.mapService;\n if (\n unit === 'meter' &&\n version !== Version.L7MAP &&\n version !== Version.GLOBEL\n ) {\n this.isMeter = true;\n this.calMeter2Coord();\n }\n\n return this.buildModels();\n }\n\n /**\n * 计算等面积点图层(unit meter)笛卡尔坐标标度与世界坐标标度的比例\n * @returns\n */\n public calMeter2Coord() {\n const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;\n const center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];\n\n const { version } = this.mapService;\n if (version === Version.MAPBOX && window.mapboxgl.MercatorCoordinate) {\n const coord = window.mapboxgl.MercatorCoordinate.fromLngLat(\n { lng: center[0], lat: center[1] },\n 0,\n );\n const offsetInMeters = 1;\n const offsetInMercatorCoordinateUnits =\n offsetInMeters * coord.meterInMercatorCoordinateUnits();\n const westCoord = new window.mapboxgl.MercatorCoordinate(\n coord.x - offsetInMercatorCoordinateUnits,\n coord.y,\n coord.z,\n );\n const westLnglat = westCoord.toLngLat();\n\n this.meter2coord = center[0] - westLnglat.lng;\n return;\n }\n\n // @ts-ignore\n const m1 = this.mapService.meterToCoord(center, [minLng, minLat]);\n // @ts-ignore\n const m2 = this.mapService.meterToCoord(center, [\n maxLng === minLng ? maxLng + 0.1 : maxLng,\n maxLat === minLat ? minLat + 0.1 : maxLat,\n ]);\n this.meter2coord = (m1 + m2) / 2;\n if (!Boolean(this.meter2coord)) {\n // Tip: 兼容单个数据导致的 m1、m2 为 NaN\n this.meter2coord = 7.70681090738883;\n }\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n animateOption = { enable: false },\n } = this.layer.getLayerConfig() as Partial<\n ILayerConfig & IPointLayerStyleOptions\n >;\n const { frag, vert, type } = this.getShaders(animateOption);\n\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n this.layer.triangulation = isGlobel\n ? GlobelPointFillTriangulation\n : PointFillTriangulation;\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointfill_' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: isGlobel\n ? GlobelPointFillTriangulation\n : PointFillTriangulation,\n depth: { enable: isGlobel },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n cull: {\n enable: true,\n face: getCullFace(this.mapService.version),\n },\n }),\n ];\n }\n\n /**\n * 根据 animateOption 的值返回对应的 shader 代码\n * @returns\n */\n public getShaders(\n animateOption: Partial<IAnimateOption>,\n ): { frag: string; vert: string; type: string } {\n if (animateOption.enable) {\n switch (animateOption.type) {\n case 'wave':\n return {\n frag: waveFillFrag,\n vert: pointFillVert,\n type: 'wave',\n };\n default:\n return {\n frag: waveFillFrag,\n vert: pointFillVert,\n type: 'wave',\n };\n }\n } else {\n return {\n frag: pointFillFrag,\n vert: pointFillVert,\n type: 'normal',\n };\n }\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n // overwrite baseModel func\n protected animateOption2Array(option: Partial<IAnimateOption>): number[] {\n return [option.enable ? 0 : 1.0, option.speed || 1, option.rings || 3, 0];\n }\n protected registerBuiltinAttributes() {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n let extrude;\n // 地球模式\n if (isGlobel) {\n const [x, y, z] = vertex;\n const n1 = vec3.fromValues(0, 0, 1);\n const n2 = vec3.fromValues(x, 0, z);\n\n const xzReg =\n x >= 0 ? vec3.angle(n1, n2) : Math.PI * 2 - vec3.angle(n1, n2);\n\n const yReg = Math.PI * 2 - Math.asin(y / 100);\n\n const m = mat4.create();\n mat4.rotateY(m, m, xzReg);\n mat4.rotateX(m, m, yReg);\n\n const v1 = vec3.fromValues(1, 1, 0);\n vec3.transformMat4(v1, v1, m);\n vec3.normalize(v1, v1);\n\n const v2 = vec3.fromValues(-1, 1, 0);\n vec3.transformMat4(v2, v2, m);\n vec3.normalize(v2, v2);\n\n const v3 = vec3.fromValues(-1, -1, 0);\n vec3.transformMat4(v3, v3, m);\n vec3.normalize(v3, v3);\n\n const v4 = vec3.fromValues(1, -1, 0);\n vec3.transformMat4(v4, v4, m);\n vec3.normalize(v4, v4);\n\n extrude = [...v1, ...v2, ...v3, ...v4];\n } else {\n // 平面模式\n extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n }\n\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 5 } = feature;\n // console.log('featureIdx', featureIdx, feature)\n return Array.isArray(size)\n ? [size[0] * this.meter2coord]\n : [(size as number) * this.meter2coord];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'shape',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Shape',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { shape = 2 } = feature;\n const shape2d = this.layer.getLayerConfig().shape2d as string[];\n const shapeIndex = shape2d.indexOf(shape as string);\n return [shapeIndex];\n },\n },\n });\n }\n}\n"],"file":"fill.js"}