@antv/l7-layers 2.9.15 → 2.9.17

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 (268) hide show
  1. package/LICENSE.md +1 -1
  2. package/es/core/BaseLayer.d.ts +4 -2
  3. package/es/core/BaseLayer.js +47 -21
  4. package/es/core/BaseLayer.js.map +1 -1
  5. package/es/core/BaseModel.d.ts +2 -1
  6. package/es/core/BaseModel.js +3 -0
  7. package/es/core/BaseModel.js.map +1 -1
  8. package/es/core/interface.d.ts +27 -1
  9. package/es/core/interface.js.map +1 -1
  10. package/es/core/triangulation.d.ts +0 -1
  11. package/es/core/triangulation.js +9 -36
  12. package/es/core/triangulation.js.map +1 -1
  13. package/es/image/index.d.ts +1 -1
  14. package/es/image/index.js +14 -2
  15. package/es/image/index.js.map +1 -1
  16. package/es/image/models/dataImage.d.ts +22 -0
  17. package/es/image/models/dataImage.js +230 -0
  18. package/es/image/models/dataImage.js.map +1 -0
  19. package/es/image/models/image.d.ts +1 -0
  20. package/es/image/models/image.js +7 -0
  21. package/es/image/models/image.js.map +1 -1
  22. package/es/image/models/index.d.ts +1 -1
  23. package/es/image/models/index.js +3 -1
  24. package/es/image/models/index.js.map +1 -1
  25. package/es/line/index.d.ts +1 -1
  26. package/es/line/index.js +13 -1
  27. package/es/line/index.js.map +1 -1
  28. package/es/line/models/arc.js +1 -1
  29. package/es/line/models/arc.js.map +1 -1
  30. package/es/line/models/earthArc_3d.d.ts +17 -0
  31. package/es/line/models/earthArc_3d.js +311 -0
  32. package/es/line/models/earthArc_3d.js.map +1 -0
  33. package/es/line/models/great_circle.js +2 -2
  34. package/es/line/models/half.d.ts +18 -0
  35. package/es/line/models/half.js +244 -0
  36. package/es/line/models/half.js.map +1 -0
  37. package/es/line/models/index.d.ts +1 -1
  38. package/es/line/models/index.js +9 -1
  39. package/es/line/models/index.js.map +1 -1
  40. package/es/line/models/line.js +1 -1
  41. package/es/line/models/simpleLine.d.ts +0 -1
  42. package/es/line/models/simpleLine.js +10 -53
  43. package/es/line/models/simpleLine.js.map +1 -1
  44. package/es/line/models/tile.d.ts +20 -0
  45. package/es/line/models/tile.js +327 -0
  46. package/es/line/models/tile.js.map +1 -0
  47. package/es/plugins/DataMappingPlugin.js +1 -1
  48. package/es/plugins/DataMappingPlugin.js.map +1 -1
  49. package/es/plugins/DataSourcePlugin.js +7 -6
  50. package/es/plugins/DataSourcePlugin.js.map +1 -1
  51. package/es/plugins/FeatureScalePlugin.js +35 -9
  52. package/es/plugins/FeatureScalePlugin.js.map +1 -1
  53. package/es/plugins/ShaderUniformPlugin.js +3 -1
  54. package/es/plugins/ShaderUniformPlugin.js.map +1 -1
  55. package/es/point/index.d.ts +1 -1
  56. package/es/point/index.js +10 -2
  57. package/es/point/index.js.map +1 -1
  58. package/es/point/models/earthExtrude.d.ts +24 -0
  59. package/es/point/models/earthExtrude.js +259 -0
  60. package/es/point/models/earthExtrude.js.map +1 -0
  61. package/es/point/models/earthFill.d.ts +20 -0
  62. package/es/point/models/earthFill.js +255 -0
  63. package/es/point/models/earthFill.js.map +1 -0
  64. package/es/point/models/extrude.d.ts +0 -1
  65. package/es/point/models/extrude.js +2 -10
  66. package/es/point/models/extrude.js.map +1 -1
  67. package/es/point/models/fill.d.ts +8 -1
  68. package/es/point/models/fill.js +55 -75
  69. package/es/point/models/fill.js.map +1 -1
  70. package/es/point/models/index.d.ts +1 -1
  71. package/es/point/models/index.js +9 -1
  72. package/es/point/models/index.js.map +1 -1
  73. package/es/point/models/radar.js +2 -6
  74. package/es/point/models/radar.js.map +1 -1
  75. package/es/point/models/tile.d.ts +31 -0
  76. package/es/point/models/tile.js +291 -0
  77. package/es/point/models/tile.js.map +1 -0
  78. package/es/polygon/index.js +6 -0
  79. package/es/polygon/index.js.map +1 -1
  80. package/es/polygon/models/index.d.ts +1 -1
  81. package/es/polygon/models/index.js +5 -1
  82. package/es/polygon/models/index.js.map +1 -1
  83. package/es/polygon/models/tile.d.ts +16 -0
  84. package/es/polygon/models/tile.js +137 -0
  85. package/es/polygon/models/tile.js.map +1 -0
  86. package/es/raster/index.d.ts +2 -2
  87. package/es/raster/index.js +4 -4
  88. package/es/raster/index.js.map +1 -1
  89. package/es/raster/models/index.js +1 -1
  90. package/es/raster/models/index.js.map +1 -1
  91. package/es/raster/models/raster.d.ts +2 -0
  92. package/es/raster/models/raster.js +24 -12
  93. package/es/raster/models/raster.js.map +1 -1
  94. package/es/tile/interface.d.ts +28 -0
  95. package/es/tile/interface.js +2 -0
  96. package/es/tile/interface.js.map +1 -0
  97. package/es/tile/manager/tileConfigManager.d.ts +17 -0
  98. package/es/tile/manager/tileConfigManager.js +123 -0
  99. package/es/tile/manager/tileConfigManager.js.map +1 -0
  100. package/es/tile/manager/tileLayerManager.d.ts +35 -0
  101. package/es/tile/manager/tileLayerManager.js +317 -0
  102. package/es/tile/manager/tileLayerManager.js.map +1 -0
  103. package/es/tile/manager/tilePickerManager.d.ts +21 -0
  104. package/es/tile/manager/tilePickerManager.js +189 -0
  105. package/es/tile/manager/tilePickerManager.js.map +1 -0
  106. package/es/tile/models/tileModel.d.ts +8 -0
  107. package/es/tile/models/tileModel.js +61 -0
  108. package/es/tile/models/tileModel.js.map +1 -0
  109. package/es/tile/tileFactory/base.d.ts +44 -0
  110. package/es/tile/tileFactory/base.js +423 -0
  111. package/es/tile/tileFactory/base.js.map +1 -0
  112. package/es/tile/tileFactory/index.d.ts +5 -0
  113. package/es/tile/tileFactory/index.js +30 -0
  114. package/es/tile/tileFactory/index.js.map +1 -0
  115. package/es/tile/tileFactory/line.d.ts +12 -0
  116. package/es/tile/tileFactory/line.js +65 -0
  117. package/es/tile/tileFactory/line.js.map +1 -0
  118. package/es/tile/tileFactory/point.d.ts +12 -0
  119. package/es/tile/tileFactory/point.js +65 -0
  120. package/es/tile/tileFactory/point.js.map +1 -0
  121. package/es/tile/tileFactory/polygon.d.ts +12 -0
  122. package/es/tile/tileFactory/polygon.js +65 -0
  123. package/es/tile/tileFactory/polygon.js.map +1 -0
  124. package/es/tile/tileFactory/raster.d.ts +12 -0
  125. package/es/tile/tileFactory/raster.js +61 -0
  126. package/es/tile/tileFactory/raster.js.map +1 -0
  127. package/es/tile/tileFactory/rasterData.d.ts +12 -0
  128. package/es/tile/tileFactory/rasterData.js +86 -0
  129. package/es/tile/tileFactory/rasterData.js.map +1 -0
  130. package/es/tile/tileFactory/rasterDataLayer.d.ts +19 -0
  131. package/es/{core/LayerGroup.js → tile/tileFactory/rasterDataLayer.js} +39 -32
  132. package/es/tile/tileFactory/rasterDataLayer.js.map +1 -0
  133. package/es/tile/tileFactory/vectorLayer.d.ts +27 -0
  134. package/es/tile/tileFactory/vectorLayer.js +131 -0
  135. package/es/tile/tileFactory/vectorLayer.js.map +1 -0
  136. package/es/tile/tileLayer/baseTileLayer.d.ts +47 -0
  137. package/es/tile/tileLayer/baseTileLayer.js +409 -0
  138. package/es/tile/tileLayer/baseTileLayer.js.map +1 -0
  139. package/es/tile/tmsTileLayer.d.ts +7 -0
  140. package/es/tile/tmsTileLayer.js +100 -0
  141. package/es/tile/tmsTileLayer.js.map +1 -0
  142. package/es/tile/utils.d.ts +11 -0
  143. package/es/tile/utils.js +125 -0
  144. package/es/tile/utils.js.map +1 -0
  145. package/es/utils/extrude_polyline.d.ts +0 -15
  146. package/es/utils/extrude_polyline.js +6 -138
  147. package/es/utils/extrude_polyline.js.map +1 -1
  148. package/es/utils/simpleLine.d.ts +23 -0
  149. package/es/utils/simpleLine.js +105 -0
  150. package/es/utils/simpleLine.js.map +1 -0
  151. package/es/wind/models/wind.js +26 -22
  152. package/es/wind/models/wind.js.map +1 -1
  153. package/lib/core/BaseLayer.js +45 -20
  154. package/lib/core/BaseLayer.js.map +1 -1
  155. package/lib/core/BaseModel.js +2 -0
  156. package/lib/core/BaseModel.js.map +1 -1
  157. package/lib/core/interface.js.map +1 -1
  158. package/lib/core/triangulation.js +10 -36
  159. package/lib/core/triangulation.js.map +1 -1
  160. package/lib/image/index.js +14 -2
  161. package/lib/image/index.js.map +1 -1
  162. package/lib/image/models/dataImage.js +245 -0
  163. package/lib/image/models/dataImage.js.map +1 -0
  164. package/lib/image/models/image.js +7 -0
  165. package/lib/image/models/image.js.map +1 -1
  166. package/lib/image/models/index.js +4 -1
  167. package/lib/image/models/index.js.map +1 -1
  168. package/lib/line/index.js +13 -1
  169. package/lib/line/index.js.map +1 -1
  170. package/lib/line/models/arc.js +1 -1
  171. package/lib/line/models/arc.js.map +1 -1
  172. package/lib/line/models/earthArc_3d.js +328 -0
  173. package/lib/line/models/earthArc_3d.js.map +1 -0
  174. package/lib/line/models/great_circle.js +2 -2
  175. package/lib/line/models/half.js +260 -0
  176. package/lib/line/models/half.js.map +1 -0
  177. package/lib/line/models/index.js +13 -1
  178. package/lib/line/models/index.js.map +1 -1
  179. package/lib/line/models/line.js +1 -1
  180. package/lib/line/models/simpleLine.js +10 -53
  181. package/lib/line/models/simpleLine.js.map +1 -1
  182. package/lib/line/models/tile.js +342 -0
  183. package/lib/line/models/tile.js.map +1 -0
  184. package/lib/plugins/DataMappingPlugin.js +1 -1
  185. package/lib/plugins/DataMappingPlugin.js.map +1 -1
  186. package/lib/plugins/DataSourcePlugin.js +7 -6
  187. package/lib/plugins/DataSourcePlugin.js.map +1 -1
  188. package/lib/plugins/FeatureScalePlugin.js +35 -9
  189. package/lib/plugins/FeatureScalePlugin.js.map +1 -1
  190. package/lib/plugins/ShaderUniformPlugin.js +3 -1
  191. package/lib/plugins/ShaderUniformPlugin.js.map +1 -1
  192. package/lib/point/index.js +10 -2
  193. package/lib/point/index.js.map +1 -1
  194. package/lib/point/models/earthExtrude.js +277 -0
  195. package/lib/point/models/earthExtrude.js.map +1 -0
  196. package/lib/point/models/earthFill.js +291 -0
  197. package/lib/point/models/earthFill.js.map +1 -0
  198. package/lib/point/models/extrude.js +2 -11
  199. package/lib/point/models/extrude.js.map +1 -1
  200. package/lib/point/models/fill.js +51 -93
  201. package/lib/point/models/fill.js.map +1 -1
  202. package/lib/point/models/index.js +13 -1
  203. package/lib/point/models/index.js.map +1 -1
  204. package/lib/point/models/radar.js +1 -5
  205. package/lib/point/models/radar.js.map +1 -1
  206. package/lib/point/models/tile.js +308 -0
  207. package/lib/point/models/tile.js.map +1 -0
  208. package/lib/polygon/index.js +6 -0
  209. package/lib/polygon/index.js.map +1 -1
  210. package/lib/polygon/models/index.js +7 -1
  211. package/lib/polygon/models/index.js.map +1 -1
  212. package/lib/polygon/models/tile.js +152 -0
  213. package/lib/polygon/models/tile.js.map +1 -0
  214. package/lib/raster/index.js +4 -4
  215. package/lib/raster/index.js.map +1 -1
  216. package/lib/raster/models/index.js +2 -2
  217. package/lib/raster/models/index.js.map +1 -1
  218. package/lib/raster/models/raster.js +24 -12
  219. package/lib/raster/models/raster.js.map +1 -1
  220. package/lib/tile/interface.js +2 -0
  221. package/lib/tile/interface.js.map +1 -0
  222. package/lib/tile/manager/tileConfigManager.js +134 -0
  223. package/lib/tile/manager/tileConfigManager.js.map +1 -0
  224. package/lib/tile/manager/tileLayerManager.js +325 -0
  225. package/lib/tile/manager/tileLayerManager.js.map +1 -0
  226. package/lib/tile/manager/tilePickerManager.js +195 -0
  227. package/lib/tile/manager/tilePickerManager.js.map +1 -0
  228. package/lib/tile/models/tileModel.js +73 -0
  229. package/lib/tile/models/tileModel.js.map +1 -0
  230. package/lib/tile/tileFactory/base.js +436 -0
  231. package/lib/tile/tileFactory/base.js.map +1 -0
  232. package/lib/tile/tileFactory/index.js +60 -0
  233. package/lib/tile/tileFactory/index.js.map +1 -0
  234. package/lib/tile/tileFactory/line.js +76 -0
  235. package/lib/tile/tileFactory/line.js.map +1 -0
  236. package/lib/tile/tileFactory/point.js +76 -0
  237. package/lib/tile/tileFactory/point.js.map +1 -0
  238. package/lib/tile/tileFactory/polygon.js +76 -0
  239. package/lib/tile/tileFactory/polygon.js.map +1 -0
  240. package/lib/tile/tileFactory/raster.js +74 -0
  241. package/lib/tile/tileFactory/raster.js.map +1 -0
  242. package/lib/tile/tileFactory/rasterData.js +99 -0
  243. package/lib/tile/tileFactory/rasterData.js.map +1 -0
  244. package/lib/{core/LayerGroup.js → tile/tileFactory/rasterDataLayer.js} +40 -32
  245. package/lib/tile/tileFactory/rasterDataLayer.js.map +1 -0
  246. package/lib/tile/tileFactory/vectorLayer.js +145 -0
  247. package/lib/tile/tileFactory/vectorLayer.js.map +1 -0
  248. package/lib/tile/tileLayer/baseTileLayer.js +407 -0
  249. package/lib/tile/tileLayer/baseTileLayer.js.map +1 -0
  250. package/lib/tile/tmsTileLayer.js +116 -0
  251. package/lib/tile/tmsTileLayer.js.map +1 -0
  252. package/lib/tile/utils.js +147 -0
  253. package/lib/tile/utils.js.map +1 -0
  254. package/lib/utils/extrude_polyline.js +6 -140
  255. package/lib/utils/extrude_polyline.js.map +1 -1
  256. package/lib/utils/simpleLine.js +117 -0
  257. package/lib/utils/simpleLine.js.map +1 -0
  258. package/lib/wind/models/wind.js +26 -22
  259. package/lib/wind/models/wind.js.map +1 -1
  260. package/package.json +8 -6
  261. package/es/core/LayerGroup.d.ts +0 -9
  262. package/es/core/LayerGroup.js.map +0 -1
  263. package/es/raster/models/raste-tile.d.ts +0 -23
  264. package/es/raster/models/raste-tile.js +0 -285
  265. package/es/raster/models/raste-tile.js.map +0 -1
  266. package/lib/core/LayerGroup.js.map +0 -1
  267. package/lib/raster/models/raste-tile.js +0 -294
  268. package/lib/raster/models/raste-tile.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/FeatureScalePlugin.ts"],"names":["ScaleTypes","StyleScaleType","TYPES","extent","d3interpolate","d3","inject","injectable","dateRegex","scaleMap","LINEAR","scaleLinear","POWER","scalePow","LOG","scaleLog","IDENTITY","scaleIdentity","SEQUENTIAL","scaleSequential","TIME","scaleTime","QUANTILE","scaleQuantile","QUANTIZE","scaleQuantize","THRESHOLD","scaleThreshold","CAT","scaleOrdinal","DIVERGING","scaleDiverging","FeatureScalePlugin","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","createScale","values","some","VARIABLE","callback","option","range","domain","interpolator","interpolateRgbBasis","CONSTANT","defaultValues","map","index","scalers","func","Array","isArray","split","scaleOption","styleScale","undefined","createDefaultScale","firstValue","find","d","isNumber","getDefaultType","cfg","createScaleConfig","test","item","minMax","neutral","unknown","clamp","nice"],"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 d3interpolate from 'd3-interpolate';\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.SEQUENTIAL]: d3.scaleSequential,\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 [ScaleTypes.DIVERGING]: d3.scaleDiverging,\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 // 为每个字段创建 Scale\n attributeScale.names.forEach((field: string | number) => {\n scales.push(\n this.createScale(\n field,\n attribute.name,\n attribute.scale?.values,\n dataArray,\n ),\n );\n });\n\n // 为scales 设置值区间 Range\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 (\n attributeScale.values &&\n attributeScale.values !== 'text' &&\n scale.option?.type !== ScaleTypes.DIVERGING &&\n scale.option?.type !== ScaleTypes.SEQUENTIAL\n ) {\n scale.scale.range(attributeScale.values); // 判断常量, 默认值\n } else if (scale.option?.type === ScaleTypes.CAT) {\n // 如果没有设置初值且 类型为cat,range ==domain;\n scale.scale.range(scale.option.domain);\n } else if (\n scale.option?.type === ScaleTypes.DIVERGING ||\n scale.option?.type === ScaleTypes.SEQUENTIAL\n ) {\n scale.scale.interpolator(\n // @ts-ignore\n d3interpolate.interpolateRgbBasis(attributeScale.values),\n );\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\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] // TODO zi\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.createScaleConfig(type, field, scaleOption, data);\n\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 // 生成Scale 默认配置\n private createScaleConfig(\n type: ScaleTypeName,\n field: string | number,\n scaleOption: IScale | undefined,\n data?: IParseDataItem[],\n ) {\n const cfg: IScale = {\n type,\n };\n const values = data?.map((item) => item[field]) || [];\n if (scaleOption?.domain) {\n cfg.domain = scaleOption?.domain;\n }\n // 默认类型为 Quantile Scales https://github.com/d3/d3-scale#quantile-scales\n else if (\n type !== ScaleTypes.CAT &&\n type !== ScaleTypes.QUANTILE &&\n type !== ScaleTypes.DIVERGING\n ) {\n // linear/\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 } else if (type === ScaleTypes.DIVERGING) {\n const minMax = extent(values);\n const neutral =\n scaleOption?.neutral !== undefined\n ? scaleOption?.neutral\n : (minMax[0] + minMax[1]) / 2;\n cfg.domain = [minMax[0], neutral, minMax[1]];\n }\n return { ...cfg, ...scaleOption };\n }\n\n // 创建Scale 实例\n private createDefaultScale({ type, domain, unknown, clamp, nice }: IScale) {\n // @ts-ignore\n const scale = scaleMap[type]();\n if (domain && scale.domain) {\n scale.domain(domain);\n }\n if (unknown) {\n scale.unknown(unknown);\n }\n if (clamp !== undefined && scale.clamp) {\n scale.clamp(clamp);\n }\n if (nice !== undefined && scale.nice) {\n scale.nice(nice);\n }\n // TODO 其他属性支持\n return scale;\n }\n}\n"],"file":"FeatureScalePlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/FeatureScalePlugin.ts"],"names":["ScaleTypes","StyleScaleType","TYPES","extent","d3interpolate","d3","inject","injectable","dateRegex","scaleMap","LINEAR","scaleLinear","POWER","scalePow","LOG","scaleLog","IDENTITY","scaleIdentity","SEQUENTIAL","scaleSequential","TIME","scaleTime","QUANTILE","scaleQuantile","QUANTIZE","scaleQuantize","THRESHOLD","scaleThreshold","CAT","scaleOrdinal","DIVERGING","scaleDiverging","FeatureScalePlugin","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","createScale","values","some","VARIABLE","callback","option","tick","ticks","domain","range","interpolator","interpolateRgbBasis","CONSTANT","defaultValues","map","index","scalers","func","Array","isArray","split","scaleOption","styleScale","undefined","createDefaultScale","firstValue","find","d","isNumber","getDefaultType","cfg","createScaleConfig","test","item","minMax","neutral","unknown","clamp","nice"],"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 d3interpolate from 'd3-interpolate';\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.SEQUENTIAL]: d3.scaleSequential,\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 [ScaleTypes.DIVERGING]: d3.scaleDiverging,\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 // 为每个字段创建 Scale\n attributeScale.names.forEach((field: string | number) => {\n scales.push(\n this.createScale(\n field,\n attribute.name,\n attribute.scale?.values,\n dataArray,\n ),\n );\n });\n\n // 为scales 设置值区间 Range\n if (scales.some((scale) => scale.type === StyleScaleType.VARIABLE)) {\n attributeScale.type = StyleScaleType.VARIABLE;\n scales.forEach((scale) => {\n // 如果设置了回调, 这不需要设置range\n if (!attributeScale.callback && attributeScale.values !== 'text') {\n switch (scale.option?.type) {\n case ScaleTypes.LOG:\n case ScaleTypes.LINEAR:\n case ScaleTypes.POWER:\n if (\n attributeScale.values &&\n attributeScale.values.length > 2\n ) {\n const tick = scale.scale.ticks(\n attributeScale.values.length,\n );\n scale.scale.domain(tick);\n }\n attributeScale.values\n ? scale.scale.range(attributeScale.values)\n : scale.scale.range(scale.option.domain);\n break;\n case ScaleTypes.QUANTILE:\n case ScaleTypes.QUANTIZE:\n case ScaleTypes.THRESHOLD:\n scale.scale.range(attributeScale.values); //\n break;\n case ScaleTypes.CAT:\n attributeScale.values\n ? scale.scale.range(attributeScale.values)\n : scale.scale.range(scale.option.domain);\n break;\n case ScaleTypes.DIVERGING:\n case ScaleTypes.SEQUENTIAL:\n scale.scale.interpolator(\n // @ts-ignore\n d3interpolate.interpolateRgbBasis(attributeScale.values),\n );\n break;\n }\n }\n if (attributeScale.values === 'text') {\n scale.scale.range(scale.option?.domain);\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\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] // TODO zi\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.createScaleConfig(type, field, scaleOption, data);\n\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 // 生成Scale 默认配置\n private createScaleConfig(\n type: ScaleTypeName,\n field: string | number,\n scaleOption: IScale | undefined,\n data?: IParseDataItem[],\n ) {\n const cfg: IScale = {\n type,\n };\n const values = data?.map((item) => item[field]) || [];\n if (scaleOption?.domain) {\n cfg.domain = scaleOption?.domain;\n }\n // 默认类型为 Quantile Scales https://github.com/d3/d3-scale#quantile-scales\n else if (\n type !== ScaleTypes.CAT &&\n type !== ScaleTypes.QUANTILE &&\n type !== ScaleTypes.DIVERGING\n ) {\n // linear/\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 } else if (type === ScaleTypes.DIVERGING) {\n const minMax = extent(values);\n const neutral =\n scaleOption?.neutral !== undefined\n ? scaleOption?.neutral\n : (minMax[0] + minMax[1]) / 2;\n cfg.domain = [minMax[0], neutral, minMax[1]];\n }\n return { ...cfg, ...scaleOption };\n }\n\n // 创建Scale 实例\n private createDefaultScale({ type, domain, unknown, clamp, nice }: IScale) {\n // @ts-ignore\n const scale = scaleMap[type]();\n if (domain && scale.domain) {\n scale.domain(domain);\n }\n if (unknown) {\n scale.unknown(unknown);\n }\n if (clamp !== undefined && scale.clamp) {\n scale.clamp(clamp);\n }\n if (nice !== undefined && scale.nice) {\n scale.nice(nice);\n }\n // TODO 其他属性支持\n return scale;\n }\n}\n"],"file":"FeatureScalePlugin.js"}
