@antv/l7-layers 2.5.39 → 2.5.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/es/core/BaseLayer.js +5 -3
  2. package/es/core/BaseLayer.js.map +1 -1
  3. package/es/core/BaseModel.js +1 -1
  4. package/es/core/BaseModel.js.map +1 -1
  5. package/es/heatmap/models/heatmap.js +13 -18
  6. package/es/heatmap/models/heatmap.js.map +1 -1
  7. package/es/image/models/image.js +27 -7
  8. package/es/image/models/image.js.map +1 -1
  9. package/es/line/index.d.ts +2 -0
  10. package/es/line/index.js +3 -0
  11. package/es/line/index.js.map +1 -1
  12. package/es/line/models/arcmini.d.ts +9 -0
  13. package/es/line/models/arcmini.js +144 -0
  14. package/es/line/models/arcmini.js.map +1 -0
  15. package/es/line/models/index.d.ts +1 -1
  16. package/es/line/models/index.js +2 -0
  17. package/es/line/models/index.js.map +1 -1
  18. package/es/plugins/DataMappingPlugin.js +1 -1
  19. package/es/plugins/FeatureScalePlugin.js.map +1 -1
  20. package/es/plugins/LayerAnimateStylePlugin.js +1 -1
  21. package/es/plugins/LayerStylePlugin.js.map +1 -1
  22. package/es/plugins/LightingPlugin.js +4 -2
  23. package/es/plugins/LightingPlugin.js.map +1 -1
  24. package/es/plugins/ShaderUniformPlugin.js +2 -1
  25. package/es/plugins/ShaderUniformPlugin.js.map +1 -1
  26. package/es/plugins/UpdateStyleAttributePlugin.js +6 -6
  27. package/es/plugins/UpdateStyleAttributePlugin.js.map +1 -1
  28. package/es/point/models/image.js.map +1 -1
  29. package/es/point/models/text.js +1 -1
  30. package/es/point/models/text.js.map +1 -1
  31. package/es/raster/raster.js +1 -1
  32. package/lib/core/BaseLayer.js +6 -3
  33. package/lib/core/BaseLayer.js.map +1 -1
  34. package/lib/core/BaseModel.js +1 -1
  35. package/lib/core/BaseModel.js.map +1 -1
  36. package/lib/core/shape/Path.js +5 -4
  37. package/lib/core/shape/Path.js.map +1 -1
  38. package/lib/core/shape/extrude.js +1 -1
  39. package/lib/core/triangulation.js +13 -9
  40. package/lib/core/triangulation.js.map +1 -1
  41. package/lib/earth/utils.js +1 -1
  42. package/lib/heatmap/models/heatmap.js +13 -18
  43. package/lib/heatmap/models/heatmap.js.map +1 -1
  44. package/lib/image/models/image.js +28 -7
  45. package/lib/image/models/image.js.map +1 -1
  46. package/lib/index.js +8 -8
  47. package/lib/line/index.js +3 -0
  48. package/lib/line/index.js.map +1 -1
  49. package/lib/line/models/arcmini.js +160 -0
  50. package/lib/line/models/arcmini.js.map +1 -0
  51. package/lib/line/models/index.js +3 -0
  52. package/lib/line/models/index.js.map +1 -1
  53. package/lib/plugins/DataMappingPlugin.js +1 -1
  54. package/lib/plugins/DataSourcePlugin.js +5 -1
  55. package/lib/plugins/DataSourcePlugin.js.map +1 -1
  56. package/lib/plugins/FeatureScalePlugin.js +5 -1
  57. package/lib/plugins/FeatureScalePlugin.js.map +1 -1
  58. package/lib/plugins/LayerAnimateStylePlugin.js +1 -1
  59. package/lib/plugins/LayerStylePlugin.js.map +1 -1
  60. package/lib/plugins/LightingPlugin.js +5 -3
  61. package/lib/plugins/LightingPlugin.js.map +1 -1
  62. package/lib/plugins/MultiPassRendererPlugin.js +1 -1
  63. package/lib/plugins/ShaderUniformPlugin.js +3 -1
  64. package/lib/plugins/ShaderUniformPlugin.js.map +1 -1
  65. package/lib/plugins/UpdateStyleAttributePlugin.js +6 -6
  66. package/lib/plugins/UpdateStyleAttributePlugin.js.map +1 -1
  67. package/lib/point/models/image.js.map +1 -1
  68. package/lib/point/models/text.js +1 -1
  69. package/lib/point/models/text.js.map +1 -1
  70. package/lib/point/shape/Path.js +5 -4
  71. package/lib/point/shape/Path.js.map +1 -1
  72. package/lib/raster/raster.js +1 -1
  73. package/lib/utils/dataMappingStyle.js +1 -1
  74. package/lib/utils/extrude_polyline.js +1 -1
  75. package/lib/utils/polylineNormal.js +1 -1
  76. package/lib/utils/symbol-layout.js +1 -1
  77. package/package.json +6 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/LightingPlugin.ts"],"names":["injectable","lightTypeUniformMap","directional","lights","num","spot","DEFAULT_LIGHT","type","direction","ambient","diffuse","specular","DEFAULT_DIRECTIONAL_LIGHT","DEFAULT_SPOT_LIGHT","position","constant","linear","quadratic","angle","exponent","blur","COLOR_ATTRIBUTES","generateLightingUniforms","lightsMap","u_DirectionalLights","Array","fill","u_NumOfDirectionalLights","u_SpotLights","u_NumOfSpotLights","length","forEach","i","rest","lightsUniformName","lightsNumUniformName","LightingPlugin","layer","hooks","beforeRender","tap","getLayerConfig","enableLighting","models","model","addUniforms"],"mappings":";;;;;;;;;;;AAUA,SAAiBA,UAAjB,QAAmC,WAAnC;AACA,OAAO,kBAAP;AAEA,IAAMC,mBAAmB,GAAG;AAC1BC,EAAAA,WAAW,EAAE;AACXC,IAAAA,MAAM,EAAE,qBADG;AAEXC,IAAAA,GAAG,EAAE;AAFM,GADa;AAK1BC,EAAAA,IAAI,EAAE;AACJF,IAAAA,MAAM,EAAE,cADJ;AAEJC,IAAAA,GAAG,EAAE;AAFD;AALoB,CAA5B;AAkCA,IAAME,aAAgC,GAAG;AACvCC,EAAAA,IAAI,EAAE,aADiC;AAEvCC,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,IAAJ,EAAU,EAAV,CAF4B;AAGvCC,EAAAA,OAAO,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAH8B;AAIvCC,EAAAA,OAAO,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAJ8B;AAKvCC,EAAAA,QAAQ,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX;AAL6B,CAAzC;AAQA,IAAMC,yBAAyB,GAAG;AAChCJ,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CADqB;AAEhCC,EAAAA,OAAO,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAFuB;AAGhCC,EAAAA,OAAO,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAHuB;AAIhCC,EAAAA,QAAQ,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP;AAJsB,CAAlC;AAOA,IAAME,kBAAkB,GAAG;AACzBC,EAAAA,QAAQ,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CADe;AAEzBN,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAFc;AAGzBC,EAAAA,OAAO,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAHgB;AAIzBC,EAAAA,OAAO,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAJgB;AAKzBC,EAAAA,QAAQ,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CALe;AAMzBI,EAAAA,QAAQ,EAAE,CANe;AAOzBC,EAAAA,MAAM,EAAE,CAPiB;AAQzBC,EAAAA,SAAS,EAAE,CARc;AASzBC,EAAAA,KAAK,EAAE,EATkB;AAUzBC,EAAAA,QAAQ,EAAE,EAVe;AAWzBC,EAAAA,IAAI,EAAE;AAXmB,CAA3B;AAcA,IAAMC,gBAAgB,GAAG,CAAC,SAAD,EAAY,SAAZ,EAAuB,UAAvB,CAAzB;AAEA,OAAO,SAASC,wBAAT,CACLnB,MADK,EAEL;AACA,MAAMoB,SAKL,GAAG;AACFC,IAAAA,mBAAmB,EAAE,IAAIC,KAAJ,CAAU,CAAV,EAAaC,IAAb,mBAAuBd,yBAAvB,EADnB;AAEFe,IAAAA,wBAAwB,EAAE,CAFxB;AAGFC,IAAAA,YAAY,EAAE,IAAIH,KAAJ,CAAU,CAAV,EAAaC,IAAb,mBAAuBb,kBAAvB,EAHZ;AAIFgB,IAAAA,iBAAiB,EAAE;AAJjB,GALJ;;AAWA,MAAI,CAAC1B,MAAD,IAAW,CAACA,MAAM,CAAC2B,MAAvB,EAA+B;AAC7B3B,IAAAA,MAAM,GAAG,CAACG,aAAD,CAAT;AACD;;AACDH,EAAAA,MAAM,CAAC4B,OAAP,CAAe,gBAAoCC,CAApC,EAA0C;AAAA,yBAAvCzB,IAAuC;AAAA,QAAvCA,IAAuC,0BAAhC,aAAgC;AAAA,QAAd0B,IAAc;;AACvD,QAAMC,iBAAiB,GAAGjC,mBAAmB,CAACM,IAAD,CAAnB,CAA0BJ,MAApD;AACA,QAAMgC,oBAAoB,GAAGlC,mBAAmB,CAACM,IAAD,CAAnB,CAA0BH,GAAvD;AASA,QAAMA,GAAG,GAAGmB,SAAS,CAACY,oBAAD,CAArB;AAEAZ,IAAAA,SAAS,CAACW,iBAAD,CAAT,CAA6B9B,GAA7B,oCAEKmB,SAAS,CAACW,iBAAD,CAAT,CAA6B9B,GAA7B,CAFL,GAGK6B,IAHL;AAMAV,IAAAA,SAAS,CAACY,oBAAD,CAAT;AACD,GApBD;AAqBA,SAAOZ,SAAP;AACD;IAMoBa,c,WADpBpC,UAAU,E;;;;;;;WAET,eAAaqC,KAAb,EAA4B;AAC1BA,MAAAA,KAAK,CAACC,KAAN,CAAYC,YAAZ,CAAyBC,GAAzB,CAA6B,gBAA7B,EAA+C,YAAM;AACnD,oCAA2BH,KAAK,CAACI,cAAN,EAA3B;AAAA,YAAQC,cAAR,yBAAQA,cAAR;;AACA,YAAIA,cAAJ,EAAoB;AAClBL,UAAAA,KAAK,CAACM,MAAN,CAAaZ,OAAb,CAAqB,UAACa,KAAD;AAAA,mBAEnBA,KAAK,CAACC,WAAN,mBACKvB,wBAAwB,EAD7B,EAFmB;AAAA,WAArB;AAMD;AACF,OAVD;AAWD;;;;;SAbkBc,c","sourcesContent":["import {\n CameraUniform,\n CoordinateUniform,\n ICameraService,\n ICoordinateSystemService,\n ILayer,\n ILayerPlugin,\n IRendererService,\n TYPES,\n} from '@antv/l7-core';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\nconst lightTypeUniformMap = {\n directional: {\n lights: 'u_DirectionalLights',\n num: 'u_NumOfDirectionalLights',\n },\n spot: {\n lights: 'u_SpotLights',\n num: 'u_NumOfSpotLights',\n },\n};\n\ninterface IDirectionalLight {\n type: 'directional';\n direction: [number, number, number];\n ambient: [number, number, number];\n diffuse: [number, number, number];\n specular: [number, number, number];\n}\n\ninterface ISpotLight {\n type: 'spot';\n position: [number, number, number];\n direction: [number, number, number];\n ambient: [number, number, number];\n diffuse: [number, number, number];\n specular: [number, number, number];\n constant: number;\n linear: number;\n quadratic: number;\n angle: number;\n exponent: number;\n blur: number;\n}\n\nconst DEFAULT_LIGHT: IDirectionalLight = {\n type: 'directional',\n direction: [1, 10.5, 12],\n ambient: [0.2, 0.2, 0.2],\n diffuse: [0.6, 0.6, 0.6],\n specular: [0.1, 0.1, 0.1],\n};\n\nconst DEFAULT_DIRECTIONAL_LIGHT = {\n direction: [0, 0, 0],\n ambient: [0, 0, 0],\n diffuse: [0, 0, 0],\n specular: [0, 0, 0],\n};\n\nconst DEFAULT_SPOT_LIGHT = {\n position: [0, 0, 0],\n direction: [0, 0, 0],\n ambient: [0, 0, 0],\n diffuse: [0, 0, 0],\n specular: [0, 0, 0],\n constant: 1,\n linear: 0,\n quadratic: 0,\n angle: 14,\n exponent: 40,\n blur: 5,\n};\n\nconst COLOR_ATTRIBUTES = ['ambient', 'diffuse', 'specular'];\n\nexport function generateLightingUniforms(\n lights?: Array<Partial<IDirectionalLight | ISpotLight>>,\n) {\n const lightsMap: {\n u_DirectionalLights: Array<Omit<IDirectionalLight, 'type'>>;\n u_NumOfDirectionalLights: number;\n u_SpotLights: Array<Omit<ISpotLight, 'type'>>;\n u_NumOfSpotLights: number;\n } = {\n u_DirectionalLights: new Array(3).fill({ ...DEFAULT_DIRECTIONAL_LIGHT }),\n u_NumOfDirectionalLights: 0,\n u_SpotLights: new Array(3).fill({ ...DEFAULT_SPOT_LIGHT }),\n u_NumOfSpotLights: 0,\n };\n if (!lights || !lights.length) {\n lights = [DEFAULT_LIGHT];\n }\n lights.forEach(({ type = 'directional', ...rest }, i) => {\n const lightsUniformName = lightTypeUniformMap[type].lights;\n const lightsNumUniformName = lightTypeUniformMap[type].num;\n\n // Object.keys(rest).forEach(key => {\n // if (Util.isString(rest[key]) && COLOR_ATTRIBUTES.indexOf(key) > -1) {\n // rest[key] = ColorUtil.color2RGBA(rest[key]).slice(0, 3);\n // }\n // });\n\n // @ts-ignore\n const num = lightsMap[lightsNumUniformName];\n // @ts-ignore\n lightsMap[lightsUniformName][num] = {\n // @ts-ignore\n ...lightsMap[lightsUniformName][num],\n ...rest,\n };\n // @ts-ignore\n lightsMap[lightsNumUniformName]++;\n });\n return lightsMap;\n}\n\n/**\n * 光照 & Shadow\n */\n@injectable()\nexport default class LightingPlugin implements ILayerPlugin {\n public apply(layer: ILayer) {\n layer.hooks.beforeRender.tap('LightingPlugin', () => {\n const { enableLighting } = layer.getLayerConfig();\n if (enableLighting) {\n layer.models.forEach((model) =>\n // @ts-ignore\n model.addUniforms({\n ...generateLightingUniforms(),\n }),\n );\n }\n });\n }\n}\n"],"file":"LightingPlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/LightingPlugin.ts"],"names":["injectable","lightTypeUniformMap","directional","lights","num","spot","DEFAULT_LIGHT","type","direction","ambient","diffuse","specular","DEFAULT_DIRECTIONAL_LIGHT","DEFAULT_SPOT_LIGHT","position","constant","linear","quadratic","angle","exponent","blur","COLOR_ATTRIBUTES","generateLightingUniforms","lightsMap","u_DirectionalLights","Array","fill","u_NumOfDirectionalLights","u_SpotLights","u_NumOfSpotLights","length","forEach","i","rest","lightsUniformName","lightsNumUniformName","LightingPlugin","layer","hooks","beforeRender","tap","getLayerConfig","enableLighting","models","model","addUniforms"],"mappings":"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","sourcesContent":["import {\n CameraUniform,\n CoordinateUniform,\n ICameraService,\n ICoordinateSystemService,\n ILayer,\n ILayerPlugin,\n IRendererService,\n TYPES,\n} from '@antv/l7-core';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\nconst lightTypeUniformMap = {\n directional: {\n lights: 'u_DirectionalLights',\n num: 'u_NumOfDirectionalLights',\n },\n spot: {\n lights: 'u_SpotLights',\n num: 'u_NumOfSpotLights',\n },\n};\n\ninterface IDirectionalLight {\n type: 'directional';\n direction: [number, number, number];\n ambient: [number, number, number];\n diffuse: [number, number, number];\n specular: [number, number, number];\n}\n\ninterface ISpotLight {\n type: 'spot';\n position: [number, number, number];\n direction: [number, number, number];\n ambient: [number, number, number];\n diffuse: [number, number, number];\n specular: [number, number, number];\n constant: number;\n linear: number;\n quadratic: number;\n angle: number;\n exponent: number;\n blur: number;\n}\n\nconst DEFAULT_LIGHT: IDirectionalLight = {\n type: 'directional',\n direction: [1, 10.5, 12],\n ambient: [0.2, 0.2, 0.2],\n diffuse: [0.6, 0.6, 0.6],\n specular: [0.1, 0.1, 0.1],\n};\n\nconst DEFAULT_DIRECTIONAL_LIGHT = {\n direction: [0, 0, 0],\n ambient: [0, 0, 0],\n diffuse: [0, 0, 0],\n specular: [0, 0, 0],\n};\n\nconst DEFAULT_SPOT_LIGHT = {\n position: [0, 0, 0],\n direction: [0, 0, 0],\n ambient: [0, 0, 0],\n diffuse: [0, 0, 0],\n specular: [0, 0, 0],\n constant: 1,\n linear: 0,\n quadratic: 0,\n angle: 14,\n exponent: 40,\n blur: 5,\n};\n\nconst COLOR_ATTRIBUTES = ['ambient', 'diffuse', 'specular'];\n\nexport function generateLightingUniforms(\n lights?: Array<Partial<IDirectionalLight | ISpotLight>>,\n) {\n const lightsMap: {\n u_DirectionalLights: Array<Omit<IDirectionalLight, 'type'>>;\n u_NumOfDirectionalLights: number;\n u_SpotLights: Array<Omit<ISpotLight, 'type'>>;\n u_NumOfSpotLights: number;\n } = {\n u_DirectionalLights: new Array(3).fill({ ...DEFAULT_DIRECTIONAL_LIGHT }),\n u_NumOfDirectionalLights: 0,\n u_SpotLights: new Array(3).fill({ ...DEFAULT_SPOT_LIGHT }),\n u_NumOfSpotLights: 0,\n };\n if (!lights || !lights.length) {\n lights = [DEFAULT_LIGHT];\n }\n lights.forEach(({ type = 'directional', ...rest }, i) => {\n const lightsUniformName = lightTypeUniformMap[type].lights;\n const lightsNumUniformName = lightTypeUniformMap[type].num;\n\n // Object.keys(rest).forEach(key => {\n // if (Util.isString(rest[key]) && COLOR_ATTRIBUTES.indexOf(key) > -1) {\n // rest[key] = ColorUtil.color2RGBA(rest[key]).slice(0, 3);\n // }\n // });\n\n // @ts-ignore\n const num = lightsMap[lightsNumUniformName];\n // @ts-ignore\n lightsMap[lightsUniformName][num] = {\n // @ts-ignore\n ...lightsMap[lightsUniformName][num],\n ...rest,\n };\n // @ts-ignore\n lightsMap[lightsNumUniformName]++;\n });\n return lightsMap;\n}\n\n/**\n * 光照 & Shadow\n */\n@injectable()\nexport default class LightingPlugin implements ILayerPlugin {\n public apply(layer: ILayer) {\n layer.hooks.beforeRender.tap('LightingPlugin', () => {\n const { enableLighting } = layer.getLayerConfig();\n if (enableLighting) {\n layer.models.forEach((model) =>\n // @ts-ignore\n model.addUniforms({\n ...generateLightingUniforms(),\n }),\n );\n }\n });\n }\n}\n"],"file":"LightingPlugin.js"}
@@ -8,6 +8,7 @@ import _initializerWarningHelper from "@babel/runtime/helpers/initializerWarning
8
8
  var _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;
9
9
 
10
10
  import { CameraUniform, CoordinateUniform, TYPES } from '@antv/l7-core';
11
+ import { $window } from '@antv/l7-utils';
11
12
  import { inject, injectable } from 'inversify';
12
13
  import 'reflect-metadata';
13
14
  var ShaderUniformPlugin = (_dec = injectable(), _dec2 = inject(TYPES.ICameraService), _dec3 = inject(TYPES.ICoordinateSystemService), _dec4 = inject(TYPES.IRendererService), _dec5 = inject(TYPES.IMapService), _dec(_class = (_class2 = function () {
@@ -46,7 +47,7 @@ var ShaderUniformPlugin = (_dec = injectable(), _dec2 = inject(TYPES.ICameraServ
46
47
  layer.models.forEach(function (model) {
47
48
  var _model$addUniforms;
48
49
 
49
- model.addUniforms((_model$addUniforms = {}, _defineProperty(_model$addUniforms, CameraUniform.ProjectionMatrix, _this.cameraService.getProjectionMatrix()), _defineProperty(_model$addUniforms, CameraUniform.ViewMatrix, _this.cameraService.getViewMatrix()), _defineProperty(_model$addUniforms, CameraUniform.ViewProjectionMatrix, _this.cameraService.getViewProjectionMatrix()), _defineProperty(_model$addUniforms, CameraUniform.Zoom, _this.cameraService.getZoom()), _defineProperty(_model$addUniforms, CameraUniform.ZoomScale, _this.cameraService.getZoomScale()), _defineProperty(_model$addUniforms, CameraUniform.FocalDistance, _this.cameraService.getFocalDistance()), _defineProperty(_model$addUniforms, CameraUniform.CameraPosition, _this.cameraService.getCameraPosition()), _defineProperty(_model$addUniforms, CoordinateUniform.CoordinateSystem, _this.coordinateSystemService.getCoordinateSystem()), _defineProperty(_model$addUniforms, CoordinateUniform.ViewportCenter, _this.coordinateSystemService.getViewportCenter()), _defineProperty(_model$addUniforms, CoordinateUniform.ViewportCenterProjection, _this.coordinateSystemService.getViewportCenterProjection()), _defineProperty(_model$addUniforms, CoordinateUniform.PixelsPerDegree, _this.coordinateSystemService.getPixelsPerDegree()), _defineProperty(_model$addUniforms, CoordinateUniform.PixelsPerDegree2, _this.coordinateSystemService.getPixelsPerDegree2()), _defineProperty(_model$addUniforms, CoordinateUniform.PixelsPerMeter, _this.coordinateSystemService.getPixelsPerMeter()), _defineProperty(_model$addUniforms, CoordinateUniform.Mvp, mvp), _defineProperty(_model$addUniforms, "u_SceneCenterMKT", sceneCenterMKT), _defineProperty(_model$addUniforms, "u_ViewportSize", [width, height]), _defineProperty(_model$addUniforms, "u_DevicePixelRatio", window.devicePixelRatio), _defineProperty(_model$addUniforms, "u_ModelMatrix", _this.cameraService.getModelMatrix()), _defineProperty(_model$addUniforms, "u_PickingBuffer", layer.getLayerConfig().pickingBuffer || 0), _model$addUniforms));
50
+ model.addUniforms((_model$addUniforms = {}, _defineProperty(_model$addUniforms, CameraUniform.ProjectionMatrix, _this.cameraService.getProjectionMatrix()), _defineProperty(_model$addUniforms, CameraUniform.ViewMatrix, _this.cameraService.getViewMatrix()), _defineProperty(_model$addUniforms, CameraUniform.ViewProjectionMatrix, _this.cameraService.getViewProjectionMatrix()), _defineProperty(_model$addUniforms, CameraUniform.Zoom, _this.cameraService.getZoom()), _defineProperty(_model$addUniforms, CameraUniform.ZoomScale, _this.cameraService.getZoomScale()), _defineProperty(_model$addUniforms, CameraUniform.FocalDistance, _this.cameraService.getFocalDistance()), _defineProperty(_model$addUniforms, CameraUniform.CameraPosition, _this.cameraService.getCameraPosition()), _defineProperty(_model$addUniforms, CoordinateUniform.CoordinateSystem, _this.coordinateSystemService.getCoordinateSystem()), _defineProperty(_model$addUniforms, CoordinateUniform.ViewportCenter, _this.coordinateSystemService.getViewportCenter()), _defineProperty(_model$addUniforms, CoordinateUniform.ViewportCenterProjection, _this.coordinateSystemService.getViewportCenterProjection()), _defineProperty(_model$addUniforms, CoordinateUniform.PixelsPerDegree, _this.coordinateSystemService.getPixelsPerDegree()), _defineProperty(_model$addUniforms, CoordinateUniform.PixelsPerDegree2, _this.coordinateSystemService.getPixelsPerDegree2()), _defineProperty(_model$addUniforms, CoordinateUniform.PixelsPerMeter, _this.coordinateSystemService.getPixelsPerMeter()), _defineProperty(_model$addUniforms, CoordinateUniform.Mvp, mvp), _defineProperty(_model$addUniforms, "u_SceneCenterMKT", sceneCenterMKT), _defineProperty(_model$addUniforms, "u_ViewportSize", [width, height]), _defineProperty(_model$addUniforms, "u_ModelMatrix", _this.cameraService.getModelMatrix()), _defineProperty(_model$addUniforms, "u_DevicePixelRatio", $window.devicePixelRatio), _defineProperty(_model$addUniforms, "u_PickingBuffer", layer.getLayerConfig().pickingBuffer || 0), _defineProperty(_model$addUniforms, "u_Dragging", Number(_this.mapService.dragging)), _model$addUniforms));
50
51
  });
51
52
  });
52
53
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/ShaderUniformPlugin.ts"],"names":["CameraUniform","CoordinateUniform","TYPES","inject","injectable","ShaderUniformPlugin","ICameraService","ICoordinateSystemService","IRendererService","IMapService","layer","version","mapService","mvp","sceneCenterMKT","hooks","beforeRender","tap","coordinateSystemService","refresh","map","customCoords","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","window","devicePixelRatio","getModelMatrix","getLayerConfig","pickingBuffer"],"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 { DOM } 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 // @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_DevicePixelRatio: window.devicePixelRatio,\n // u_ModelMatrix: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n u_ModelMatrix: this.cameraService.getModelMatrix(),\n u_PickingBuffer: layer.getLayerConfig().pickingBuffer || 0,\n });\n });\n\n // TODO:脏检查,决定是否需要渲染\n });\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","coordinateSystemService","refresh","map","customCoords","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","dragging"],"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 // @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_Dragging: Number(this.mapService.dragging),\n });\n });\n\n // TODO:脏检查,决定是否需要渲染\n });\n }\n}\n"],"file":"ShaderUniformPlugin.js"}
@@ -40,12 +40,12 @@ var UpdateStyleAttributePlugin = (_dec = injectable(), _dec(_class = function ()
40
40
  var shape = styleAttributeService.getLayerStyleAttribute('shape');
41
41
 
42
42
  if (filter && filter.needRegenerateVertices || shape && shape.needRegenerateVertices) {
43
- layer.layerModelNeedUpdate = true;
44
- attributes.forEach(function (attr) {
45
- return attr.needRegenerateVertices = false;
46
- });
47
- return;
48
- }
43
+ layer.layerModelNeedUpdate = true;
44
+ attributes.forEach(function (attr) {
45
+ return attr.needRegenerateVertices = false;
46
+ });
47
+ return;
48
+ }
49
49
 
50
50
  attributes.filter(function (attribute) {
51
51
  return attribute.needRegenerateVertices;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/UpdateStyleAttributePlugin.ts"],"names":["injectable","UpdateStyleAttributePlugin","layer","styleAttributeService","hooks","init","tap","initStyleAttribute","beforeRender","layerModelNeedUpdate","updateStyleAtrribute","attributes","getLayerStyleAttributes","filter","getLayerStyleAttribute","shape","needRegenerateVertices","forEach","attr","attribute","updateAttributeByFeatureRange","name","getEncodedData","featureRange","startIndex","endIndex"],"mappings":";;;;;AAMA,SAAiBA,UAAjB,QAAmC,WAAnC;AACA,OAAO,kBAAP;IAMqBC,0B,WADpBD,UAAU,E;;;;;;;WAET,eACEE,KADF,QAKE;AAAA;;AAAA,UAFEC,qBAEF,QAFEA,qBAEF;AACAD,MAAAA,KAAK,CAACE,KAAN,CAAYC,IAAZ,CAAiBC,GAAjB,CAAqB,4BAArB,EAAmD,YAAM;AACvD,QAAA,KAAI,CAACC,kBAAL,CAAwBL,KAAxB,EAA+B;AAAEC,UAAAA,qBAAqB,EAArBA;AAAF,SAA/B;AACD,OAFD;AASAD,MAAAA,KAAK,CAACE,KAAN,CAAYI,YAAZ,CAAyBF,GAAzB,CAA6B,4BAA7B,EAA2D,YAAM;AAC/D,YAAIJ,KAAK,CAACO,oBAAV,EAAgC;AAC9B;AACD;;AACD,QAAA,KAAI,CAACC,oBAAL,CAA0BR,KAA1B,EAAiC;AAAEC,UAAAA,qBAAqB,EAArBA;AAAF,SAAjC;AACD,OALD;AAMD;;;WACD,8BACED,KADF,SAKE;AAAA,UAFEC,qBAEF,SAFEA,qBAEF;AACA,UAAMQ,UAAU,GAAGR,qBAAqB,CAACS,uBAAtB,MAAmD,EAAtE;AACA,UAAMC,MAAM,GAAGV,qBAAqB,CAACW,sBAAtB,CAA6C,QAA7C,CAAf;AACA,UAAMC,KAAK,GAAGZ,qBAAqB,CAACW,sBAAtB,CAA6C,OAA7C,CAAd;;AACA,UACGD,MAAM,IAAIA,MAAM,CAACG,sBAAlB,IACCD,KAAK,IAAIA,KAAK,CAACC,sBAFlB,EAGE;AACAd,UAAAA,KAAK,CAACO,oBAAN,GAA6B,IAA7B;AACAE,UAAAA,UAAU,CAACM,OAAX,CAAmB,UAACC,IAAD;AAAA,mBAAWA,IAAI,CAACF,sBAAL,GAA8B,KAAzC;AAAA,WAAnB;AACA;AACD;;AACDL,MAAAA,UAAU,CACPE,MADH,CACU,UAACM,SAAD;AAAA,eAAeA,SAAS,CAACH,sBAAzB;AAAA,OADV,EAEGC,OAFH,CAEW,UAACE,SAAD,EAAe;AAEtBhB,QAAAA,qBAAqB,CAACiB,6BAAtB,CACED,SAAS,CAACE,IADZ,EAEEnB,KAAK,CAACoB,cAAN,EAFF,EAGEH,SAAS,CAACI,YAAV,CAAuBC,UAHzB,EAIEL,SAAS,CAACI,YAAV,CAAuBE,QAJzB;AAMAN,QAAAA,SAAS,CAACH,sBAAV,GAAmC,KAAnC;AACD,OAXH;AAYD;;;WAED,4BACEd,KADF,SAKE;AAAA,UAFEC,qBAEF,SAFEA,qBAEF;AACA,UAAMQ,UAAU,GAAGR,qBAAqB,CAACS,uBAAtB,MAAmD,EAAtE;AACAD,MAAAA,UAAU,CACPE,MADH,CACU,UAACM,SAAD;AAAA,eAAeA,SAAS,CAACH,sBAAzB;AAAA,OADV,EAEGC,OAFH,CAEW,UAACE,SAAD,EAAe;AAEtBhB,QAAAA,qBAAqB,CAACiB,6BAAtB,CACED,SAAS,CAACE,IADZ,EAEEnB,KAAK,CAACoB,cAAN,EAFF,EAGEH,SAAS,CAACI,YAAV,CAAuBC,UAHzB,EAIEL,SAAS,CAACI,YAAV,CAAuBE,QAJzB;AAMAN,QAAAA,SAAS,CAACH,sBAAV,GAAmC,KAAnC;AACD,OAXH;AAYD;;;;;SAzEkBf,0B","sourcesContent":["import {\n ILayer,\n ILayerPlugin,\n IStyleAttributeService,\n TYPES,\n} from '@antv/l7-core';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\n/**\n * 在初始化阶段完成属性的注册,以及首次根据 Layer 指定的三角化方法完成 indices 和 attribute 的创建\n */\n@injectable()\nexport default class UpdateStyleAttributePlugin implements ILayerPlugin {\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('UpdateStyleAttributePlugin', () => {\n this.initStyleAttribute(layer, { styleAttributeService });\n });\n\n // layer.hooks.beforeRenderData.tap('styleAttributeService', () => {\n // // layer.layerModelNeedUpdate = true;\n // return true;\n // });\n\n layer.hooks.beforeRender.tap('UpdateStyleAttributePlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n this.updateStyleAtrribute(layer, { styleAttributeService });\n });\n }\n private updateStyleAtrribute(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const shape = styleAttributeService.getLayerStyleAttribute('shape');\n if (\n (filter && filter.needRegenerateVertices) ||\n (shape && shape.needRegenerateVertices) // TODO:Shape 更新重新build\n ) {\n layer.layerModelNeedUpdate = true;\n attributes.forEach((attr) => (attr.needRegenerateVertices = false));\n return;\n }\n attributes\n .filter((attribute) => attribute.needRegenerateVertices)\n .forEach((attribute) => {\n // 精确更新某个/某些 feature(s),需要传入 featureIdx d\n styleAttributeService.updateAttributeByFeatureRange(\n attribute.name,\n layer.getEncodedData(), // 获取经过 mapping 最新的数据\n attribute.featureRange.startIndex,\n attribute.featureRange.endIndex,\n );\n attribute.needRegenerateVertices = false;\n });\n }\n\n private initStyleAttribute(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n attributes\n .filter((attribute) => attribute.needRegenerateVertices)\n .forEach((attribute) => {\n // 精确更新某个/某些 feature(s),需要传入 featureIdx d\n styleAttributeService.updateAttributeByFeatureRange(\n attribute.name,\n layer.getEncodedData(), // 获取经过 mapping 最新的数据\n attribute.featureRange.startIndex,\n attribute.featureRange.endIndex,\n );\n attribute.needRegenerateVertices = false;\n });\n }\n}\n"],"file":"UpdateStyleAttributePlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/UpdateStyleAttributePlugin.ts"],"names":["injectable","UpdateStyleAttributePlugin","layer","styleAttributeService","hooks","init","tap","initStyleAttribute","beforeRender","layerModelNeedUpdate","updateStyleAtrribute","attributes","getLayerStyleAttributes","filter","getLayerStyleAttribute","shape","needRegenerateVertices","forEach","attr","attribute","updateAttributeByFeatureRange","name","getEncodedData","featureRange","startIndex","endIndex"],"mappings":";;;;;AAMA,SAAiBA,UAAjB,QAAmC,WAAnC;AACA,OAAO,kBAAP;IAMqBC,0B,WADpBD,UAAU,E;;;;;;;WAET,eACEE,KADF,QAKE;AAAA;;AAAA,UAFEC,qBAEF,QAFEA,qBAEF;AACAD,MAAAA,KAAK,CAACE,KAAN,CAAYC,IAAZ,CAAiBC,GAAjB,CAAqB,4BAArB,EAAmD,YAAM;AACvD,QAAA,KAAI,CAACC,kBAAL,CAAwBL,KAAxB,EAA+B;AAAEC,UAAAA,qBAAqB,EAArBA;AAAF,SAA/B;AACD,OAFD;AASAD,MAAAA,KAAK,CAACE,KAAN,CAAYI,YAAZ,CAAyBF,GAAzB,CAA6B,4BAA7B,EAA2D,YAAM;AAC/D,YAAIJ,KAAK,CAACO,oBAAV,EAAgC;AAC9B;AACD;;AACD,QAAA,KAAI,CAACC,oBAAL,CAA0BR,KAA1B,EAAiC;AAAEC,UAAAA,qBAAqB,EAArBA;AAAF,SAAjC;AACD,OALD;AAMD;;;WACD,8BACED,KADF,SAKE;AAAA,UAFEC,qBAEF,SAFEA,qBAEF;AACA,UAAMQ,UAAU,GAAGR,qBAAqB,CAACS,uBAAtB,MAAmD,EAAtE;AACA,UAAMC,MAAM,GAAGV,qBAAqB,CAACW,sBAAtB,CAA6C,QAA7C,CAAf;AACA,UAAMC,KAAK,GAAGZ,qBAAqB,CAACW,sBAAtB,CAA6C,OAA7C,CAAd;;AACA,UACGD,MAAM,IAAIA,MAAM,CAACG,sBAAlB,IACCD,KAAK,IAAIA,KAAK,CAACC,sBAFlB,EAGE;AACAd,QAAAA,KAAK,CAACO,oBAAN,GAA6B,IAA7B;AACAE,QAAAA,UAAU,CAACM,OAAX,CAAmB,UAACC,IAAD;AAAA,iBAAWA,IAAI,CAACF,sBAAL,GAA8B,KAAzC;AAAA,SAAnB;AACA;AACD;;AACDL,MAAAA,UAAU,CACPE,MADH,CACU,UAACM,SAAD;AAAA,eAAeA,SAAS,CAACH,sBAAzB;AAAA,OADV,EAEGC,OAFH,CAEW,UAACE,SAAD,EAAe;AAEtBhB,QAAAA,qBAAqB,CAACiB,6BAAtB,CACED,SAAS,CAACE,IADZ,EAEEnB,KAAK,CAACoB,cAAN,EAFF,EAGEH,SAAS,CAACI,YAAV,CAAuBC,UAHzB,EAIEL,SAAS,CAACI,YAAV,CAAuBE,QAJzB;AAMAN,QAAAA,SAAS,CAACH,sBAAV,GAAmC,KAAnC;AACD,OAXH;AAYD;;;WAED,4BACEd,KADF,SAKE;AAAA,UAFEC,qBAEF,SAFEA,qBAEF;AACA,UAAMQ,UAAU,GAAGR,qBAAqB,CAACS,uBAAtB,MAAmD,EAAtE;AACAD,MAAAA,UAAU,CACPE,MADH,CACU,UAACM,SAAD;AAAA,eAAeA,SAAS,CAACH,sBAAzB;AAAA,OADV,EAEGC,OAFH,CAEW,UAACE,SAAD,EAAe;AAEtBhB,QAAAA,qBAAqB,CAACiB,6BAAtB,CACED,SAAS,CAACE,IADZ,EAEEnB,KAAK,CAACoB,cAAN,EAFF,EAGEH,SAAS,CAACI,YAAV,CAAuBC,UAHzB,EAIEL,SAAS,CAACI,YAAV,CAAuBE,QAJzB;AAMAN,QAAAA,SAAS,CAACH,sBAAV,GAAmC,KAAnC;AACD,OAXH;AAYD;;;;;SAzEkBf,0B","sourcesContent":["import {\n ILayer,\n ILayerPlugin,\n IStyleAttributeService,\n TYPES,\n} from '@antv/l7-core';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\n/**\n * 在初始化阶段完成属性的注册,以及首次根据 Layer 指定的三角化方法完成 indices 和 attribute 的创建\n */\n@injectable()\nexport default class UpdateStyleAttributePlugin implements ILayerPlugin {\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('UpdateStyleAttributePlugin', () => {\n this.initStyleAttribute(layer, { styleAttributeService });\n });\n\n // layer.hooks.beforeRenderData.tap('styleAttributeService', () => {\n // // layer.layerModelNeedUpdate = true;\n // return true;\n // });\n\n layer.hooks.beforeRender.tap('UpdateStyleAttributePlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n this.updateStyleAtrribute(layer, { styleAttributeService });\n });\n }\n private updateStyleAtrribute(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const shape = styleAttributeService.getLayerStyleAttribute('shape');\n if (\n (filter && filter.needRegenerateVertices) ||\n (shape && shape.needRegenerateVertices) // TODO:Shape 更新重新build\n ) {\n layer.layerModelNeedUpdate = true;\n attributes.forEach((attr) => (attr.needRegenerateVertices = false));\n return;\n }\n attributes\n .filter((attribute) => attribute.needRegenerateVertices)\n .forEach((attribute) => {\n // 精确更新某个/某些 feature(s),需要传入 featureIdx d\n styleAttributeService.updateAttributeByFeatureRange(\n attribute.name,\n layer.getEncodedData(), // 获取经过 mapping 最新的数据\n attribute.featureRange.startIndex,\n attribute.featureRange.endIndex,\n );\n attribute.needRegenerateVertices = false;\n });\n }\n\n private initStyleAttribute(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n attributes\n .filter((attribute) => attribute.needRegenerateVertices)\n .forEach((attribute) => {\n // 精确更新某个/某些 feature(s),需要传入 featureIdx d\n styleAttributeService.updateAttributeByFeatureRange(\n attribute.name,\n layer.getEncodedData(), // 获取经过 mapping 最新的数据\n attribute.featureRange.startIndex,\n attribute.featureRange.endIndex,\n );\n attribute.needRegenerateVertices = false;\n });\n }\n}\n"],"file":"UpdateStyleAttributePlugin.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/point/models/image.ts"],"names":["AttributeType","gl","BaseModel","PointImageTriangulation","ImageModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","layer","renderLayers","mag","LINEAR","min","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","offsets","getDirty","bind","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_texture","u_textSize","u_opacity","u_offsets","isOffsetStatic","registerBuiltinAttributes","updateTexture","on","buildModels","destroy","off","buildLayerModel","moduleName","vertexShader","pointImageVert","fragmentShader","pointImageFrag","triangulation","primitive","POINTS","depth","enable","blend","getBlend","styleAttributeService","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","Array","isArray","iconMap","getIconMap","shape","x","y"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { isNumber } from 'lodash';\nimport BaseModel, { styleOffset, styleSingle } from '../../core/BaseModel';\nimport { PointImageTriangulation } from '../../core/triangulation';\nimport pointImageFrag from '../shaders/image_frag.glsl';\nimport pointImageVert from '../shaders/image_vert.glsl';\ninterface IImageLayerStyleOptions {\n opacity: styleSingle;\n offsets: styleOffset;\n}\nexport default class ImageModel extends BaseModel {\n private texture: ITexture2D;\n\n public getUninforms(): IModelUniform {\n const {\n opacity,\n offsets = [0, 0],\n } = this.layer.getLayerConfig() as IImageLayerStyleOptions;\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n offsets,\n })\n ) {\n this.judgeStyleAttributes({\n opacity,\n offsets,\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_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_texture: this.texture,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n // u_opacity: opacity || 1.0,\n // u_offsets: [-offsets[0], offsets[1]],\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n\n public initModels(): IModel[] {\n this.registerBuiltinAttributes();\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\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: 'pointImage',\n vertexShader: pointImageVert,\n fragmentShader: pointImageFrag,\n triangulation: PointImageTriangulation,\n primitive: gl.POINTS,\n depth: { enable: false },\n blend: this.getBlend(),\n }),\n ];\n }\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 5 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { shape } = feature;\n const { x, y } = iconMap[shape as string] || { x: 0, y: 0 };\n return [x, y];\n },\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 // TODO: 更新完纹理后在更新的图层的时候需要更新所有的图层\n this.layer.renderLayers();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.LINEAR,\n min: gl.LINEAR,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n });\n };\n}\n"],"file":"image.js"}
1
+ {"version":3,"sources":["../../../src/point/models/image.ts"],"names":["AttributeType","gl","BaseModel","PointImageTriangulation","ImageModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","layer","renderLayers","mag","LINEAR","min","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","offsets","getDirty","bind","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_texture","u_textSize","u_opacity","u_offsets","isOffsetStatic","registerBuiltinAttributes","updateTexture","on","buildModels","destroy","off","buildLayerModel","moduleName","vertexShader","pointImageVert","fragmentShader","pointImageFrag","triangulation","primitive","POINTS","depth","enable","blend","getBlend","styleAttributeService","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","Array","isArray","iconMap","getIconMap","shape","x","y"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n ILayer,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { isNumber } from 'lodash';\nimport BaseModel, { styleOffset, styleSingle } from '../../core/BaseModel';\nimport { PointImageTriangulation } from '../../core/triangulation';\nimport pointImageFrag from '../shaders/image_frag.glsl';\nimport pointImageVert from '../shaders/image_vert.glsl';\ninterface IImageLayerStyleOptions {\n opacity: styleSingle;\n offsets: styleOffset;\n}\nexport default class ImageModel extends BaseModel {\n private texture: ITexture2D;\n\n public getUninforms(): IModelUniform {\n const {\n opacity,\n offsets = [0, 0],\n } = this.layer.getLayerConfig() as IImageLayerStyleOptions;\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n offsets,\n })\n ) {\n this.judgeStyleAttributes({\n opacity,\n offsets,\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_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_texture: this.texture,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n // u_opacity: opacity || 1.0,\n // u_offsets: [-offsets[0], offsets[1]],\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n\n public initModels(): IModel[] {\n this.registerBuiltinAttributes();\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\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: 'pointImage',\n vertexShader: pointImageVert,\n fragmentShader: pointImageFrag,\n triangulation: PointImageTriangulation,\n primitive: gl.POINTS,\n depth: { enable: false },\n blend: this.getBlend(),\n }),\n ];\n }\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 5 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { shape } = feature;\n const { x, y } = iconMap[shape as string] || { x: 0, y: 0 };\n return [x, y];\n },\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 // TODO: 更新完纹理后在更新的图层的时候需要更新所有的图层\n this.layer.renderLayers();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.LINEAR,\n min: gl.LINEAR,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n });\n };\n}\n"],"file":"image.js"}
@@ -365,7 +365,7 @@ var TextModel = function (_BaseModel) {
365
365
  data.forEach(function (item) {
366
366
  var _item$shape2 = item.shape,
367
367
  shape = _item$shape2 === void 0 ? '' : _item$shape2;
368
- shape = shape.toString();
368
+ shape = "".concat(shape);
369
369
 
370
370
  if (characterSet.indexOf(shape) === -1) {
371
371
  characterSet.push(shape);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/point/models/text.ts"],"names":["AttributeType","gl","boundsContains","padBounds","BaseModel","CollisionIndex","calculateCentroid","getGlyphQuads","shapeText","TextTriangulation","feature","that","id","vertices","indices","glyphInfoMap","size","centroid","coord","length","glyphQuads","forEach","quad","index","push","tex","x","y","height","tl","width","tr","br","bl","TextModel","initGlyph","updateTexture","filterGlyphs","reBuildModel","layer","buildLayerModel","moduleName","vertexShader","textVert","fragmentShader","textFrag","triangulation","bind","depth","enable","blend","getBlend","getLayerConfig","opacity","stroke","strokeWidth","textAnchor","textAllowOverlap","halo","gamma","fontService","canvas","mapping","Object","keys","textCount","preTextStyle","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","rowCount","dataTexture","createTexture2D","flipY","format","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_stroke_width","u_stroke_color","getStrokeColor","u_sdf_map","texture","u_halo_blur","u_gamma_scale","u_sdf_map_size","on","buildModels","extent","textExtent","zoom","mapService","getZoom","getBounds","flag","Math","abs","currentZoom","destroy","off","styleAttributeService","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","update","featureIdx","vertex","attributeIdx","rotate","Array","isArray","STATIC_DRAW","bounds","fontWeight","fontFamily","characterSet","item","shape","toString","char","indexOf","setFontOptions","iconfont","spacing","glyphInfo","map","textOffset","shaping","coordinates","originCentroid","version","originCoordinates","padding","rendererService","getViewportSize","collisionIndex","filterData","filter","fontScale","pixels","lngLatToContainer","placeCollisionBox","x1","left","x2","right","y1","top","y2","bottom","anchorPointX","anchorPointY","box","insertCollisionBox","initIconFontTex","initTextFont","generateGlyphLayout","textureHeight","mag","LINEAR","min","models"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n BlendType,\n gl,\n IEncodeFeature,\n ILayer,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { boundsContains, padBounds, rgb2arr } from '@antv/l7-utils';\nimport { isNumber, isString } from 'lodash';\nimport BaseModel, {\n styleColor,\n styleOffset,\n styleSingle,\n} from '../../core/BaseModel';\nimport CollisionIndex from '../../utils/collision-index';\nimport { calculateCentroid } from '../../utils/geo';\nimport {\n anchorType,\n getGlyphQuads,\n IGlyphQuad,\n shapeText,\n} from '../../utils/symbol-layout';\nimport textFrag from '../shaders/text_frag.glsl';\nimport textVert from '../shaders/text_vert.glsl';\ninterface IPointTextLayerStyleOptions {\n opacity: styleSingle;\n strokeWidth: styleSingle;\n stroke: styleColor;\n textOffset: [number, number];\n\n textAnchor: anchorType;\n spacing: number;\n padding: [number, number];\n halo: number;\n gamma: number;\n fontWeight: string;\n fontFamily: string;\n textAllowOverlap: boolean;\n}\nexport function TextTriangulation(feature: IEncodeFeature) {\n // @ts-ignore\n const that = this as TextModel;\n const id = feature.id as number;\n const vertices: number[] = [];\n const indices: number[] = [];\n\n if (!that.glyphInfoMap || !that.glyphInfoMap[id]) {\n return {\n vertices: [], // [ x, y, z, tex.x,tex.y, offset.x. offset.y]\n indices: [],\n size: 7,\n };\n }\n const centroid = that.glyphInfoMap[id].centroid as number[]; // 计算中心点\n const coord =\n centroid.length === 2 ? [centroid[0], centroid[1], 0] : centroid;\n that.glyphInfoMap[id].glyphQuads.forEach(\n (quad: IGlyphQuad, index: number) => {\n vertices.push(\n ...coord,\n quad.tex.x,\n quad.tex.y + quad.tex.height,\n quad.tl.x,\n quad.tl.y,\n ...coord,\n quad.tex.x + quad.tex.width,\n quad.tex.y + quad.tex.height,\n quad.tr.x,\n quad.tr.y,\n ...coord,\n quad.tex.x + quad.tex.width,\n quad.tex.y,\n quad.br.x,\n quad.br.y,\n ...coord,\n quad.tex.x,\n quad.tex.y,\n quad.bl.x,\n quad.bl.y,\n );\n indices.push(\n 0 + index * 4,\n 1 + index * 4,\n 2 + index * 4,\n 2 + index * 4,\n 3 + index * 4,\n 0 + index * 4,\n );\n },\n );\n return {\n vertices, // [ x, y, z, tex.x,tex.y, offset.x. offset.y]\n indices,\n size: 7,\n };\n}\n\nexport default class TextModel extends BaseModel {\n public glyphInfo: IEncodeFeature[];\n public glyphInfoMap: {\n [key: string]: {\n shaping: any;\n glyphQuads: IGlyphQuad[];\n centroid: number[];\n };\n } = {};\n private texture: ITexture2D;\n private currentZoom: number = -1;\n private extent: [[number, number], [number, number]];\n private textureHeight: number = 0;\n private textCount: number = 0;\n private preTextStyle: Partial<IPointTextLayerStyleOptions> = {};\n public getUninforms(): IModelUniform {\n const {\n opacity = 1.0,\n stroke = '#fff',\n strokeWidth = 0,\n textAnchor = 'center',\n textAllowOverlap = false,\n halo = 0.5,\n gamma = 2.0,\n } = this.layer.getLayerConfig() as IPointTextLayerStyleOptions;\n const { canvas, mapping } = this.fontService;\n if (Object.keys(mapping).length !== this.textCount) {\n this.updateTexture();\n this.textCount = Object.keys(mapping).length;\n }\n this.preTextStyle = {\n textAnchor,\n textAllowOverlap,\n };\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeWidth,\n stroke,\n })\n ) {\n this.judgeStyleAttributes({\n opacity,\n strokeWidth,\n stroke,\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\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_stroke_width: isNumber(strokeWidth) ? strokeWidth : 0.0,\n u_stroke_color: this.getStrokeColor(stroke),\n\n u_sdf_map: this.texture,\n u_halo_blur: halo,\n u_gamma_scale: gamma,\n u_sdf_map_size: [canvas.width, canvas.height],\n };\n }\n\n public initModels(): IModel[] {\n this.layer.on('remapping', this.buildModels);\n this.extent = this.textExtent();\n const {\n textAnchor = 'center',\n textAllowOverlap = true,\n } = this.layer.getLayerConfig() as IPointTextLayerStyleOptions;\n this.preTextStyle = {\n textAnchor,\n textAllowOverlap,\n };\n return this.buildModels();\n }\n\n public buildModels = () => {\n this.initGlyph();\n this.updateTexture();\n this.filterGlyphs();\n this.reBuildModel();\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointText',\n vertexShader: textVert,\n fragmentShader: textFrag,\n triangulation: TextTriangulation.bind(this),\n depth: { enable: false },\n blend: this.getBlend(),\n }),\n ];\n };\n public needUpdate() {\n const {\n textAllowOverlap = false,\n } = this.layer.getLayerConfig() as IPointTextLayerStyleOptions;\n // textAllowOverlap 发生改变\n const zoom = this.mapService.getZoom();\n const extent = this.mapService.getBounds();\n const flag = boundsContains(this.extent, extent);\n // 文本不能压盖则进行过滤\n if (\n (!textAllowOverlap && (Math.abs(this.currentZoom - zoom) > 1 || !flag)) ||\n textAllowOverlap !== this.preTextStyle.textAllowOverlap\n ) {\n this.reBuildModel();\n return true;\n }\n return false;\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n this.layer.off('remapping', this.buildModels);\n }\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'rotate',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Rotate',\n buffer: {\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 { rotate = 0 } = feature;\n return Array.isArray(rotate) ? [rotate[0]] : [rotate as number];\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'textOffsets',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_textOffsets',\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: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n // console.log([vertex[5], vertex[6]])\n return [vertex[5], vertex[6]];\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 = 12 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'textUv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_tex',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n private textExtent(): [[number, number], [number, number]] {\n const bounds = this.mapService.getBounds();\n return padBounds(bounds, 0.5);\n }\n /**\n * 生成文字纹理(生成文字纹理字典)\n */\n private initTextFont() {\n const {\n fontWeight = '400',\n fontFamily = 'sans-serif',\n } = this.layer.getLayerConfig() as IPointTextLayerStyleOptions;\n const data = this.layer.getEncodedData();\n const characterSet: string[] = [];\n data.forEach((item: IEncodeFeature) => {\n let { shape = '' } = item;\n shape = shape.toString();\n for (const char of shape) {\n // 去重\n if (characterSet.indexOf(char) === -1) {\n characterSet.push(char);\n }\n }\n });\n this.fontService.setFontOptions({\n characterSet,\n fontWeight,\n fontFamily,\n iconfont: false,\n });\n }\n\n /**\n * 生成 iconfont 纹理字典\n */\n private initIconFontTex() {\n const {\n fontWeight = '400',\n fontFamily = 'sans-serif',\n } = this.layer.getLayerConfig() as IPointTextLayerStyleOptions;\n const data = this.layer.getEncodedData();\n const characterSet: string[] = [];\n data.forEach((item: IEncodeFeature) => {\n let { shape = '' } = item;\n shape = shape.toString();\n if (characterSet.indexOf(shape) === -1) {\n characterSet.push(shape);\n }\n });\n this.fontService.setFontOptions({\n characterSet,\n fontWeight,\n fontFamily,\n iconfont: true,\n });\n }\n\n /**\n * 生成文字布局(对照文字纹理字典提取对应文字的位置很好信息)\n */\n private generateGlyphLayout(iconfont: boolean) {\n // TODO:更新文字布局\n const { mapping } = this.fontService;\n const {\n spacing = 2,\n textAnchor = 'center',\n // textOffset,\n } = this.layer.getLayerConfig() as IPointTextLayerStyleOptions;\n const data = this.layer.getEncodedData();\n\n this.glyphInfo = data.map((feature: IEncodeFeature) => {\n const { shape = '', id, size = 1, textOffset = [0, 0] } = feature;\n\n const shaping = shapeText(\n shape.toString(),\n mapping,\n // @ts-ignore\n size,\n textAnchor,\n 'center',\n spacing,\n textOffset,\n iconfont,\n );\n const glyphQuads = getGlyphQuads(shaping, textOffset, false);\n feature.shaping = shaping;\n feature.glyphQuads = glyphQuads;\n // feature.centroid = calculteCentroid(coordinates);\n\n feature.centroid = calculateCentroid(feature.coordinates);\n\n // 此时地图高德2.0 originCentroid == centroid\n feature.originCentroid =\n feature.version === 'GAODE2.x'\n ? calculateCentroid(feature.originCoordinates)\n : (feature.originCentroid = feature.centroid);\n\n this.glyphInfoMap[id as number] = {\n shaping,\n glyphQuads,\n centroid: calculateCentroid(feature.coordinates),\n };\n return feature;\n });\n }\n /**\n * 文字避让 depend on originCentorid\n */\n private filterGlyphs() {\n const {\n padding = [4, 4],\n textAllowOverlap = false,\n } = this.layer.getLayerConfig() as IPointTextLayerStyleOptions;\n if (textAllowOverlap) {\n // 如果允许文本覆盖\n // this.layer.setEncodedData(this.glyphInfo);\n return;\n }\n this.glyphInfoMap = {};\n this.currentZoom = this.mapService.getZoom();\n this.extent = this.textExtent();\n const { width, height } = this.rendererService.getViewportSize();\n const collisionIndex = new CollisionIndex(width, height);\n const filterData = this.glyphInfo.filter((feature: IEncodeFeature) => {\n const { shaping, id = 0 } = feature;\n // const centroid = feature.centroid as [number, number];\n // const centroid = feature.originCentroid as [number, number];\n const centroid = (feature.version === 'GAODE2.x'\n ? feature.originCentroid\n : feature.centroid) as [number, number];\n const size = feature.size as number;\n const fontScale: number = size / 24;\n const pixels = this.mapService.lngLatToContainer(centroid);\n const { box } = collisionIndex.placeCollisionBox({\n x1: shaping.left * fontScale - padding[0],\n x2: shaping.right * fontScale + padding[0],\n y1: shaping.top * fontScale - padding[1],\n y2: shaping.bottom * fontScale + padding[1],\n anchorPointX: pixels.x,\n anchorPointY: pixels.y,\n });\n if (box && box.length) {\n // TODO:featureIndex\n collisionIndex.insertCollisionBox(box, id);\n return true;\n } else {\n return false;\n }\n });\n filterData.forEach((item) => {\n // @ts-ignore\n this.glyphInfoMap[item.id as number] = item;\n });\n // this.layer.setEncodedData(filterData);\n }\n /**\n * 初始化文字布局\n */\n private initGlyph() {\n const { iconfont = false } = this.layer.getLayerConfig();\n // 1.生成文字纹理(或是生成 iconfont)\n iconfont ? this.initIconFontTex() : this.initTextFont();\n // this.initTextFont();\n\n // 2.生成文字布局\n this.generateGlyphLayout(iconfont);\n }\n /**\n * 更新文字纹理\n */\n private updateTexture() {\n const { createTexture2D } = this.rendererService;\n const { canvas } = this.fontService;\n this.textureHeight = canvas.height;\n if (this.texture) {\n this.texture.destroy();\n }\n\n this.texture = createTexture2D({\n data: canvas,\n mag: gl.LINEAR,\n min: gl.LINEAR,\n width: canvas.width,\n height: canvas.height,\n });\n }\n\n private reBuildModel() {\n this.filterGlyphs();\n this.layer.models = [\n this.layer.buildLayerModel({\n moduleName: 'pointText',\n vertexShader: textVert,\n fragmentShader: textFrag,\n triangulation: TextTriangulation.bind(this),\n depth: { enable: false },\n blend: this.getBlend(),\n }),\n ];\n }\n}\n"],"file":"text.js"}
1
+ {"version":3,"sources":["../../../src/point/models/text.ts"],"names":["AttributeType","gl","boundsContains","padBounds","BaseModel","CollisionIndex","calculateCentroid","getGlyphQuads","shapeText","TextTriangulation","feature","that","id","vertices","indices","glyphInfoMap","size","centroid","coord","length","glyphQuads","forEach","quad","index","push","tex","x","y","height","tl","width","tr","br","bl","TextModel","initGlyph","updateTexture","filterGlyphs","reBuildModel","layer","buildLayerModel","moduleName","vertexShader","textVert","fragmentShader","textFrag","triangulation","bind","depth","enable","blend","getBlend","getLayerConfig","opacity","stroke","strokeWidth","textAnchor","textAllowOverlap","halo","gamma","fontService","canvas","mapping","Object","keys","textCount","preTextStyle","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","rowCount","dataTexture","createTexture2D","flipY","format","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_stroke_width","u_stroke_color","getStrokeColor","u_sdf_map","texture","u_halo_blur","u_gamma_scale","u_sdf_map_size","on","buildModels","extent","textExtent","zoom","mapService","getZoom","getBounds","flag","Math","abs","currentZoom","destroy","off","styleAttributeService","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","update","featureIdx","vertex","attributeIdx","rotate","Array","isArray","STATIC_DRAW","bounds","fontWeight","fontFamily","characterSet","item","shape","toString","char","indexOf","setFontOptions","iconfont","spacing","glyphInfo","map","textOffset","shaping","coordinates","originCentroid","version","originCoordinates","padding","rendererService","getViewportSize","collisionIndex","filterData","filter","fontScale","pixels","lngLatToContainer","placeCollisionBox","x1","left","x2","right","y1","top","y2","bottom","anchorPointX","anchorPointY","box","insertCollisionBox","initIconFontTex","initTextFont","generateGlyphLayout","textureHeight","mag","LINEAR","min","models"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n BlendType,\n gl,\n IEncodeFeature,\n ILayer,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { boundsContains, padBounds, rgb2arr } from '@antv/l7-utils';\nimport { isNumber, isString } from 'lodash';\nimport BaseModel, {\n styleColor,\n styleOffset,\n styleSingle,\n} from '../../core/BaseModel';\nimport CollisionIndex from '../../utils/collision-index';\nimport { calculateCentroid } from '../../utils/geo';\nimport {\n anchorType,\n getGlyphQuads,\n IGlyphQuad,\n shapeText,\n} from '../../utils/symbol-layout';\nimport textFrag from '../shaders/text_frag.glsl';\nimport textVert from '../shaders/text_vert.glsl';\ninterface IPointTextLayerStyleOptions {\n opacity: styleSingle;\n strokeWidth: styleSingle;\n stroke: styleColor;\n textOffset: [number, number];\n\n textAnchor: anchorType;\n spacing: number;\n padding: [number, number];\n halo: number;\n gamma: number;\n fontWeight: string;\n fontFamily: string;\n textAllowOverlap: boolean;\n}\nexport function TextTriangulation(feature: IEncodeFeature) {\n // @ts-ignore\n const that = this as TextModel;\n const id = feature.id as number;\n const vertices: number[] = [];\n const indices: number[] = [];\n\n if (!that.glyphInfoMap || !that.glyphInfoMap[id]) {\n return {\n vertices: [], // [ x, y, z, tex.x,tex.y, offset.x. offset.y]\n indices: [],\n size: 7,\n };\n }\n const centroid = that.glyphInfoMap[id].centroid as number[]; // 计算中心点\n const coord =\n centroid.length === 2 ? [centroid[0], centroid[1], 0] : centroid;\n that.glyphInfoMap[id].glyphQuads.forEach(\n (quad: IGlyphQuad, index: number) => {\n vertices.push(\n ...coord,\n quad.tex.x,\n quad.tex.y + quad.tex.height,\n quad.tl.x,\n quad.tl.y,\n ...coord,\n quad.tex.x + quad.tex.width,\n quad.tex.y + quad.tex.height,\n quad.tr.x,\n quad.tr.y,\n ...coord,\n quad.tex.x + quad.tex.width,\n quad.tex.y,\n quad.br.x,\n quad.br.y,\n ...coord,\n quad.tex.x,\n quad.tex.y,\n quad.bl.x,\n quad.bl.y,\n );\n indices.push(\n 0 + index * 4,\n 1 + index * 4,\n 2 + index * 4,\n 2 + index * 4,\n 3 + index * 4,\n 0 + index * 4,\n );\n },\n );\n return {\n vertices, // [ x, y, z, tex.x,tex.y, offset.x. offset.y]\n indices,\n size: 7,\n };\n}\n\nexport default class TextModel extends BaseModel {\n public glyphInfo: IEncodeFeature[];\n public glyphInfoMap: {\n [key: string]: {\n shaping: any;\n glyphQuads: IGlyphQuad[];\n centroid: number[];\n };\n } = {};\n private texture: ITexture2D;\n private currentZoom: number = -1;\n private extent: [[number, number], [number, number]];\n private textureHeight: number = 0;\n private textCount: number = 0;\n private preTextStyle: Partial<IPointTextLayerStyleOptions> = {};\n public getUninforms(): IModelUniform {\n const {\n opacity = 1.0,\n stroke = '#fff',\n strokeWidth = 0,\n textAnchor = 'center',\n textAllowOverlap = false,\n halo = 0.5,\n gamma = 2.0,\n } = this.layer.getLayerConfig() as IPointTextLayerStyleOptions;\n const { canvas, mapping } = this.fontService;\n if (Object.keys(mapping).length !== this.textCount) {\n this.updateTexture();\n this.textCount = Object.keys(mapping).length;\n }\n this.preTextStyle = {\n textAnchor,\n textAllowOverlap,\n };\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeWidth,\n stroke,\n })\n ) {\n this.judgeStyleAttributes({\n opacity,\n strokeWidth,\n stroke,\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\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_stroke_width: isNumber(strokeWidth) ? strokeWidth : 0.0,\n u_stroke_color: this.getStrokeColor(stroke),\n\n u_sdf_map: this.texture,\n u_halo_blur: halo,\n u_gamma_scale: gamma,\n u_sdf_map_size: [canvas.width, canvas.height],\n };\n }\n\n public initModels(): IModel[] {\n this.layer.on('remapping', this.buildModels);\n this.extent = this.textExtent();\n const {\n textAnchor = 'center',\n textAllowOverlap = true,\n } = this.layer.getLayerConfig() as IPointTextLayerStyleOptions;\n this.preTextStyle = {\n textAnchor,\n textAllowOverlap,\n };\n return this.buildModels();\n }\n\n public buildModels = () => {\n this.initGlyph();\n this.updateTexture();\n this.filterGlyphs();\n this.reBuildModel();\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointText',\n vertexShader: textVert,\n fragmentShader: textFrag,\n triangulation: TextTriangulation.bind(this),\n depth: { enable: false },\n blend: this.getBlend(),\n }),\n ];\n };\n public needUpdate() {\n const {\n textAllowOverlap = false,\n } = this.layer.getLayerConfig() as IPointTextLayerStyleOptions;\n // textAllowOverlap 发生改变\n const zoom = this.mapService.getZoom();\n const extent = this.mapService.getBounds();\n const flag = boundsContains(this.extent, extent);\n // 文本不能压盖则进行过滤\n if (\n (!textAllowOverlap && (Math.abs(this.currentZoom - zoom) > 1 || !flag)) ||\n textAllowOverlap !== this.preTextStyle.textAllowOverlap\n ) {\n this.reBuildModel();\n return true;\n }\n return false;\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n this.layer.off('remapping', this.buildModels);\n }\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'rotate',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Rotate',\n buffer: {\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 { rotate = 0 } = feature;\n return Array.isArray(rotate) ? [rotate[0]] : [rotate as number];\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'textOffsets',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_textOffsets',\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: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n // console.log([vertex[5], vertex[6]])\n return [vertex[5], vertex[6]];\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 = 12 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'textUv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_tex',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n private textExtent(): [[number, number], [number, number]] {\n const bounds = this.mapService.getBounds();\n return padBounds(bounds, 0.5);\n }\n /**\n * 生成文字纹理(生成文字纹理字典)\n */\n private initTextFont() {\n const {\n fontWeight = '400',\n fontFamily = 'sans-serif',\n } = this.layer.getLayerConfig() as IPointTextLayerStyleOptions;\n const data = this.layer.getEncodedData();\n const characterSet: string[] = [];\n data.forEach((item: IEncodeFeature) => {\n let { shape = '' } = item;\n shape = shape.toString();\n for (const char of shape) {\n // 去重\n if (characterSet.indexOf(char) === -1) {\n characterSet.push(char);\n }\n }\n });\n this.fontService.setFontOptions({\n characterSet,\n fontWeight,\n fontFamily,\n iconfont: false,\n });\n }\n\n /**\n * 生成 iconfont 纹理字典\n */\n private initIconFontTex() {\n const {\n fontWeight = '400',\n fontFamily = 'sans-serif',\n } = this.layer.getLayerConfig() as IPointTextLayerStyleOptions;\n const data = this.layer.getEncodedData();\n const characterSet: string[] = [];\n data.forEach((item: IEncodeFeature) => {\n let { shape = '' } = item;\n shape = `${shape}`;\n if (characterSet.indexOf(shape) === -1) {\n characterSet.push(shape);\n }\n });\n this.fontService.setFontOptions({\n characterSet,\n fontWeight,\n fontFamily,\n iconfont: true,\n });\n }\n\n /**\n * 生成文字布局(对照文字纹理字典提取对应文字的位置很好信息)\n */\n private generateGlyphLayout(iconfont: boolean) {\n // TODO:更新文字布局\n const { mapping } = this.fontService;\n const {\n spacing = 2,\n textAnchor = 'center',\n // textOffset,\n } = this.layer.getLayerConfig() as IPointTextLayerStyleOptions;\n const data = this.layer.getEncodedData();\n\n this.glyphInfo = data.map((feature: IEncodeFeature) => {\n const { shape = '', id, size = 1, textOffset = [0, 0] } = feature;\n\n const shaping = shapeText(\n shape.toString(),\n mapping,\n // @ts-ignore\n size,\n textAnchor,\n 'center',\n spacing,\n textOffset,\n iconfont,\n );\n const glyphQuads = getGlyphQuads(shaping, textOffset, false);\n feature.shaping = shaping;\n feature.glyphQuads = glyphQuads;\n // feature.centroid = calculteCentroid(coordinates);\n\n feature.centroid = calculateCentroid(feature.coordinates);\n\n // 此时地图高德2.0 originCentroid == centroid\n feature.originCentroid =\n feature.version === 'GAODE2.x'\n ? calculateCentroid(feature.originCoordinates)\n : (feature.originCentroid = feature.centroid);\n\n this.glyphInfoMap[id as number] = {\n shaping,\n glyphQuads,\n centroid: calculateCentroid(feature.coordinates),\n };\n return feature;\n });\n }\n /**\n * 文字避让 depend on originCentorid\n */\n private filterGlyphs() {\n const {\n padding = [4, 4],\n textAllowOverlap = false,\n } = this.layer.getLayerConfig() as IPointTextLayerStyleOptions;\n if (textAllowOverlap) {\n // 如果允许文本覆盖\n // this.layer.setEncodedData(this.glyphInfo);\n return;\n }\n this.glyphInfoMap = {};\n this.currentZoom = this.mapService.getZoom();\n this.extent = this.textExtent();\n const { width, height } = this.rendererService.getViewportSize();\n const collisionIndex = new CollisionIndex(width, height);\n const filterData = this.glyphInfo.filter((feature: IEncodeFeature) => {\n const { shaping, id = 0 } = feature;\n // const centroid = feature.centroid as [number, number];\n // const centroid = feature.originCentroid as [number, number];\n const centroid = (feature.version === 'GAODE2.x'\n ? feature.originCentroid\n : feature.centroid) as [number, number];\n const size = feature.size as number;\n const fontScale: number = size / 24;\n const pixels = this.mapService.lngLatToContainer(centroid);\n const { box } = collisionIndex.placeCollisionBox({\n x1: shaping.left * fontScale - padding[0],\n x2: shaping.right * fontScale + padding[0],\n y1: shaping.top * fontScale - padding[1],\n y2: shaping.bottom * fontScale + padding[1],\n anchorPointX: pixels.x,\n anchorPointY: pixels.y,\n });\n if (box && box.length) {\n // TODO:featureIndex\n collisionIndex.insertCollisionBox(box, id);\n return true;\n } else {\n return false;\n }\n });\n filterData.forEach((item) => {\n // @ts-ignore\n this.glyphInfoMap[item.id as number] = item;\n });\n // this.layer.setEncodedData(filterData);\n }\n /**\n * 初始化文字布局\n */\n private initGlyph() {\n const { iconfont = false } = this.layer.getLayerConfig();\n // 1.生成文字纹理(或是生成 iconfont)\n iconfont ? this.initIconFontTex() : this.initTextFont();\n // this.initTextFont();\n\n // 2.生成文字布局\n this.generateGlyphLayout(iconfont);\n }\n /**\n * 更新文字纹理\n */\n private updateTexture() {\n const { createTexture2D } = this.rendererService;\n const { canvas } = this.fontService;\n this.textureHeight = canvas.height;\n if (this.texture) {\n this.texture.destroy();\n }\n\n this.texture = createTexture2D({\n data: canvas,\n mag: gl.LINEAR,\n min: gl.LINEAR,\n width: canvas.width,\n height: canvas.height,\n });\n }\n\n private reBuildModel() {\n this.filterGlyphs();\n this.layer.models = [\n this.layer.buildLayerModel({\n moduleName: 'pointText',\n vertexShader: textVert,\n fragmentShader: textFrag,\n triangulation: TextTriangulation.bind(this),\n depth: { enable: false },\n blend: this.getBlend(),\n }),\n ];\n }\n}\n"],"file":"text.js"}
@@ -7,7 +7,7 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstruct
7
7
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
8
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
9
 
10
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
10
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
11
11
 
12
12
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
13
13
 
@@ -47,6 +47,9 @@ var _blend = require("../utils/blend");
47
47
 
48
48
  var _dataMappingStyle = require("../utils/dataMappingStyle");
49
49
 
50
+ var _excluded = ["passes"],
51
+ _excluded2 = ["moduleName", "vertexShader", "fragmentShader", "triangulation", "segmentNumber"];
52
+
50
53
  var _dec, _dec2, _class, _descriptor, _descriptor2;
51
54
 
52
55
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
@@ -55,7 +58,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
55
58
 
56
59
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
57
60
 
58
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
61
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
59
62
 
60
63
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
61
64
 
@@ -385,7 +388,7 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
385
388
  var _this4 = this;
386
389
 
387
390
  var passes = options.passes,
388
- rest = (0, _objectWithoutProperties2.default)(options, ["passes"]);
391
+ rest = (0, _objectWithoutProperties2.default)(options, _excluded);
389
392
 
390
393
  if (passes) {
391
394
  (0, _MultiPassRendererPlugin.normalizePasses)(passes).forEach(function (pass) {
@@ -777,7 +780,7 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
777
780
  fragmentShader = options.fragmentShader,
778
781
  triangulation = options.triangulation,
779
782
  segmentNumber = options.segmentNumber,
780
- rest = (0, _objectWithoutProperties2.default)(options, ["moduleName", "vertexShader", "fragmentShader", "triangulation", "segmentNumber"]);
783
+ rest = (0, _objectWithoutProperties2.default)(options, _excluded2);
781
784
  this.shaderModuleService.registerModule(moduleName, {
782
785
  vs: vertexShader,
783
786
  fs: fragmentShader