@antv/l7-layers 2.16.0 → 2.16.1
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.
- package/es/Geometry/index.js +31 -9
- package/es/Geometry/models/billboard.js +89 -51
- package/es/Geometry/models/plane.js +143 -81
- package/es/Geometry/models/sprite.js +118 -60
- package/es/canvas/index.js +33 -10
- package/es/canvas/models/canvas.js +97 -41
- package/es/citybuliding/building.js +27 -8
- package/es/citybuliding/models/build.js +82 -57
- package/es/core/BaseLayer.js +485 -321
- package/es/core/BaseModel.js +126 -97
- package/es/core/LayerPickService.js +32 -21
- package/es/core/TextureService.js +13 -0
- package/es/core/interface.js +24 -17
- package/es/core/shape/Path.js +20 -13
- package/es/core/shape/extrude.js +31 -10
- package/es/core/triangulation.js +114 -54
- package/es/earth/index.js +33 -9
- package/es/earth/models/atmosphere.js +54 -30
- package/es/earth/models/base.js +85 -47
- package/es/earth/models/bloomsphere.js +54 -30
- package/es/earth/utils.js +13 -9
- package/es/heatmap/index.js +40 -10
- package/es/heatmap/models/grid.js +52 -28
- package/es/heatmap/models/grid3d.js +52 -28
- package/es/heatmap/models/heatmap.js +146 -91
- package/es/heatmap/models/hexagon.js +52 -28
- package/es/heatmap/triangulation.js +4 -0
- package/es/image/index.js +28 -9
- package/es/image/models/image.js +100 -66
- package/es/index.js +17 -9
- package/es/line/index.js +34 -9
- package/es/line/models/arc.js +118 -66
- package/es/line/models/arc_3d.js +108 -60
- package/es/line/models/earthArc_3d.js +111 -63
- package/es/line/models/great_circle.js +100 -56
- package/es/line/models/half.js +77 -46
- package/es/line/models/line.js +148 -94
- package/es/line/models/linearline.js +80 -45
- package/es/line/models/simpleLine.js +74 -41
- package/es/line/models/wall.js +92 -52
- package/es/mask/index.js +28 -9
- package/es/mask/models/fill.js +54 -29
- package/es/plugins/DataMappingPlugin.js +117 -80
- package/es/plugins/DataSourcePlugin.js +68 -45
- package/es/plugins/FeatureScalePlugin.js +122 -67
- package/es/plugins/LayerAnimateStylePlugin.js +5 -0
- package/es/plugins/LayerMaskPlugin.js +11 -3
- package/es/plugins/LayerModelPlugin.js +104 -67
- package/es/plugins/LayerStylePlugin.js +9 -3
- package/es/plugins/LightingPlugin.js +18 -12
- package/es/plugins/MultiPassRendererPlugin.js +16 -11
- package/es/plugins/PixelPickingPlugin.js +21 -12
- package/es/plugins/RegisterStyleAttributePlugin.js +12 -5
- package/es/plugins/ShaderUniformPlugin.js +27 -13
- package/es/plugins/UpdateModelPlugin.js +5 -0
- package/es/plugins/UpdateStyleAttributePlugin.js +11 -5
- package/es/point/index.js +77 -26
- package/es/point/models/earthExtrude.js +102 -61
- package/es/point/models/earthFill.js +87 -57
- package/es/point/models/extrude.js +101 -60
- package/es/point/models/fill.js +100 -70
- package/es/point/models/fillmage.js +107 -63
- package/es/point/models/image.js +88 -48
- package/es/point/models/index.js +2 -2
- package/es/point/models/normal.js +54 -30
- package/es/point/models/radar.js +64 -40
- package/es/point/models/simplePoint.js +69 -41
- package/es/point/models/text.js +301 -198
- package/es/point/shape/extrude.js +13 -4
- package/es/polygon/index.js +40 -11
- package/es/polygon/models/extrude.js +92 -48
- package/es/polygon/models/fill.js +88 -54
- package/es/polygon/models/index.js +2 -3
- package/es/polygon/models/ocean.js +76 -42
- package/es/polygon/models/water.js +71 -37
- package/es/raster/buffers/triangulation.js +4 -2
- package/es/raster/index.js +32 -9
- package/es/raster/models/raster.js +116 -80
- package/es/raster/models/rasterRgb.js +127 -84
- package/es/raster/models/rasterTerrainRgb.js +84 -56
- package/es/tile/interaction/getRasterData.js +20 -14
- package/es/tile/interaction/utils.js +9 -7
- package/es/tile/manager/base.js +96 -63
- package/es/tile/service/TileLayerService.js +55 -33
- package/es/tile/service/TilePickService.js +40 -26
- package/es/tile/service/TileSourceService.js +7 -3
- package/es/tile/tileFactory/DebugTile.js +46 -29
- package/es/tile/tileFactory/ImageTile.js +38 -20
- package/es/tile/tileFactory/MaskTile.js +43 -22
- package/es/tile/tileFactory/RasterRGBTile.js +42 -22
- package/es/tile/tileFactory/RasterTerrainRGBTile.js +38 -20
- package/es/tile/tileFactory/RasterTile.js +53 -30
- package/es/tile/tileFactory/Tile.js +97 -63
- package/es/tile/tileFactory/VectorTile.js +68 -41
- package/es/tile/tileFactory/index.js +11 -0
- package/es/tile/tileFactory/layers/TileDebugLayer.js +27 -6
- package/es/tile/tileFactory/util.js +3 -0
- package/es/tile/tileLayer/BaseLayer.js +146 -105
- package/es/tile/utils.js +1 -1
- package/es/utils/blend.js +2 -0
- package/es/utils/collision-index.js +16 -9
- package/es/utils/dataMappingStyle.js +18 -8
- package/es/utils/extrude_polyline.js +149 -101
- package/es/utils/grid-index.js +27 -2
- package/es/utils/identityScale.js +8 -0
- package/es/utils/layerData.js +44 -30
- package/es/utils/multiPassRender.js +13 -11
- package/es/utils/polylineNormal.js +37 -31
- package/es/utils/simpleLine.js +16 -2
- package/es/utils/stencil.js +3 -2
- package/es/utils/symbol-layout.js +53 -27
- package/es/wind/index.js +29 -9
- package/es/wind/models/utils.js +51 -26
- package/es/wind/models/wind.js +147 -101
- package/es/wind/models/windRender.js +66 -53
- package/lib/Geometry/index.js +38 -9
- package/lib/Geometry/models/billboard.js +97 -51
- package/lib/Geometry/models/index.js +5 -0
- package/lib/Geometry/models/plane.js +151 -79
- package/lib/Geometry/models/sprite.js +127 -60
- package/lib/canvas/index.js +40 -10
- package/lib/canvas/models/canvas.js +101 -41
- package/lib/canvas/models/index.js +3 -0
- package/lib/citybuliding/building.js +35 -8
- package/lib/citybuliding/models/build.js +92 -57
- package/lib/core/BaseLayer.js +479 -321
- package/lib/core/BaseModel.js +139 -97
- package/lib/core/LayerPickService.js +37 -21
- package/lib/core/TextureService.js +16 -0
- package/lib/core/interface.js +31 -21
- package/lib/core/schema.js +1 -0
- package/lib/core/shape/Path.js +31 -14
- package/lib/core/shape/extrude.js +54 -10
- package/lib/core/triangulation.js +153 -53
- package/lib/earth/index.js +43 -9
- package/lib/earth/models/atmosphere.js +63 -30
- package/lib/earth/models/base.js +90 -47
- package/lib/earth/models/bloomsphere.js +63 -30
- package/lib/earth/utils.js +31 -7
- package/lib/heatmap/index.js +48 -10
- package/lib/heatmap/models/grid.js +60 -28
- package/lib/heatmap/models/grid3d.js +60 -28
- package/lib/heatmap/models/heatmap.js +162 -91
- package/lib/heatmap/models/hexagon.js +60 -28
- package/lib/heatmap/models/index.js +6 -0
- package/lib/heatmap/triangulation.js +5 -0
- package/lib/image/index.js +36 -9
- package/lib/image/models/image.js +109 -66
- package/lib/image/models/index.js +3 -0
- package/lib/index.js +61 -7
- package/lib/line/index.js +40 -9
- package/lib/line/models/arc.js +128 -64
- package/lib/line/models/arc_3d.js +119 -58
- package/lib/line/models/earthArc_3d.js +122 -61
- package/lib/line/models/great_circle.js +111 -56
- package/lib/line/models/half.js +87 -46
- package/lib/line/models/index.js +11 -0
- package/lib/line/models/line.js +156 -92
- package/lib/line/models/linearline.js +92 -45
- package/lib/line/models/simpleLine.js +84 -41
- package/lib/line/models/wall.js +103 -52
- package/lib/mask/index.js +36 -9
- package/lib/mask/models/fill.js +63 -29
- package/lib/mask/models/index.js +3 -0
- package/lib/plugins/DataMappingPlugin.js +128 -80
- package/lib/plugins/DataSourcePlugin.js +76 -45
- package/lib/plugins/FeatureScalePlugin.js +138 -67
- package/lib/plugins/LayerAnimateStylePlugin.js +10 -0
- package/lib/plugins/LayerMaskPlugin.js +17 -4
- package/lib/plugins/LayerModelPlugin.js +113 -68
- package/lib/plugins/LayerStylePlugin.js +14 -4
- package/lib/plugins/LightingPlugin.js +25 -12
- package/lib/plugins/MultiPassRendererPlugin.js +22 -11
- package/lib/plugins/PixelPickingPlugin.js +27 -12
- package/lib/plugins/RegisterStyleAttributePlugin.js +19 -5
- package/lib/plugins/ShaderUniformPlugin.js +34 -13
- package/lib/plugins/UpdateModelPlugin.js +10 -1
- package/lib/plugins/UpdateStyleAttributePlugin.js +16 -5
- package/lib/point/index.js +83 -26
- package/lib/point/models/earthExtrude.js +113 -61
- package/lib/point/models/earthFill.js +117 -57
- package/lib/point/models/extrude.js +111 -60
- package/lib/point/models/fill.js +109 -68
- package/lib/point/models/fillmage.js +115 -61
- package/lib/point/models/image.js +98 -48
- package/lib/point/models/index.js +12 -1
- package/lib/point/models/normal.js +64 -30
- package/lib/point/models/radar.js +74 -40
- package/lib/point/models/simplePoint.js +79 -41
- package/lib/point/models/text.js +309 -198
- package/lib/point/shape/extrude.js +20 -4
- package/lib/polygon/index.js +48 -11
- package/lib/polygon/models/extrude.js +103 -48
- package/lib/polygon/models/fill.js +98 -54
- package/lib/polygon/models/index.js +14 -2
- package/lib/polygon/models/ocean.js +88 -42
- package/lib/polygon/models/water.js +82 -37
- package/lib/raster/buffers/triangulation.js +7 -3
- package/lib/raster/index.js +40 -9
- package/lib/raster/models/index.js +5 -0
- package/lib/raster/models/raster.js +125 -80
- package/lib/raster/models/rasterRgb.js +139 -84
- package/lib/raster/models/rasterTerrainRgb.js +93 -56
- package/lib/tile/interaction/getRasterData.js +25 -14
- package/lib/tile/interaction/utils.js +19 -7
- package/lib/tile/manager/base.js +104 -63
- package/lib/tile/service/TileLayerService.js +60 -33
- package/lib/tile/service/TilePickService.js +48 -26
- package/lib/tile/service/TileSourceService.js +16 -2
- package/lib/tile/style/utils.js +3 -0
- package/lib/tile/tileFactory/DebugTile.js +54 -29
- package/lib/tile/tileFactory/ImageTile.js +46 -20
- package/lib/tile/tileFactory/MaskTile.js +51 -22
- package/lib/tile/tileFactory/RasterRGBTile.js +50 -22
- package/lib/tile/tileFactory/RasterTerrainRGBTile.js +46 -20
- package/lib/tile/tileFactory/RasterTile.js +63 -30
- package/lib/tile/tileFactory/Tile.js +102 -63
- package/lib/tile/tileFactory/VectorTile.js +76 -41
- package/lib/tile/tileFactory/index.js +25 -0
- package/lib/tile/tileFactory/layers/TileDebugLayer.js +32 -6
- package/lib/tile/tileFactory/util.js +9 -0
- package/lib/tile/tileLayer/BaseLayer.js +153 -105
- package/lib/tile/utils.js +5 -1
- package/lib/utils/blend.js +5 -0
- package/lib/utils/collision-index.js +25 -9
- package/lib/utils/dataMappingStyle.js +19 -8
- package/lib/utils/extrude_polyline.js +181 -101
- package/lib/utils/grid-index.js +28 -2
- package/lib/utils/identityScale.js +9 -0
- package/lib/utils/layerData.js +49 -30
- package/lib/utils/multiPassRender.js +16 -11
- package/lib/utils/polylineNormal.js +66 -31
- package/lib/utils/simpleLine.js +21 -2
- package/lib/utils/stencil.js +4 -0
- package/lib/utils/symbol-layout.js +55 -27
- package/lib/wind/index.js +37 -9
- package/lib/wind/models/index.js +3 -0
- package/lib/wind/models/utils.js +62 -26
- package/lib/wind/models/wind.js +157 -101
- package/lib/wind/models/windRender.js +71 -53
- package/lib/wind/models/windShader.js +1 -0
- package/package.json +7 -7
|
@@ -7,56 +7,72 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConst
|
|
|
7
7
|
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
8
8
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
9
9
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
10
|
+
|
|
10
11
|
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); }; }
|
|
12
|
+
|
|
11
13
|
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; } }
|
|
14
|
+
|
|
12
15
|
import { AttributeType, gl } from '@antv/l7-core';
|
|
13
16
|
import { calculateCentroid, getCullFace, rgb2arr } from '@antv/l7-utils';
|
|
14
17
|
import { isNumber } from 'lodash';
|
|
15
18
|
import BaseModel from "../../core/BaseModel";
|
|
16
19
|
import { PointExtrudeTriangulation } from "../../core/triangulation";
|
|
20
|
+
|
|
17
21
|
/* babel-plugin-inline-import '../shaders/extrude/extrude_frag.glsl' */
|
|
18
22
|
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";
|
|
23
|
+
|
|
19
24
|
/* babel-plugin-inline-import '../shaders/extrude/extrude_vert.glsl' */
|
|
20
25
|
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_r;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nvarying vec4 v_color;\n\nuniform float u_opacity : 1;\nuniform float u_lightEnable: 1;\n\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nfloat getYRadian(float x, float z) {\n if(x > 0.0 && z > 0.0) {\n return atan(x/z);\n } else if(x > 0.0 && z <= 0.0){\n return atan(-z/x) + pi/2.0;\n } else if(x <= 0.0 && z <= 0.0) {\n return pi + atan(x/z); //atan(x/z) + \n } else {\n return atan(z/-x) + pi*3.0/2.0;\n }\n}\n\nfloat getXRadian(float y, float r) {\n return atan(y/r);\n}\n\nvoid main() {\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA - lightWeight\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1] - linearZ(\u5782\u76F4\u65B9\u5411 0 - 1 \u7684\u503C)\n 0.0, 0.0, 0.0, 0.0\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n vec3 size = a_Size * a_Position;\n\n // a_Position.z \u662F\u5728\u6784\u5EFA\u7F51\u683C\u7684\u65F6\u5019\u4F20\u5165\u7684\u6807\u51C6\u503C 0 - 1\uFF0C\u5728\u63D2\u503C\u5668\u63D2\u503C\u53EF\u4EE5\u83B7\u53D6 0\uFF5E1 \u7EBF\u6027\u6E10\u53D8\u7684\u503C\n styleMappingMat[2][3] = a_Position.z;\n\n vec3 offset = size; // \u63A7\u5236\u5706\u67F1\u4F53\u7684\u5927\u5C0F - \u4ECE\u6807\u51C6\u5355\u4F4D\u5706\u67F1\u4F53\u8FDB\u884C\u504F\u79FB\n if(u_heightfixed < 1.0) { // \u5706\u67F1\u4F53\u4E0D\u56FA\u5B9A\u9AD8\u5EA6\n \n if (u_CoordinateSystem == COORDINATE_SYSTEM_P20 || u_CoordinateSystem == COORDINATE_SYSTEM_P20_OFFSET) {\n // P20 \u5750\u6807\u7CFB\u4E0B\uFF0C\u4E3A\u4E86\u548C Web \u58A8\u5361\u6258\u5750\u6807\u7CFB\u7EDF\u4E00\uFF0Czoom \u9ED8\u8BA4\u51CF1\n offset = offset * pow(2.0, (19.0 - u_Zoom));\n }\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n // P20_2 \u5750\u6807\u7CFB\u4E0B\uFF0C\u4E3A\u4E86\u548C Web \u58A8\u5361\u6258\u5750\u6807\u7CFB\u7EDF\u4E00\uFF0Czoom \u9ED8\u8BA4\u51CF3\n offset = offset * pow(2.0, (19.0 - 3.0 - u_Zoom));\n }\n } else {// \u5706\u67F1\u4F53\u56FA\u5B9A\u9AD8\u5EA6 \uFF08 \u5904\u7406 mapbox \uFF09\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n offset *= 4.0/pow(2.0, 21.0 - u_Zoom);\n }\n }\n\n\n vec4 project_pos = project_position(vec4(a_Pos.xy, 0., 1.0));\n\n // u_r \u63A7\u5236\u5706\u67F1\u7684\u751F\u957F\n vec4 pos = vec4(project_pos.xy + offset.xy, offset.z * u_r, 1.0);\n\n // \u5706\u67F1\u5149\u7167\u6548\u679C\n float lightWeight = 1.0;\n if(u_lightEnable > 0.0) { // \u53D6\u6D88\u4E09\u5143\u8868\u8FBE\u5F0F\uFF0C\u589E\u5F3A\u5065\u58EE\u6027\n lightWeight = calc_lighting(pos);\n }\n styleMappingMat[1][3] = lightWeight;\n\n v_color =vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n // gl_Position = project_common_position_to_clipspace(pos);\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * pos;\n } else {\n gl_Position = project_common_position_to_clipspace(pos);\n }\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
26
|
+
|
|
21
27
|
var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
22
28
|
_inherits(ExtrudeModel, _BaseModel);
|
|
29
|
+
|
|
23
30
|
var _super = _createSuper(ExtrudeModel);
|
|
31
|
+
|
|
24
32
|
function ExtrudeModel() {
|
|
25
33
|
var _this;
|
|
34
|
+
|
|
26
35
|
_classCallCheck(this, ExtrudeModel);
|
|
36
|
+
|
|
27
37
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
28
38
|
args[_key] = arguments[_key];
|
|
29
39
|
}
|
|
40
|
+
|
|
30
41
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
42
|
+
|
|
31
43
|
_defineProperty(_assertThisInitialized(_this), "raiseCount", 0);
|
|
44
|
+
|
|
32
45
|
_defineProperty(_assertThisInitialized(_this), "raiseRepeat", 0);
|
|
46
|
+
|
|
33
47
|
return _this;
|
|
34
48
|
}
|
|
49
|
+
|
|
35
50
|
_createClass(ExtrudeModel, [{
|
|
36
51
|
key: "getUninforms",
|
|
37
52
|
value: function getUninforms() {
|
|
38
53
|
var _ref = this.layer.getLayerConfig(),
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
_ref$animateOption = _ref.animateOption,
|
|
55
|
+
animateOption = _ref$animateOption === void 0 ? {
|
|
56
|
+
enable: false,
|
|
57
|
+
speed: 0.01,
|
|
58
|
+
repeat: false
|
|
59
|
+
} : _ref$animateOption,
|
|
60
|
+
_ref$opacity = _ref.opacity,
|
|
61
|
+
opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
|
|
62
|
+
sourceColor = _ref.sourceColor,
|
|
63
|
+
targetColor = _ref.targetColor,
|
|
64
|
+
_ref$pickLight = _ref.pickLight,
|
|
65
|
+
pickLight = _ref$pickLight === void 0 ? false : _ref$pickLight,
|
|
66
|
+
_ref$heightfixed = _ref.heightfixed,
|
|
67
|
+
heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed,
|
|
68
|
+
_ref$opacityLinear = _ref.opacityLinear,
|
|
69
|
+
opacityLinear = _ref$opacityLinear === void 0 ? {
|
|
70
|
+
enable: false,
|
|
71
|
+
dir: 'up'
|
|
72
|
+
} : _ref$opacityLinear,
|
|
73
|
+
_ref$lightEnable = _ref.lightEnable,
|
|
74
|
+
lightEnable = _ref$lightEnable === void 0 ? true : _ref$lightEnable;
|
|
75
|
+
|
|
60
76
|
if (this.dataTextureTest && this.dataTextureNeedUpdate({
|
|
61
77
|
opacity: opacity
|
|
62
78
|
})) {
|
|
@@ -64,10 +80,12 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
64
80
|
opacity: opacity
|
|
65
81
|
});
|
|
66
82
|
var encodeData = this.layer.getEncodedData();
|
|
83
|
+
|
|
67
84
|
var _this$calDataFrame = this.calDataFrame(this.cellLength, encodeData, this.cellProperties),
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
85
|
+
data = _this$calDataFrame.data,
|
|
86
|
+
width = _this$calDataFrame.width,
|
|
87
|
+
height = _this$calDataFrame.height;
|
|
88
|
+
|
|
71
89
|
this.rowCount = height; // 当前数据纹理有多少行
|
|
72
90
|
|
|
73
91
|
this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
|
|
@@ -85,22 +103,26 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
85
103
|
width: 1,
|
|
86
104
|
height: 1
|
|
87
105
|
});
|
|
88
|
-
}
|
|
106
|
+
} // 转化渐变色
|
|
107
|
+
|
|
89
108
|
|
|
90
|
-
// 转化渐变色
|
|
91
109
|
var useLinearColor = 0; // 默认不生效
|
|
110
|
+
|
|
92
111
|
var sourceColorArr = [0, 0, 0, 0];
|
|
93
112
|
var targetColorArr = [0, 0, 0, 0];
|
|
113
|
+
|
|
94
114
|
if (sourceColor && targetColor) {
|
|
95
115
|
sourceColorArr = rgb2arr(sourceColor);
|
|
96
116
|
targetColorArr = rgb2arr(targetColor);
|
|
97
117
|
useLinearColor = 1;
|
|
98
118
|
}
|
|
119
|
+
|
|
99
120
|
if (this.raiseCount < 1 && this.raiseRepeat > 0) {
|
|
100
121
|
if (animateOption.enable) {
|
|
101
122
|
var _animateOption$speed = animateOption.speed,
|
|
102
|
-
|
|
123
|
+
speed = _animateOption$speed === void 0 ? 0.01 : _animateOption$speed;
|
|
103
124
|
this.raiseCount += speed;
|
|
125
|
+
|
|
104
126
|
if (this.raiseCount >= 1) {
|
|
105
127
|
if (this.raiseRepeat > 1) {
|
|
106
128
|
this.raiseCount = 0;
|
|
@@ -111,6 +133,7 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
111
133
|
}
|
|
112
134
|
}
|
|
113
135
|
}
|
|
136
|
+
|
|
114
137
|
return {
|
|
115
138
|
// 圆柱体的拾取高亮是否要计算光照
|
|
116
139
|
u_pickLight: Number(pickLight),
|
|
@@ -137,18 +160,23 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
137
160
|
value: function () {
|
|
138
161
|
var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
139
162
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
140
|
-
while (1)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
163
|
+
while (1) {
|
|
164
|
+
switch (_context.prev = _context.next) {
|
|
165
|
+
case 0:
|
|
166
|
+
return _context.abrupt("return", this.buildModels());
|
|
167
|
+
|
|
168
|
+
case 1:
|
|
169
|
+
case "end":
|
|
170
|
+
return _context.stop();
|
|
171
|
+
}
|
|
146
172
|
}
|
|
147
173
|
}, _callee, this);
|
|
148
174
|
}));
|
|
175
|
+
|
|
149
176
|
function initModels() {
|
|
150
177
|
return _initModels.apply(this, arguments);
|
|
151
178
|
}
|
|
179
|
+
|
|
152
180
|
return initModels;
|
|
153
181
|
}()
|
|
154
182
|
}, {
|
|
@@ -156,44 +184,52 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
156
184
|
value: function () {
|
|
157
185
|
var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
158
186
|
var _ref2, _ref2$depth, depth, _ref2$animateOption$r, repeat, model;
|
|
187
|
+
|
|
159
188
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
160
|
-
while (1)
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
189
|
+
while (1) {
|
|
190
|
+
switch (_context2.prev = _context2.next) {
|
|
191
|
+
case 0:
|
|
192
|
+
// GAODE1.x GAODE2.x MAPBOX
|
|
193
|
+
_ref2 = this.layer.getLayerConfig(), _ref2$depth = _ref2.depth, depth = _ref2$depth === void 0 ? true : _ref2$depth, _ref2$animateOption$r = _ref2.animateOption.repeat, repeat = _ref2$animateOption$r === void 0 ? 1 : _ref2$animateOption$r;
|
|
194
|
+
this.raiseRepeat = repeat;
|
|
195
|
+
_context2.next = 4;
|
|
196
|
+
return this.layer.buildLayerModel({
|
|
197
|
+
moduleName: 'pointExtrude',
|
|
198
|
+
vertexShader: pointExtrudeVert,
|
|
199
|
+
fragmentShader: pointExtrudeFrag,
|
|
200
|
+
triangulation: PointExtrudeTriangulation,
|
|
201
|
+
cull: {
|
|
202
|
+
enable: true,
|
|
203
|
+
face: getCullFace(this.mapService.version)
|
|
204
|
+
},
|
|
205
|
+
depth: {
|
|
206
|
+
enable: depth
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
case 4:
|
|
211
|
+
model = _context2.sent;
|
|
212
|
+
return _context2.abrupt("return", [model]);
|
|
213
|
+
|
|
214
|
+
case 6:
|
|
215
|
+
case "end":
|
|
216
|
+
return _context2.stop();
|
|
217
|
+
}
|
|
185
218
|
}
|
|
186
219
|
}, _callee2, this);
|
|
187
220
|
}));
|
|
221
|
+
|
|
188
222
|
function buildModels() {
|
|
189
223
|
return _buildModels.apply(this, arguments);
|
|
190
224
|
}
|
|
225
|
+
|
|
191
226
|
return buildModels;
|
|
192
227
|
}()
|
|
193
228
|
}, {
|
|
194
229
|
key: "clearModels",
|
|
195
230
|
value: function clearModels() {
|
|
196
231
|
var _this$dataTexture;
|
|
232
|
+
|
|
197
233
|
(_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
|
|
198
234
|
}
|
|
199
235
|
}, {
|
|
@@ -213,23 +249,26 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
213
249
|
size: 3,
|
|
214
250
|
update: function update(feature) {
|
|
215
251
|
var size = feature.size;
|
|
252
|
+
|
|
216
253
|
if (size) {
|
|
217
254
|
var buffersize = [];
|
|
255
|
+
|
|
218
256
|
if (Array.isArray(size)) {
|
|
219
257
|
buffersize = size.length === 2 ? [size[0], size[0], size[1]] : size;
|
|
220
258
|
}
|
|
259
|
+
|
|
221
260
|
if (!Array.isArray(size)) {
|
|
222
261
|
buffersize = [size, size, size];
|
|
223
262
|
}
|
|
263
|
+
|
|
224
264
|
return buffersize;
|
|
225
265
|
} else {
|
|
226
266
|
return [2, 2, 2];
|
|
227
267
|
}
|
|
228
268
|
}
|
|
229
269
|
}
|
|
230
|
-
});
|
|
270
|
+
}); // point layer size;
|
|
231
271
|
|
|
232
|
-
// point layer size;
|
|
233
272
|
this.styleAttributeService.registerStyleAttribute({
|
|
234
273
|
name: 'normal',
|
|
235
274
|
type: AttributeType.Attribute,
|
|
@@ -267,6 +306,8 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
267
306
|
});
|
|
268
307
|
}
|
|
269
308
|
}]);
|
|
309
|
+
|
|
270
310
|
return ExtrudeModel;
|
|
271
311
|
}(BaseModel);
|
|
312
|
+
|
|
272
313
|
export { ExtrudeModel as default };
|
package/es/point/models/fill.js
CHANGED
|
@@ -5,50 +5,61 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
|
5
5
|
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
6
6
|
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
7
7
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
8
|
+
|
|
8
9
|
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); }; }
|
|
10
|
+
|
|
9
11
|
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; } }
|
|
12
|
+
|
|
10
13
|
import { AttributeType, gl } from '@antv/l7-core';
|
|
11
14
|
import { PointFillTriangulation } from '@antv/l7-utils';
|
|
12
15
|
import { isNumber } from 'lodash';
|
|
13
16
|
import BaseModel from "../../core/BaseModel";
|
|
14
|
-
import { SizeUnitType } from "../../core/interface";
|
|
15
|
-
|
|
17
|
+
import { SizeUnitType } from "../../core/interface"; // animate pointLayer shader - support animate
|
|
18
|
+
|
|
16
19
|
/* babel-plugin-inline-import '../shaders/animate/wave_frag.glsl' */
|
|
17
20
|
var waveFillFrag = "\nuniform float u_additive;\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\nvarying vec4 v_data;\nvarying vec4 v_color;\nvarying float v_radius;\nuniform float u_time;\nuniform vec4 u_animate: [ 1., 2., 1.0, 0.2 ];\n\n#pragma include \"sdf_2d\"\n#pragma include \"picking\"\n\nvoid main() {\n\n vec4 textrueStroke = vec4(\n styleMappingMat[1][0],\n styleMappingMat[1][1],\n styleMappingMat[1][2],\n styleMappingMat[1][3]\n );\n\n float opacity = styleMappingMat[0][0];\n\n lowp float antialiasblur = v_data.z;\n float r = v_radius / (v_radius);\n\n float outer_df;\n float inner_df;\n // 'circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'\n \n outer_df = sdCircle(v_data.xy, 1.0);\n inner_df = sdCircle(v_data.xy, r);\n\n\n float opacity_t = smoothstep(0.0, antialiasblur, outer_df);\n\n float color_t = smoothstep(\n antialiasblur,\n 0.0,\n inner_df\n );\n float PI = 3.14159;\n float N_RINGS = 3.0;\n float FREQ = 1.0;\n\n gl_FragColor = vec4(v_color.rgb, v_color.a * opacity);\n\n float d = length(v_data.xy);\n if(d > 0.5) {\n discard;\n }\n float intensity = clamp(cos(d * PI), 0.0, 1.0) * clamp(cos(2.0 * PI * (d * 2.0 * u_animate.z - u_animate.y * u_time)), 0.0, 1.0);\n \n // \u6839\u636E\u53E0\u52A0\u6A21\u5F0F\u9009\u62E9\u6548\u679C\n if(u_additive > 0.0) {\n gl_FragColor *= intensity;\n // \u4F18\u5316\u6C34\u6CE2\u70B9 blend additive \u6A21\u5F0F\u4E0B\u6709\u7684\u62FE\u53D6\u6548\u679C \n gl_FragColor = filterColorAlpha(gl_FragColor, gl_FragColor.a);\n } else {\n gl_FragColor = vec4(gl_FragColor.xyz, gl_FragColor.a * intensity);\n gl_FragColor = filterColor(gl_FragColor);\n }\n}\n"; // static pointLayer shader - not support animate
|
|
21
|
+
|
|
18
22
|
/* babel-plugin-inline-import '../shaders/fill_frag.glsl' */
|
|
19
23
|
var pointFillFrag = "uniform float u_additive;\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\nvarying vec4 v_data;\nvarying vec4 v_color;\nvarying float v_radius;\n\n#pragma include \"sdf_2d\"\n#pragma include \"picking\"\n\n\nvoid main() {\n int shape = int(floor(v_data.w + 0.5));\n\n vec4 textrueStroke = vec4(\n styleMappingMat[1][0],\n styleMappingMat[1][1],\n styleMappingMat[1][2],\n styleMappingMat[1][3]\n );\n\n float opacity = styleMappingMat[0][0];\n float stroke_opacity = styleMappingMat[0][1];\n float strokeWidth = styleMappingMat[0][2];\n vec4 strokeColor = textrueStroke == vec4(0) ? v_color : textrueStroke;\n\n lowp float antialiasblur = v_data.z;\n float r = v_radius / (v_radius + strokeWidth);\n\n float outer_df;\n float inner_df;\n // 'circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'\n if (shape == 0) {\n outer_df = sdCircle(v_data.xy, 1.0);\n inner_df = sdCircle(v_data.xy, r);\n } else if (shape == 1) {\n outer_df = sdEquilateralTriangle(1.1 * v_data.xy);\n inner_df = sdEquilateralTriangle(1.1 / r * v_data.xy);\n } else if (shape == 2) {\n outer_df = sdBox(v_data.xy, vec2(1.));\n inner_df = sdBox(v_data.xy, vec2(r));\n } else if (shape == 3) {\n outer_df = sdPentagon(v_data.xy, 0.8);\n inner_df = sdPentagon(v_data.xy, r * 0.8);\n } else if (shape == 4) {\n outer_df = sdHexagon(v_data.xy, 0.8);\n inner_df = sdHexagon(v_data.xy, r * 0.8);\n } else if (shape == 5) {\n outer_df = sdOctogon(v_data.xy, 1.0);\n inner_df = sdOctogon(v_data.xy, r);\n } else if (shape == 6) {\n outer_df = sdHexagram(v_data.xy, 0.52);\n inner_df = sdHexagram(v_data.xy, r * 0.52);\n } else if (shape == 7) {\n outer_df = sdRhombus(v_data.xy, vec2(1.0));\n inner_df = sdRhombus(v_data.xy, vec2(r));\n } else if (shape == 8) {\n outer_df = sdVesica(v_data.xy, 1.1, 0.8);\n inner_df = sdVesica(v_data.xy, r * 1.1, r * 0.8);\n }\n\n float opacity_t = smoothstep(0.0, antialiasblur, outer_df);\n\n float color_t = strokeWidth < 0.01 ? 0.0 : smoothstep(\n antialiasblur,\n 0.0,\n inner_df\n );\n\n if(strokeWidth < 0.01) {\n gl_FragColor = vec4(v_color.rgb, v_color.a * opacity);\n } else {\n gl_FragColor = mix(vec4(v_color.rgb, v_color.a * opacity), strokeColor * stroke_opacity, color_t);\n }\n\n if(u_additive > 0.0) {\n gl_FragColor *= opacity_t;\n gl_FragColor = filterColorAlpha(gl_FragColor, gl_FragColor.a);\n } else {\n gl_FragColor.a *= opacity_t;\n gl_FragColor = filterColor(gl_FragColor);\n }\n // \u4F5C\u4E3A mask \u6A21\u677F\u65F6\u9700\u8981\u4E22\u5F03\u900F\u660E\u7684\u50CF\u7D20\n if(gl_FragColor.a < 0.01) {\n discard;\n } \n}\n";
|
|
24
|
+
|
|
20
25
|
/* babel-plugin-inline-import '../shaders/fill_vert.glsl' */
|
|
21
26
|
var pointFillVert = "attribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Extrude;\nattribute float a_Size;\nattribute float a_Shape;\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\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform int u_Size_Unit;\n\nvarying vec4 v_data;\nvarying vec4 v_color;\nvarying float v_radius;\n\nuniform float u_opacity : 1;\nuniform float u_stroke_opacity : 1;\nuniform float u_stroke_width : 2;\nuniform vec4 u_stroke_color : [0.0, 0.0, 0.0, 0.0];\nuniform vec2 u_offsets;\n\nuniform float u_blur : 0.0;\nuniform float u_raisingHeight: 0.0;\nuniform float u_heightfixed: 0.0;\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n#pragma include \"styleMappingCalStrokeOpacity\"\n#pragma include \"styleMappingCalStrokeWidth\"\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\n\nvoid main() {\n vec3 extrude = a_Extrude;\n float shape_type = a_Shape;\n /*\n * setPickingSize \u8BBE\u7F6E\u62FE\u53D6\u5927\u5C0F\n * u_meter2coord \u5728\u7B49\u9762\u79EF\u5927\u5C0F\u7684\u65F6\u5019\u8BBE\u7F6E\u5355\u4F4D\n */\n float newSize = setPickingSize(a_Size);\n // float newSize = setPickingSize(a_Size) * 0.00001038445708445579;\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n\n vec2 strokeOpacityAndOffset = calStrokeOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][1] = strokeOpacityAndOffset.r;\n textureOffset = strokeOpacityAndOffset.g;\n\n vec2 strokeWidthAndOffset = calStrokeWidthAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][2] = strokeWidthAndOffset.r;\n textureOffset = strokeWidthAndOffset.g;\n\n vec4 textrueStroke = vec4(-1.0, -1.0, -1.0, -1.0);\n if(hasStroke()) {\n vec2 valueRPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][0] = pos2value(valueRPos, columnWidth, rowHeight); // R\n textureOffset += 1.0;\n\n vec2 valueGPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][1] = pos2value(valueGPos, columnWidth, rowHeight); // G\n textureOffset += 1.0;\n\n vec2 valueBPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][2] = pos2value(valueBPos, columnWidth, rowHeight); // B\n textureOffset += 1.0;\n\n vec2 valueAPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][3] = pos2value(valueAPos, columnWidth, rowHeight); // A\n textureOffset += 1.0;\n } else {\n if(u_stroke_color == vec4(0.0)) {\n styleMappingMat[1][0] = v_color.r;\n styleMappingMat[1][1] = v_color.g;\n styleMappingMat[1][2] = v_color.b;\n styleMappingMat[1][3] = v_color.a;\n } else {\n styleMappingMat[1][0] = u_stroke_color.r;\n styleMappingMat[1][1] = u_stroke_color.g;\n styleMappingMat[1][2] = u_stroke_color.b;\n styleMappingMat[1][3] = u_stroke_color.a;\n }\n }\n\n vec2 textrueOffsets = vec2(0.0, 0.0);\n if(hasOffsets()) {\n vec2 valueXPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.r = pos2value(valueXPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n\n vec2 valueYPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.g = pos2value(valueYPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n } else {\n textrueOffsets = u_offsets;\n }\n\n // cal style mapping\n\n // unpack color(vec2)\n v_color = a_Color;\nif(u_Size_Unit == 1) {\n newSize = newSize * u_PixelsPerMeter.z;\n }\n\n v_radius = newSize;\n\n // anti-alias\n // float antialiased_blur = -max(u_blur, antialiasblur);\n float antialiasblur = -max(2.0 / u_DevicePixelRatio / newSize, u_blur);\n\n vec2 offset = (extrude.xy * (newSize + u_stroke_width) + textrueOffsets);\n vec3 aPosition = a_Position;\n\n offset = project_pixel(offset);\n \n // TODP: /abs(extrude.x) \u662F\u4E3A\u4E86\u517C\u5BB9\u5730\u7403\u6A21\u5F0F\n v_data = vec4(extrude.x/abs(extrude.x), extrude.y/abs(extrude.y), antialiasblur,shape_type);\n\n\n // vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));\n vec4 project_pos = project_position(vec4(aPosition.xy, 0.0, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n\n float raisingHeight = u_raisingHeight;\n\n if(u_heightfixed < 1.0) { // false\n raisingHeight = project_pixel(u_raisingHeight);\n } else {\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n raisingHeight = u_raisingHeight * mapboxZoomScale;\n }\n }\n \n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * vec4(project_pos.xy + offset, raisingHeight, 1.0);\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, raisingHeight, 1.0));\n }\n \n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, 0.0, 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
27
|
+
|
|
22
28
|
var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
23
29
|
_inherits(FillModel, _BaseModel);
|
|
30
|
+
|
|
24
31
|
var _super = _createSuper(FillModel);
|
|
32
|
+
|
|
25
33
|
function FillModel() {
|
|
26
34
|
_classCallCheck(this, FillModel);
|
|
35
|
+
|
|
27
36
|
return _super.apply(this, arguments);
|
|
28
37
|
}
|
|
38
|
+
|
|
29
39
|
_createClass(FillModel, [{
|
|
30
40
|
key: "getUninforms",
|
|
31
41
|
value: function getUninforms() {
|
|
32
42
|
var _ref = this.layer.getLayerConfig(),
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
_ref$opacity = _ref.opacity,
|
|
44
|
+
opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
|
|
45
|
+
_ref$strokeOpacity = _ref.strokeOpacity,
|
|
46
|
+
strokeOpacity = _ref$strokeOpacity === void 0 ? 1 : _ref$strokeOpacity,
|
|
47
|
+
_ref$strokeWidth = _ref.strokeWidth,
|
|
48
|
+
strokeWidth = _ref$strokeWidth === void 0 ? 0 : _ref$strokeWidth,
|
|
49
|
+
_ref$stroke = _ref.stroke,
|
|
50
|
+
stroke = _ref$stroke === void 0 ? 'rgba(0,0,0,0)' : _ref$stroke,
|
|
51
|
+
_ref$offsets = _ref.offsets,
|
|
52
|
+
offsets = _ref$offsets === void 0 ? [0, 0] : _ref$offsets,
|
|
53
|
+
blend = _ref.blend,
|
|
54
|
+
_ref$blur = _ref.blur,
|
|
55
|
+
blur = _ref$blur === void 0 ? 0 : _ref$blur,
|
|
56
|
+
_ref$raisingHeight = _ref.raisingHeight,
|
|
57
|
+
raisingHeight = _ref$raisingHeight === void 0 ? 0 : _ref$raisingHeight,
|
|
58
|
+
_ref$heightfixed = _ref.heightfixed,
|
|
59
|
+
heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed,
|
|
60
|
+
_ref$unit = _ref.unit,
|
|
61
|
+
unit = _ref$unit === void 0 ? 'pixel' : _ref$unit;
|
|
62
|
+
|
|
52
63
|
if (this.dataTextureTest && this.dataTextureNeedUpdate({
|
|
53
64
|
opacity: opacity,
|
|
54
65
|
strokeOpacity: strokeOpacity,
|
|
@@ -65,11 +76,14 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
65
76
|
offsets: offsets
|
|
66
77
|
});
|
|
67
78
|
var encodeData = this.layer.getEncodedData();
|
|
79
|
+
|
|
68
80
|
var _this$calDataFrame = this.calDataFrame(this.cellLength, encodeData, this.cellProperties),
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
81
|
+
data = _this$calDataFrame.data,
|
|
82
|
+
width = _this$calDataFrame.width,
|
|
83
|
+
height = _this$calDataFrame.height;
|
|
84
|
+
|
|
72
85
|
this.rowCount = height; // 当前数据纹理有多少行
|
|
86
|
+
|
|
73
87
|
this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
|
|
74
88
|
flipY: true,
|
|
75
89
|
data: data,
|
|
@@ -86,6 +100,7 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
86
100
|
height: 1
|
|
87
101
|
});
|
|
88
102
|
}
|
|
103
|
+
|
|
89
104
|
return {
|
|
90
105
|
u_raisingHeight: Number(raisingHeight),
|
|
91
106
|
u_heightfixed: Number(heightfixed),
|
|
@@ -106,10 +121,11 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
106
121
|
key: "getAnimateUniforms",
|
|
107
122
|
value: function getAnimateUniforms() {
|
|
108
123
|
var _ref2 = this.layer.getLayerConfig(),
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
124
|
+
_ref2$animateOption = _ref2.animateOption,
|
|
125
|
+
animateOption = _ref2$animateOption === void 0 ? {
|
|
126
|
+
enable: false
|
|
127
|
+
} : _ref2$animateOption;
|
|
128
|
+
|
|
113
129
|
return {
|
|
114
130
|
u_animate: this.animateOption2Array(animateOption),
|
|
115
131
|
u_time: this.layer.getLayerAnimateTime()
|
|
@@ -125,18 +141,23 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
125
141
|
value: function () {
|
|
126
142
|
var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
127
143
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
128
|
-
while (1)
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
144
|
+
while (1) {
|
|
145
|
+
switch (_context.prev = _context.next) {
|
|
146
|
+
case 0:
|
|
147
|
+
return _context.abrupt("return", this.buildModels());
|
|
148
|
+
|
|
149
|
+
case 1:
|
|
150
|
+
case "end":
|
|
151
|
+
return _context.stop();
|
|
152
|
+
}
|
|
134
153
|
}
|
|
135
154
|
}, _callee, this);
|
|
136
155
|
}));
|
|
156
|
+
|
|
137
157
|
function initModels() {
|
|
138
158
|
return _initModels.apply(this, arguments);
|
|
139
159
|
}
|
|
160
|
+
|
|
140
161
|
return initModels;
|
|
141
162
|
}()
|
|
142
163
|
}, {
|
|
@@ -144,48 +165,56 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
144
165
|
value: function () {
|
|
145
166
|
var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
146
167
|
var _ref3, _ref3$animateOption, animateOption, _ref3$workerEnabled, workerEnabled, enablePicking, shape2d, _this$getShaders, frag, vert, type, model;
|
|
168
|
+
|
|
147
169
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
148
|
-
while (1)
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
} : _ref3$animateOption, _ref3$workerEnabled = _ref3.workerEnabled, workerEnabled = _ref3$workerEnabled === void 0 ? false : _ref3$workerEnabled, enablePicking = _ref3.enablePicking, shape2d = _ref3.shape2d;
|
|
153
|
-
_this$getShaders = this.getShaders(animateOption), frag = _this$getShaders.frag, vert = _this$getShaders.vert, type = _this$getShaders.type;
|
|
154
|
-
this.layer.triangulation = PointFillTriangulation;
|
|
155
|
-
_context2.next = 5;
|
|
156
|
-
return this.layer.buildLayerModel({
|
|
157
|
-
moduleName: type,
|
|
158
|
-
vertexShader: vert,
|
|
159
|
-
fragmentShader: frag,
|
|
160
|
-
triangulation: PointFillTriangulation,
|
|
161
|
-
depth: {
|
|
170
|
+
while (1) {
|
|
171
|
+
switch (_context2.prev = _context2.next) {
|
|
172
|
+
case 0:
|
|
173
|
+
_ref3 = this.layer.getLayerConfig(), _ref3$animateOption = _ref3.animateOption, animateOption = _ref3$animateOption === void 0 ? {
|
|
162
174
|
enable: false
|
|
163
|
-
},
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
175
|
+
} : _ref3$animateOption, _ref3$workerEnabled = _ref3.workerEnabled, workerEnabled = _ref3$workerEnabled === void 0 ? false : _ref3$workerEnabled, enablePicking = _ref3.enablePicking, shape2d = _ref3.shape2d;
|
|
176
|
+
_this$getShaders = this.getShaders(animateOption), frag = _this$getShaders.frag, vert = _this$getShaders.vert, type = _this$getShaders.type;
|
|
177
|
+
this.layer.triangulation = PointFillTriangulation;
|
|
178
|
+
_context2.next = 5;
|
|
179
|
+
return this.layer.buildLayerModel({
|
|
180
|
+
moduleName: type,
|
|
181
|
+
vertexShader: vert,
|
|
182
|
+
fragmentShader: frag,
|
|
183
|
+
triangulation: PointFillTriangulation,
|
|
184
|
+
depth: {
|
|
185
|
+
enable: false
|
|
186
|
+
},
|
|
187
|
+
workerEnabled: workerEnabled,
|
|
188
|
+
workerOptions: {
|
|
189
|
+
modelType: type,
|
|
190
|
+
enablePicking: enablePicking,
|
|
191
|
+
shape2d: shape2d
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
case 5:
|
|
196
|
+
model = _context2.sent;
|
|
197
|
+
return _context2.abrupt("return", [model]);
|
|
198
|
+
|
|
199
|
+
case 7:
|
|
200
|
+
case "end":
|
|
201
|
+
return _context2.stop();
|
|
202
|
+
}
|
|
177
203
|
}
|
|
178
204
|
}, _callee2, this);
|
|
179
205
|
}));
|
|
206
|
+
|
|
180
207
|
function buildModels() {
|
|
181
208
|
return _buildModels.apply(this, arguments);
|
|
182
209
|
}
|
|
210
|
+
|
|
183
211
|
return buildModels;
|
|
184
212
|
}()
|
|
185
213
|
/**
|
|
186
214
|
* 根据 animateOption 的值返回对应的 shader 代码
|
|
187
215
|
* @returns
|
|
188
216
|
*/
|
|
217
|
+
|
|
189
218
|
}, {
|
|
190
219
|
key: "getShaders",
|
|
191
220
|
value: function getShaders(animateOption) {
|
|
@@ -197,6 +226,7 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
197
226
|
vert: pointFillVert,
|
|
198
227
|
type: 'pointWave'
|
|
199
228
|
};
|
|
229
|
+
|
|
200
230
|
default:
|
|
201
231
|
return {
|
|
202
232
|
frag: waveFillFrag,
|
|
@@ -216,10 +246,10 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
216
246
|
key: "clearModels",
|
|
217
247
|
value: function clearModels() {
|
|
218
248
|
var _this$dataTexture;
|
|
249
|
+
|
|
219
250
|
(_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
|
|
220
|
-
}
|
|
251
|
+
} // overwrite baseModel func
|
|
221
252
|
|
|
222
|
-
// overwrite baseModel func
|
|
223
253
|
}, {
|
|
224
254
|
key: "animateOption2Array",
|
|
225
255
|
value: function animateOption2Array(option) {
|
|
@@ -247,9 +277,8 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
247
277
|
return [extrude[extrudeIndex], extrude[extrudeIndex + 1], extrude[extrudeIndex + 2]];
|
|
248
278
|
}
|
|
249
279
|
}
|
|
250
|
-
});
|
|
280
|
+
}); // point layer size;
|
|
251
281
|
|
|
252
|
-
// point layer size;
|
|
253
282
|
this.styleAttributeService.registerStyleAttribute({
|
|
254
283
|
name: 'size',
|
|
255
284
|
type: AttributeType.Attribute,
|
|
@@ -264,13 +293,12 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
264
293
|
size: 1,
|
|
265
294
|
update: function update(feature) {
|
|
266
295
|
var _feature$size = feature.size,
|
|
267
|
-
|
|
296
|
+
size = _feature$size === void 0 ? 5 : _feature$size;
|
|
268
297
|
return Array.isArray(size) ? [size[0]] : [size];
|
|
269
298
|
}
|
|
270
299
|
}
|
|
271
|
-
});
|
|
300
|
+
}); // point layer size;
|
|
272
301
|
|
|
273
|
-
// point layer size;
|
|
274
302
|
this.styleAttributeService.registerStyleAttribute({
|
|
275
303
|
name: 'shape',
|
|
276
304
|
type: AttributeType.Attribute,
|
|
@@ -285,7 +313,7 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
285
313
|
size: 1,
|
|
286
314
|
update: function update(feature) {
|
|
287
315
|
var _feature$shape = feature.shape,
|
|
288
|
-
|
|
316
|
+
shape = _feature$shape === void 0 ? 2 : _feature$shape;
|
|
289
317
|
var shapeIndex = shape2d.indexOf(shape);
|
|
290
318
|
return [shapeIndex];
|
|
291
319
|
}
|
|
@@ -293,6 +321,8 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
293
321
|
});
|
|
294
322
|
}
|
|
295
323
|
}]);
|
|
324
|
+
|
|
296
325
|
return FillModel;
|
|
297
326
|
}(BaseModel);
|
|
327
|
+
|
|
298
328
|
export { FillModel as default };
|