@@ -33,7 +33,9 @@ var ShaderUniformPlugin = (_dec = injectable(), _dec2 = inject(TYPES.ICameraServ
33
33
  var mvp = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
34
34
  var sceneCenterMKT = [0, 0];
35
35
  layer.hooks.beforeRender.tap('ShaderUniformPlugin', function () {
36
- _this.coordinateSystemService.refresh();
36
+ var offset = layer.getLayerConfig().tileOrigin;
37
+
38
+ _this.coordinateSystemService.refresh(offset);
37
39
 
38
40
  if (version === 'GAODE2.x') {
39
41
  var layerCenter = _this.getLayerCenter(layer);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/ShaderUniformPlugin.ts"],"names":["CameraUniform","CoordinateUniform","TYPES","$window","inject","injectable","ShaderUniformPlugin","ICameraService","ICoordinateSystemService","IRendererService","IMapService","layer","version","mapService","mvp","sceneCenterMKT","hooks","beforeRender","tap","coordinateSystemService","refresh","layerCenter","getLayerCenter","map","customCoords","setCenter","setCustomCoordCenter","getMVPMatrix","getCustomCoordCenter","rendererService","getViewportSize","width","height","models","forEach","model","addUniforms","ProjectionMatrix","cameraService","getProjectionMatrix","ViewMatrix","getViewMatrix","ViewProjectionMatrix","getViewProjectionMatrix","Zoom","getZoom","ZoomScale","getZoomScale","FocalDistance","getFocalDistance","CameraPosition","getCameraPosition","CoordinateSystem","getCoordinateSystem","ViewportCenter","getViewportCenter","ViewportCenterProjection","getViewportCenterProjection","PixelsPerDegree","getPixelsPerDegree","PixelsPerDegree2","getPixelsPerDegree2","PixelsPerMeter","getPixelsPerMeter","Mvp","getModelMatrix","devicePixelRatio","getLayerConfig","pickingBuffer","Number","getShaderPickStat","source","getSource","center"],"mappings":"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","sourcesContent":["import {\n CameraUniform,\n CoordinateUniform,\n ICameraService,\n ICoordinateSystemService,\n ILayer,\n ILayerPlugin,\n IMapService,\n IRendererService,\n TYPES,\n} from '@antv/l7-core';\nimport { $window } from '@antv/l7-utils';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\n/**\n * 在渲染之前需要获取当前 Shader 所需 Uniform,例如:\n * 1. 从相机服务中获取 View & ProjectionMatrix,当前缩放等级等等\n * 2. 从坐标系服务中获取当前坐标系,例如是否是偏移坐标系\n * @see https://yuque.antfin-inc.com/yuqi.pyq/fgetpa/doml91\n * 3. 当前 Layer 本身的样式属性\n */\n@injectable()\nexport default class ShaderUniformPlugin implements ILayerPlugin {\n @inject(TYPES.ICameraService)\n private readonly cameraService: ICameraService;\n\n @inject(TYPES.ICoordinateSystemService)\n private readonly coordinateSystemService: ICoordinateSystemService;\n\n @inject(TYPES.IRendererService)\n private readonly rendererService: IRendererService;\n\n @inject(TYPES.IMapService)\n private readonly mapService: IMapService;\n\n public apply(layer: ILayer) {\n const version = this.mapService.version;\n\n let mvp = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; // default matrix (for gaode2.x)\n let sceneCenterMKT = [0, 0];\n layer.hooks.beforeRender.tap('ShaderUniformPlugin', () => {\n // 重新计算坐标系参数\n this.coordinateSystemService.refresh();\n\n if (version === 'GAODE2.x') {\n const layerCenter = this.getLayerCenter(layer);\n // @ts-ignore\n this.mapService.map.customCoords.setCenter(layerCenter);\n // @ts-ignore\n this.mapService.setCustomCoordCenter(layerCenter);\n // @ts-ignore\n mvp = this.mapService.map.customCoords.getMVPMatrix();\n // mvp = amapCustomCoords.getMVPMatrix()\n // @ts-ignore\n sceneCenterMKT = this.mapService.getCustomCoordCenter();\n }\n\n const { width, height } = this.rendererService.getViewportSize();\n layer.models.forEach((model) => {\n model.addUniforms({\n // 相机参数,包含 VP 矩阵、缩放等级\n [CameraUniform.ProjectionMatrix]: this.cameraService.getProjectionMatrix(),\n [CameraUniform.ViewMatrix]: this.cameraService.getViewMatrix(),\n [CameraUniform.ViewProjectionMatrix]: this.cameraService.getViewProjectionMatrix(),\n [CameraUniform.Zoom]: this.cameraService.getZoom(),\n [CameraUniform.ZoomScale]: this.cameraService.getZoomScale(),\n [CameraUniform.FocalDistance]: this.cameraService.getFocalDistance(),\n [CameraUniform.CameraPosition]: this.cameraService.getCameraPosition(),\n // 坐标系参数\n [CoordinateUniform.CoordinateSystem]: this.coordinateSystemService.getCoordinateSystem(),\n [CoordinateUniform.ViewportCenter]: this.coordinateSystemService.getViewportCenter(),\n [CoordinateUniform.ViewportCenterProjection]: this.coordinateSystemService.getViewportCenterProjection(),\n [CoordinateUniform.PixelsPerDegree]: this.coordinateSystemService.getPixelsPerDegree(),\n [CoordinateUniform.PixelsPerDegree2]: this.coordinateSystemService.getPixelsPerDegree2(),\n [CoordinateUniform.PixelsPerMeter]: this.coordinateSystemService.getPixelsPerMeter(),\n // 坐标系是高德2.0的时候单独计算\n [CoordinateUniform.Mvp]: mvp,\n u_SceneCenterMKT: sceneCenterMKT,\n // 其他参数,例如视口大小、DPR 等\n u_ViewportSize: [width, height],\n u_ModelMatrix: this.cameraService.getModelMatrix(),\n u_DevicePixelRatio: $window.devicePixelRatio,\n // u_ModelMatrix: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n u_PickingBuffer: layer.getLayerConfig().pickingBuffer || 0,\n // TODO: 当前地图是否在拖动\n u_shaderPick: Number(layer.getShaderPickStat()),\n });\n });\n\n // TODO:脏检查,决定是否需要渲染\n });\n }\n\n private getLayerCenter(layer: ILayer) {\n const source = layer.getSource();\n return source.center;\n }\n}\n"],"file":"ShaderUniformPlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/ShaderUniformPlugin.ts"],"names":["CameraUniform","CoordinateUniform","TYPES","$window","inject","injectable","ShaderUniformPlugin","ICameraService","ICoordinateSystemService","IRendererService","IMapService","layer","version","mapService","mvp","sceneCenterMKT","hooks","beforeRender","tap","offset","getLayerConfig","tileOrigin","coordinateSystemService","refresh","layerCenter","getLayerCenter","map","customCoords","setCenter","setCustomCoordCenter","getMVPMatrix","getCustomCoordCenter","rendererService","getViewportSize","width","height","models","forEach","model","addUniforms","ProjectionMatrix","cameraService","getProjectionMatrix","ViewMatrix","getViewMatrix","ViewProjectionMatrix","getViewProjectionMatrix","Zoom","getZoom","ZoomScale","getZoomScale","FocalDistance","getFocalDistance","CameraPosition","getCameraPosition","CoordinateSystem","getCoordinateSystem","ViewportCenter","getViewportCenter","ViewportCenterProjection","getViewportCenterProjection","PixelsPerDegree","getPixelsPerDegree","PixelsPerDegree2","getPixelsPerDegree2","PixelsPerMeter","getPixelsPerMeter","Mvp","getModelMatrix","devicePixelRatio","pickingBuffer","Number","getShaderPickStat","source","getSource","center"],"mappings":"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","sourcesContent":["import {\n CameraUniform,\n CoordinateUniform,\n ICameraService,\n ICoordinateSystemService,\n ILayer,\n ILayerPlugin,\n IMapService,\n IRendererService,\n TYPES,\n} from '@antv/l7-core';\nimport { $window } from '@antv/l7-utils';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\n/**\n * 在渲染之前需要获取当前 Shader 所需 Uniform,例如:\n * 1. 从相机服务中获取 View & ProjectionMatrix,当前缩放等级等等\n * 2. 从坐标系服务中获取当前坐标系,例如是否是偏移坐标系\n * @see https://yuque.antfin-inc.com/yuqi.pyq/fgetpa/doml91\n * 3. 当前 Layer 本身的样式属性\n */\n@injectable()\nexport default class ShaderUniformPlugin implements ILayerPlugin {\n @inject(TYPES.ICameraService)\n private readonly cameraService: ICameraService;\n\n @inject(TYPES.ICoordinateSystemService)\n private readonly coordinateSystemService: ICoordinateSystemService;\n\n @inject(TYPES.IRendererService)\n private readonly rendererService: IRendererService;\n\n @inject(TYPES.IMapService)\n private readonly mapService: IMapService;\n\n public apply(layer: ILayer) {\n const version = this.mapService.version;\n\n let mvp = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; // default matrix (for gaode2.x)\n let sceneCenterMKT = [0, 0];\n layer.hooks.beforeRender.tap('ShaderUniformPlugin', () => {\n // @ts-ignore\n const offset = layer.getLayerConfig().tileOrigin;\n // 重新计算坐标系参数\n this.coordinateSystemService.refresh(offset);\n\n if (version === 'GAODE2.x') {\n const layerCenter = this.getLayerCenter(layer);\n // @ts-ignore\n this.mapService.map.customCoords.setCenter(layerCenter);\n // @ts-ignore\n this.mapService.setCustomCoordCenter(layerCenter);\n // @ts-ignore\n mvp = this.mapService.map.customCoords.getMVPMatrix();\n // mvp = amapCustomCoords.getMVPMatrix()\n // @ts-ignore\n sceneCenterMKT = this.mapService.getCustomCoordCenter();\n }\n\n const { width, height } = this.rendererService.getViewportSize();\n layer.models.forEach((model) => {\n model.addUniforms({\n // 相机参数,包含 VP 矩阵、缩放等级\n [CameraUniform.ProjectionMatrix]: this.cameraService.getProjectionMatrix(),\n [CameraUniform.ViewMatrix]: this.cameraService.getViewMatrix(),\n [CameraUniform.ViewProjectionMatrix]: this.cameraService.getViewProjectionMatrix(),\n [CameraUniform.Zoom]: this.cameraService.getZoom(),\n [CameraUniform.ZoomScale]: this.cameraService.getZoomScale(),\n [CameraUniform.FocalDistance]: this.cameraService.getFocalDistance(),\n [CameraUniform.CameraPosition]: this.cameraService.getCameraPosition(),\n // 坐标系参数\n [CoordinateUniform.CoordinateSystem]: this.coordinateSystemService.getCoordinateSystem(),\n [CoordinateUniform.ViewportCenter]: this.coordinateSystemService.getViewportCenter(),\n [CoordinateUniform.ViewportCenterProjection]: this.coordinateSystemService.getViewportCenterProjection(),\n [CoordinateUniform.PixelsPerDegree]: this.coordinateSystemService.getPixelsPerDegree(),\n [CoordinateUniform.PixelsPerDegree2]: this.coordinateSystemService.getPixelsPerDegree2(),\n [CoordinateUniform.PixelsPerMeter]: this.coordinateSystemService.getPixelsPerMeter(),\n // 坐标系是高德2.0的时候单独计算\n [CoordinateUniform.Mvp]: mvp,\n u_SceneCenterMKT: sceneCenterMKT,\n // 其他参数,例如视口大小、DPR 等\n u_ViewportSize: [width, height],\n u_ModelMatrix: this.cameraService.getModelMatrix(),\n u_DevicePixelRatio: $window.devicePixelRatio,\n // u_ModelMatrix: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n u_PickingBuffer: layer.getLayerConfig().pickingBuffer || 0,\n // TODO: 当前地图是否在拖动\n u_shaderPick: Number(layer.getShaderPickStat()),\n });\n });\n\n // TODO:脏检查,决定是否需要渲染\n });\n }\n\n private getLayerCenter(layer: ILayer) {\n const source = layer.getSource();\n return source.center;\n }\n}\n"],"file":"ShaderUniformPlugin.js"}
@@ -25,6 +25,6 @@ export default class PointLayer extends BaseLayer<IPointLayerStyleOptions> {
25
25
  blend: string;
26
26
  } | {} | {} | {} | {
27
27
  blend: string;
28
- };
28
+ } | {} | {} | {} | {};
29
29
  protected getModelType(): PointType;
30
30
  }
package/es/point/index.js CHANGED
@@ -124,14 +124,22 @@ var PointLayer = function (_BaseLayer) {
124
124
  icon: {},
125
125
  text: {
126
126
  blend: 'normal'
127
- }
127
+ },
128
+ vectorpoint: {},
129
+ tile: {},
130
+ earthFill: {},
131
+ earthExtrude: {}
128
132
  };
129
133
  return defaultConfig[type];
130
134
  }
131
135
  }, {
132
136
  key: "getModelType",
133
137
  value: function getModelType() {
134
- var PointTypes = ['fillImage', 'fill', 'radar', 'image', 'normal', 'simplePoint', 'extrude', 'text', 'icon'];
138
+ var PointTypes = ['fillImage', 'fill', 'radar', 'image', 'normal', 'simplePoint', 'extrude', 'text', 'icon', 'vectorpoint', 'tile', 'earthFill', 'earthExtrude'];
139
+
140
+ if (this.layerSource.parser.type === 'mvt') {
141
+ return 'vectorpoint';
142
+ }
135
143
 
136
144
  if (this.layerType && PointTypes.includes(this.layerType)) {
137
145
  return this.layerType;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/point/index.ts"],"names":["BaseLayer","PointModels","PointLayer","modelType","getModelType","layerModel","models","initModels","buildModels","shapeOption","field","values","getLayerConfig","shape2d","shape3d","iconMap","iconService","getIconMap","indexOf","Array","v","hasOwnProperty","properties","opacity","type","minimum","maximum","defaultConfig","fillImage","normal","blend","radar","simplePoint","fill","extrude","image","icon","text","PointTypes","layerType","includes","layerData","getEncodedData","item","find","fe","getModelTypeWillEmptyData","shape","fontService","getGlyph"],"mappings":"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","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport BaseLayer from '../core/BaseLayer';\nimport { IPointLayerStyleOptions } from '../core/interface';\nimport PointModels, { PointType } from './models/index';\n\nexport default class PointLayer extends BaseLayer<IPointLayerStyleOptions> {\n public type: string = 'PointLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new PointModels[modelType](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n /**\n * 在未传入数据的时候判断点图层的 shape 类型\n * @returns\n */\n public getModelTypeWillEmptyData(): PointType {\n if (this.shapeOption) {\n const { field, values } = this.shapeOption;\n const { shape2d, shape3d } = this.getLayerConfig();\n\n const iconMap = this.iconService.getIconMap();\n\n if (field && shape2d?.indexOf(field as string) !== -1) {\n return 'fill';\n }\n\n if (values && values instanceof Array) {\n for (const v of values) {\n if (typeof v === 'string' && iconMap.hasOwnProperty(v as string)) {\n return 'image';\n }\n }\n }\n }\n return 'normal';\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n fillImage: {},\n normal: {\n blend: 'additive',\n },\n radar: {},\n simplePoint: {},\n fill: { blend: 'normal' },\n extrude: {},\n image: {},\n icon: {},\n text: {\n blend: 'normal',\n },\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): PointType {\n const PointTypes = [\n 'fillImage',\n 'fill',\n 'radar',\n 'image',\n 'normal',\n 'simplePoint',\n 'extrude',\n 'text',\n 'icon',\n ];\n if (this.layerType && PointTypes.includes(this.layerType)) {\n return this.layerType as PointType;\n }\n // pointlayer\n // 2D、 3d、 shape、image、text、normal、\n const layerData = this.getEncodedData();\n const { shape2d, shape3d } = this.getLayerConfig();\n const iconMap = this.iconService.getIconMap();\n const item = layerData.find((fe: IEncodeFeature) => {\n return fe.hasOwnProperty('shape');\n });\n if (!item) {\n // return 'normal';\n return this.getModelTypeWillEmptyData();\n } else {\n const shape = item.shape;\n if (shape === 'dot') {\n return 'normal';\n }\n if (shape === 'simple') {\n return 'simplePoint';\n }\n if (shape === 'radar') {\n return 'radar';\n }\n if (shape === 'fillImage') {\n return 'fillImage';\n }\n if (shape2d?.indexOf(shape as string) !== -1) {\n return 'fill';\n }\n if (shape3d?.indexOf(shape as string) !== -1) {\n return 'extrude';\n }\n if (iconMap.hasOwnProperty(shape as string)) {\n return 'image';\n }\n if (this.fontService.getGlyph(shape as string) !== '') {\n return 'icon';\n }\n return 'text';\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/point/index.ts"],"names":["BaseLayer","PointModels","PointLayer","modelType","getModelType","layerModel","models","initModels","buildModels","shapeOption","field","values","getLayerConfig","shape2d","shape3d","iconMap","iconService","getIconMap","indexOf","Array","v","hasOwnProperty","properties","opacity","type","minimum","maximum","defaultConfig","fillImage","normal","blend","radar","simplePoint","fill","extrude","image","icon","text","vectorpoint","tile","earthFill","earthExtrude","PointTypes","layerSource","parser","layerType","includes","layerData","getEncodedData","item","find","fe","getModelTypeWillEmptyData","shape","fontService","getGlyph"],"mappings":"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","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport BaseLayer from '../core/BaseLayer';\nimport { IPointLayerStyleOptions } from '../core/interface';\nimport PointModels, { PointType } from './models/index';\n\nexport default class PointLayer extends BaseLayer<IPointLayerStyleOptions> {\n public type: string = 'PointLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new PointModels[modelType](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n /**\n * 在未传入数据的时候判断点图层的 shape 类型\n * @returns\n */\n public getModelTypeWillEmptyData(): PointType {\n if (this.shapeOption) {\n const { field, values } = this.shapeOption;\n const { shape2d, shape3d } = this.getLayerConfig();\n\n const iconMap = this.iconService.getIconMap();\n\n if (field && shape2d?.indexOf(field as string) !== -1) {\n return 'fill';\n }\n\n if (values && values instanceof Array) {\n for (const v of values) {\n if (typeof v === 'string' && iconMap.hasOwnProperty(v as string)) {\n return 'image';\n }\n }\n }\n }\n return 'normal';\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n fillImage: {},\n normal: {\n blend: 'additive',\n },\n radar: {},\n simplePoint: {},\n fill: { blend: 'normal' },\n extrude: {},\n image: {},\n icon: {},\n text: {\n blend: 'normal',\n },\n vectorpoint: {},\n tile: {},\n earthFill: {},\n earthExtrude: {},\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): PointType {\n const PointTypes = [\n 'fillImage',\n 'fill',\n 'radar',\n 'image',\n 'normal',\n 'simplePoint',\n 'extrude',\n 'text',\n 'icon',\n 'vectorpoint',\n 'tile',\n 'earthFill',\n 'earthExtrude',\n ];\n if (this.layerSource.parser.type === 'mvt') {\n return 'vectorpoint';\n }\n if (this.layerType && PointTypes.includes(this.layerType)) {\n return this.layerType as PointType;\n }\n // pointlayer\n // 2D、 3d、 shape、image、text、normal、\n const layerData = this.getEncodedData();\n const { shape2d, shape3d } = this.getLayerConfig();\n const iconMap = this.iconService.getIconMap();\n const item = layerData.find((fe: IEncodeFeature) => {\n return fe.hasOwnProperty('shape');\n });\n if (!item) {\n // return 'normal';\n return this.getModelTypeWillEmptyData();\n } else {\n const shape = item.shape;\n if (shape === 'dot') {\n return 'normal';\n }\n if (shape === 'simple') {\n return 'simplePoint';\n }\n if (shape === 'radar') {\n return 'radar';\n }\n if (shape === 'fillImage') {\n return 'fillImage';\n }\n if (shape2d?.indexOf(shape as string) !== -1) {\n return 'fill';\n }\n if (shape3d?.indexOf(shape as string) !== -1) {\n return 'extrude';\n }\n if (iconMap.hasOwnProperty(shape as string)) {\n return 'image';\n }\n if (this.fontService.getGlyph(shape as string) !== '') {\n return 'icon';\n }\n return 'text';\n }\n }\n}\n"],"file":"index.js"}
@@ -0,0 +1,24 @@
1
+ import { IModel } from '@antv/l7-core';
2
+ import BaseModel from '../../core/BaseModel';
3
+ export default class ExtrudeModel extends BaseModel {
4
+ private raiseCount;
5
+ private raiserepeat;
6
+ getUninforms(): {
7
+ u_pickLight: number;
8
+ u_heightfixed: number;
9
+ u_r: number;
10
+ u_dataTexture: import("@antv/l7-core").ITexture2D;
11
+ u_cellTypeLayout: number[];
12
+ u_opacity: number;
13
+ u_linearColor: number;
14
+ u_sourceColor: number[];
15
+ u_targetColor: number[];
16
+ u_opacitylinear: number;
17
+ u_opacitylinear_dir: number;
18
+ u_lightEnable: number;
19
+ };
20
+ initModels(): IModel[];
21
+ buildModels(): IModel[];
22
+ clearModels(): void;
23
+ protected registerBuiltinAttributes(): void;
24
+ }
@@ -0,0 +1,259 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/createClass";
3
+ import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
4
+ import _inherits from "@babel/runtime/helpers/inherits";
5
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
+ import _isNumber from "lodash/isNumber";
9
+
10
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
11
+
12
+ 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; } }
13
+
14
+ import { AttributeType, gl } from '@antv/l7-core';
15
+ import { getCullFace, rgb2arr } from '@antv/l7-utils';
16
+ import BaseModel from '../../core/BaseModel';
17
+ import { PointExtrudeTriangulation } from '../../core/triangulation';
18
+ import { lglt2xyz } from '../../earth/utils';
19
+ import { calculateCentroid } from '../../utils/geo';
20
+ 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";
21
+ 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 \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";
22
+
23
+ var ExtrudeModel = function (_BaseModel) {
24
+ _inherits(ExtrudeModel, _BaseModel);
25
+
26
+ var _super = _createSuper(ExtrudeModel);
27
+
28
+ function ExtrudeModel() {
29
+ var _this;
30
+
31
+ _classCallCheck(this, ExtrudeModel);
32
+
33
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
34
+ args[_key] = arguments[_key];
35
+ }
36
+
37
+ _this = _super.call.apply(_super, [this].concat(args));
38
+
39
+ _defineProperty(_assertThisInitialized(_this), "raiseCount", 0);
40
+
41
+ _defineProperty(_assertThisInitialized(_this), "raiserepeat", 0);
42
+
43
+ return _this;
44
+ }
45
+
46
+ _createClass(ExtrudeModel, [{
47
+ key: "getUninforms",
48
+ value: function getUninforms() {
49
+ var _ref = this.layer.getLayerConfig(),
50
+ _ref$animateOption = _ref.animateOption,
51
+ animateOption = _ref$animateOption === void 0 ? {
52
+ enable: false,
53
+ speed: 0.01,
54
+ repeat: false
55
+ } : _ref$animateOption,
56
+ _ref$opacity = _ref.opacity,
57
+ opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
58
+ sourceColor = _ref.sourceColor,
59
+ targetColor = _ref.targetColor,
60
+ _ref$pickLight = _ref.pickLight,
61
+ pickLight = _ref$pickLight === void 0 ? false : _ref$pickLight,
62
+ _ref$heightfixed = _ref.heightfixed,
63
+ heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed,
64
+ _ref$opacityLinear = _ref.opacityLinear,
65
+ opacityLinear = _ref$opacityLinear === void 0 ? {
66
+ enable: false,
67
+ dir: 'up'
68
+ } : _ref$opacityLinear,
69
+ _ref$lightEnable = _ref.lightEnable,
70
+ lightEnable = _ref$lightEnable === void 0 ? true : _ref$lightEnable;
71
+
72
+ if (this.dataTextureTest && this.dataTextureNeedUpdate({
73
+ opacity: opacity
74
+ })) {
75
+ this.judgeStyleAttributes({
76
+ opacity: opacity
77
+ });
78
+ var encodeData = this.layer.getEncodedData();
79
+
80
+ var _this$calDataFrame = this.calDataFrame(this.cellLength, encodeData, this.cellProperties),
81
+ data = _this$calDataFrame.data,
82
+ width = _this$calDataFrame.width,
83
+ height = _this$calDataFrame.height;
84
+
85
+ this.rowCount = height;
86
+ this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
87
+ flipY: true,
88
+ data: data,
89
+ format: gl.LUMINANCE,
90
+ type: gl.FLOAT,
91
+ width: width,
92
+ height: height
93
+ }) : this.createTexture2D({
94
+ flipY: true,
95
+ data: [1],
96
+ format: gl.LUMINANCE,
97
+ type: gl.FLOAT,
98
+ width: 1,
99
+ height: 1
100
+ });
101
+ }
102
+
103
+ var useLinearColor = 0;
104
+ var sourceColorArr = [0, 0, 0, 0];
105
+ var targetColorArr = [0, 0, 0, 0];
106
+
107
+ if (sourceColor && targetColor) {
108
+ sourceColorArr = rgb2arr(sourceColor);
109
+ targetColorArr = rgb2arr(targetColor);
110
+ useLinearColor = 1;
111
+ }
112
+
113
+ if (this.raiseCount < 1 && this.raiserepeat > 0) {
114
+ if (animateOption.enable) {
115
+ var _animateOption$speed = animateOption.speed,
116
+ speed = _animateOption$speed === void 0 ? 0.01 : _animateOption$speed,
117
+ _animateOption$repeat = animateOption.repeat,
118
+ repeat = _animateOption$repeat === void 0 ? false : _animateOption$repeat;
119
+ this.raiseCount += speed;
120
+
121
+ if (this.raiseCount >= 1) {
122
+ if (this.raiserepeat > 1) {
123
+ this.raiseCount = 0;
124
+ this.raiserepeat--;
125
+ } else {
126
+ this.raiseCount = 1;
127
+ }
128
+ }
129
+ }
130
+ }
131
+
132
+ return {
133
+ u_pickLight: Number(pickLight),
134
+ u_heightfixed: Number(heightfixed),
135
+ u_r: animateOption.enable && this.raiserepeat > 0 ? this.raiseCount : 1.0,
136
+ u_dataTexture: this.dataTexture,
137
+ u_cellTypeLayout: this.getCellTypeLayout(),
138
+ u_opacity: _isNumber(opacity) ? opacity : 1.0,
139
+ u_linearColor: useLinearColor,
140
+ u_sourceColor: sourceColorArr,
141
+ u_targetColor: targetColorArr,
142
+ u_opacitylinear: Number(opacityLinear.enable),
143
+ u_opacitylinear_dir: opacityLinear.dir === 'up' ? 1.0 : 0.0,
144
+ u_lightEnable: Number(lightEnable)
145
+ };
146
+ }
147
+ }, {
148
+ key: "initModels",
149
+ value: function initModels() {
150
+ return this.buildModels();
151
+ }
152
+ }, {
153
+ key: "buildModels",
154
+ value: function buildModels() {
155
+ var _ref2 = this.layer.getLayerConfig(),
156
+ _ref2$depth = _ref2.depth,
157
+ depth = _ref2$depth === void 0 ? true : _ref2$depth,
158
+ _ref2$animateOption$r = _ref2.animateOption.repeat,
159
+ repeat = _ref2$animateOption$r === void 0 ? 1 : _ref2$animateOption$r;
160
+
161
+ this.raiserepeat = repeat;
162
+ return [this.layer.buildLayerModel({
163
+ moduleName: 'pointExtrude2',
164
+ vertexShader: pointExtrudeVert,
165
+ fragmentShader: pointExtrudeFrag,
166
+ triangulation: PointExtrudeTriangulation,
167
+ blend: this.getBlend(),
168
+ cull: {
169
+ enable: true,
170
+ face: getCullFace(this.mapService.version)
171
+ },
172
+ depth: {
173
+ enable: depth
174
+ }
175
+ })];
176
+ }
177
+ }, {
178
+ key: "clearModels",
179
+ value: function clearModels() {
180
+ var _this$dataTexture;
181
+
182
+ (_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
183
+ }
184
+ }, {
185
+ key: "registerBuiltinAttributes",
186
+ value: function registerBuiltinAttributes() {
187
+ this.styleAttributeService.registerStyleAttribute({
188
+ name: 'size',
189
+ type: AttributeType.Attribute,
190
+ descriptor: {
191
+ name: 'a_Size',
192
+ buffer: {
193
+ usage: gl.DYNAMIC_DRAW,
194
+ data: [],
195
+ type: gl.FLOAT
196
+ },
197
+ size: 3,
198
+ update: function update(feature, featureIdx, vertex, attributeIdx) {
199
+ var size = feature.size;
200
+
201
+ if (size) {
202
+ var buffersize = [];
203
+
204
+ if (Array.isArray(size)) {
205
+ buffersize = size.length === 2 ? [size[0], size[0], size[1]] : size;
206
+ }
207
+
208
+ if (!Array.isArray(size)) {
209
+ buffersize = [size, size, size];
210
+ }
211
+
212
+ return buffersize;
213
+ } else {
214
+ return [2, 2, 2];
215
+ }
216
+ }
217
+ }
218
+ });
219
+ this.styleAttributeService.registerStyleAttribute({
220
+ name: 'normal',
221
+ type: AttributeType.Attribute,
222
+ descriptor: {
223
+ name: 'a_Normal',
224
+ buffer: {
225
+ usage: gl.STATIC_DRAW,
226
+ data: [],
227
+ type: gl.FLOAT
228
+ },
229
+ size: 3,
230
+ update: function update(feature, featureIdx, vertex, attributeIdx, normal) {
231
+ return normal;
232
+ }
233
+ }
234
+ });
235
+ this.styleAttributeService.registerStyleAttribute({
236
+ name: 'pos',
237
+ type: AttributeType.Attribute,
238
+ descriptor: {
239
+ name: 'a_Pos',
240
+ buffer: {
241
+ usage: gl.DYNAMIC_DRAW,
242
+ data: [],
243
+ type: gl.FLOAT
244
+ },
245
+ size: 3,
246
+ update: function update(feature, featureIdx) {
247
+ var coordinates = calculateCentroid(feature.coordinates);
248
+ return lglt2xyz([coordinates[0], coordinates[1]]);
249
+ }
250
+ }
251
+ });
252
+ }
253
+ }]);
254
+
255
+ return ExtrudeModel;
256
+ }(BaseModel);
257
+
258
+ export { ExtrudeModel as default };
259
+ //# sourceMappingURL=earthExtrude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/point/models/earthExtrude.ts"],"names":["AttributeType","gl","getCullFace","rgb2arr","BaseModel","PointExtrudeTriangulation","lglt2xyz","calculateCentroid","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","LUMINANCE","type","FLOAT","useLinearColor","sourceColorArr","targetColorArr","raiseCount","raiserepeat","u_pickLight","Number","u_heightfixed","u_r","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","blend","getBlend","cull","face","mapService","version","destroy","styleAttributeService","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","buffersize","Array","isArray","STATIC_DRAW","normal","coordinates"],"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/earth/extrude_frag.glsl';\nimport pointExtrudeVert from '../shaders/earth/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\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\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 }),\n ];\n }\n public clearModels() {\n this.dataTexture?.destroy();\n }\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 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 return lglt2xyz([coordinates[0], coordinates[1]]) as [\n number,\n number,\n number,\n ];\n },\n },\n });\n }\n}\n"],"file":"earthExtrude.js"}
@@ -0,0 +1,20 @@
1
+ import { IAnimateOption, IModel, IModelUniform } from '@antv/l7-core';
2
+ import BaseModel from '../../core/BaseModel';
3
+ export default class FillModel extends BaseModel {
4
+ getUninforms(): IModelUniform;
5
+ getAnimateUniforms(): IModelUniform;
6
+ initModels(): IModel[];
7
+ buildModels(): IModel[];
8
+ /**
9
+ * 根据 animateOption 的值返回对应的 shader 代码
10
+ * @returns
11
+ */
12
+ getShaders(): {
13
+ frag: string;
14
+ vert: string;
15
+ type: string;
16
+ };
17
+ clearModels(): void;
18
+ protected animateOption2Array(option: Partial<IAnimateOption>): number[];
19
+ protected registerBuiltinAttributes(): void;
20
+ }