@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,57 +7,73 @@ 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";
|
|
17
20
|
import { lglt2xyz } from "../../earth/utils";
|
|
21
|
+
|
|
18
22
|
/* babel-plugin-inline-import '../shaders/earth/extrude_frag.glsl' */
|
|
19
23
|
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";
|
|
24
|
+
|
|
20
25
|
/* babel-plugin-inline-import '../shaders/earth/extrude_vert.glsl' */
|
|
21
26
|
var pointExtrudeVert = "precision highp float;\n\n#define pi 3.1415926535\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec3 a_Position;\nattribute vec3 a_Pos;\nattribute vec4 a_Color;\nattribute vec3 a_Size;\nattribute vec3 a_Normal;\n\nuniform float u_heightfixed: 0.0; // \u9ED8\u8BA4\u4E0D\u56FA\u5B9A\nuniform float u_globel;\nuniform float u_r;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nvarying vec4 v_color;\n\nuniform float u_opacity : 1;\nuniform float u_lightEnable: 1;\n\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nfloat getYRadian(float x, float z) {\n if(x > 0.0 && z > 0.0) {\n return atan(x/z);\n } else if(x > 0.0 && z <= 0.0){\n return atan(-z/x) + pi/2.0;\n } else if(x <= 0.0 && z <= 0.0) {\n return pi + atan(x/z); //atan(x/z) + \n } else {\n return atan(z/-x) + pi*3.0/2.0;\n }\n}\n\nfloat getXRadian(float y, float r) {\n return atan(y/r);\n}\n\nvoid main() {\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA - lightWeight\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1] - linearZ(\u5782\u76F4\u65B9\u5411 0 - 1 \u7684\u503C)\n 0.0, 0.0, 0.0, 0.0\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n vec3 size = a_Size * a_Position;\n\n // a_Position.z \u662F\u5728\u6784\u5EFA\u7F51\u683C\u7684\u65F6\u5019\u4F20\u5165\u7684\u6807\u51C6\u503C 0 - 1\uFF0C\u5728\u63D2\u503C\u5668\u63D2\u503C\u53EF\u4EE5\u83B7\u53D6 0\uFF5E1 \u7EBF\u6027\u6E10\u53D8\u7684\u503C\n styleMappingMat[2][3] = a_Position.z;\n\n vec3 offset = size; // \u63A7\u5236\u5706\u67F1\u4F53\u7684\u5927\u5C0F - \u4ECE\u6807\u51C6\u5355\u4F4D\u5706\u67F1\u4F53\u8FDB\u884C\u504F\u79FB\n if(u_heightfixed < 1.0) { // \u5706\u67F1\u4F53\u4E0D\u56FA\u5B9A\u9AD8\u5EA6\n \n if (u_CoordinateSystem == COORDINATE_SYSTEM_P20 || u_CoordinateSystem == COORDINATE_SYSTEM_P20_OFFSET) {\n // P20 \u5750\u6807\u7CFB\u4E0B\uFF0C\u4E3A\u4E86\u548C Web \u58A8\u5361\u6258\u5750\u6807\u7CFB\u7EDF\u4E00\uFF0Czoom \u9ED8\u8BA4\u51CF1\n offset = offset * pow(2.0, (19.0 - u_Zoom));\n }\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n // P20_2 \u5750\u6807\u7CFB\u4E0B\uFF0C\u4E3A\u4E86\u548C Web \u58A8\u5361\u6258\u5750\u6807\u7CFB\u7EDF\u4E00\uFF0Czoom \u9ED8\u8BA4\u51CF3\n offset = offset * pow(2.0, (19.0 - 3.0 - u_Zoom));\n }\n } else {// \u5706\u67F1\u4F53\u56FA\u5B9A\u9AD8\u5EA6 \uFF08 \u5904\u7406 mapbox \uFF09\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n offset *= 4.0/pow(2.0, 21.0 - u_Zoom);\n }\n }\n\n\n vec4 project_pos = project_position(vec4(a_Pos.xy, 0., 1.0));\n\n // u_r \u63A7\u5236\u5706\u67F1\u7684\u751F\u957F\n vec4 pos = vec4(project_pos.xy + offset.xy, offset.z * u_r, 1.0);\n\n // \u5706\u67F1\u5149\u7167\u6548\u679C\n float lightWeight = 1.0;\n if(u_lightEnable > 0.0) { // \u53D6\u6D88\u4E09\u5143\u8868\u8FBE\u5F0F\uFF0C\u589E\u5F3A\u5065\u58EE\u6027\n lightWeight = calc_lighting(pos);\n }\n styleMappingMat[1][3] = lightWeight;\n\n v_color =vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n \n // \u5728\u5730\u7403\u6A21\u5F0F\u4E0B\uFF0C\u5C06\u539F\u672C\u5782\u76F4\u4E8E xy \u5E73\u9762\u7684\u5706\u67F1\u8C03\u6574\u59FF\u6001\u5230\u9002\u5E94\u5706\u7684\u89D2\u5EA6\n //\u65CB\u8F6C\u77E9\u9635mx\uFF0C\u521B\u5EFA\u7ED5x\u8F74\u65CB\u8F6C\u77E9\u9635\n float r = sqrt(a_Pos.z*a_Pos.z + a_Pos.x*a_Pos.x);\n float xRadian = getXRadian(a_Pos.y, r);\n float xcos = cos(xRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u4F59\u5F26\u503C\n float xsin = sin(xRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u6B63\u5F26\u503C\n mat4 mx = mat4(\n 1,0,0,0, \n 0,xcos,-xsin,0, \n 0,xsin,xcos,0, \n 0,0,0,1);\n\n //\u65CB\u8F6C\u77E9\u9635my\uFF0C\u521B\u5EFA\u7ED5y\u8F74\u65CB\u8F6C\u77E9\u9635\n float yRadian = getYRadian(a_Pos.x, a_Pos.z);\n float ycos = cos(yRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u4F59\u5F26\u503C\n float ysin = sin(yRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u6B63\u5F26\u503C\n mat4 my = mat4(\n ycos,0,-ysin,0, \n 0,1,0,0, \n ysin,0,ycos,0, \n 0,0,0,1);\n\n gl_Position = u_ViewProjectionMatrix * vec4(( my * mx * vec4(a_Position * a_Size, 1.0)).xyz + a_Pos, 1.0);\n \n\n setPickingColor(a_PickingColor);\n}\n";
|
|
27
|
+
|
|
22
28
|
var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
23
29
|
_inherits(ExtrudeModel, _BaseModel);
|
|
30
|
+
|
|
24
31
|
var _super = _createSuper(ExtrudeModel);
|
|
32
|
+
|
|
25
33
|
function ExtrudeModel() {
|
|
26
34
|
var _this;
|
|
35
|
+
|
|
27
36
|
_classCallCheck(this, ExtrudeModel);
|
|
37
|
+
|
|
28
38
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
29
39
|
args[_key] = arguments[_key];
|
|
30
40
|
}
|
|
41
|
+
|
|
31
42
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
43
|
+
|
|
32
44
|
_defineProperty(_assertThisInitialized(_this), "raiseCount", 0);
|
|
45
|
+
|
|
33
46
|
_defineProperty(_assertThisInitialized(_this), "raiseRepeat", 0);
|
|
47
|
+
|
|
34
48
|
return _this;
|
|
35
49
|
}
|
|
50
|
+
|
|
36
51
|
_createClass(ExtrudeModel, [{
|
|
37
52
|
key: "getUninforms",
|
|
38
53
|
value: function getUninforms() {
|
|
39
54
|
var _ref = this.layer.getLayerConfig(),
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
_ref$animateOption = _ref.animateOption,
|
|
56
|
+
animateOption = _ref$animateOption === void 0 ? {
|
|
57
|
+
enable: false,
|
|
58
|
+
speed: 0.01,
|
|
59
|
+
repeat: false
|
|
60
|
+
} : _ref$animateOption,
|
|
61
|
+
_ref$opacity = _ref.opacity,
|
|
62
|
+
opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
|
|
63
|
+
sourceColor = _ref.sourceColor,
|
|
64
|
+
targetColor = _ref.targetColor,
|
|
65
|
+
_ref$pickLight = _ref.pickLight,
|
|
66
|
+
pickLight = _ref$pickLight === void 0 ? false : _ref$pickLight,
|
|
67
|
+
_ref$heightfixed = _ref.heightfixed,
|
|
68
|
+
heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed,
|
|
69
|
+
_ref$opacityLinear = _ref.opacityLinear,
|
|
70
|
+
opacityLinear = _ref$opacityLinear === void 0 ? {
|
|
71
|
+
enable: false,
|
|
72
|
+
dir: 'up'
|
|
73
|
+
} : _ref$opacityLinear,
|
|
74
|
+
_ref$lightEnable = _ref.lightEnable,
|
|
75
|
+
lightEnable = _ref$lightEnable === void 0 ? true : _ref$lightEnable;
|
|
76
|
+
|
|
61
77
|
if (this.dataTextureTest && this.dataTextureNeedUpdate({
|
|
62
78
|
opacity: opacity
|
|
63
79
|
})) {
|
|
@@ -65,10 +81,12 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
65
81
|
opacity: opacity
|
|
66
82
|
});
|
|
67
83
|
var encodeData = this.layer.getEncodedData();
|
|
84
|
+
|
|
68
85
|
var _this$calDataFrame = this.calDataFrame(this.cellLength, encodeData, this.cellProperties),
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
86
|
+
data = _this$calDataFrame.data,
|
|
87
|
+
width = _this$calDataFrame.width,
|
|
88
|
+
height = _this$calDataFrame.height;
|
|
89
|
+
|
|
72
90
|
this.rowCount = height; // 当前数据纹理有多少行
|
|
73
91
|
|
|
74
92
|
this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
|
|
@@ -86,22 +104,26 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
86
104
|
width: 1,
|
|
87
105
|
height: 1
|
|
88
106
|
});
|
|
89
|
-
}
|
|
107
|
+
} // 转化渐变色
|
|
108
|
+
|
|
90
109
|
|
|
91
|
-
// 转化渐变色
|
|
92
110
|
var useLinearColor = 0; // 默认不生效
|
|
111
|
+
|
|
93
112
|
var sourceColorArr = [0, 0, 0, 0];
|
|
94
113
|
var targetColorArr = [0, 0, 0, 0];
|
|
114
|
+
|
|
95
115
|
if (sourceColor && targetColor) {
|
|
96
116
|
sourceColorArr = rgb2arr(sourceColor);
|
|
97
117
|
targetColorArr = rgb2arr(targetColor);
|
|
98
118
|
useLinearColor = 1;
|
|
99
119
|
}
|
|
120
|
+
|
|
100
121
|
if (this.raiseCount < 1 && this.raiseRepeat > 0) {
|
|
101
122
|
if (animateOption.enable) {
|
|
102
123
|
var _animateOption$speed = animateOption.speed,
|
|
103
|
-
|
|
124
|
+
speed = _animateOption$speed === void 0 ? 0.01 : _animateOption$speed;
|
|
104
125
|
this.raiseCount += speed;
|
|
126
|
+
|
|
105
127
|
if (this.raiseCount >= 1) {
|
|
106
128
|
if (this.raiseRepeat > 1) {
|
|
107
129
|
this.raiseCount = 0;
|
|
@@ -112,6 +134,7 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
112
134
|
}
|
|
113
135
|
}
|
|
114
136
|
}
|
|
137
|
+
|
|
115
138
|
return {
|
|
116
139
|
// 圆柱体的拾取高亮是否要计算光照
|
|
117
140
|
u_pickLight: Number(pickLight),
|
|
@@ -138,18 +161,23 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
138
161
|
value: function () {
|
|
139
162
|
var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
140
163
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
141
|
-
while (1)
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
164
|
+
while (1) {
|
|
165
|
+
switch (_context.prev = _context.next) {
|
|
166
|
+
case 0:
|
|
167
|
+
return _context.abrupt("return", this.buildModels());
|
|
168
|
+
|
|
169
|
+
case 1:
|
|
170
|
+
case "end":
|
|
171
|
+
return _context.stop();
|
|
172
|
+
}
|
|
147
173
|
}
|
|
148
174
|
}, _callee, this);
|
|
149
175
|
}));
|
|
176
|
+
|
|
150
177
|
function initModels() {
|
|
151
178
|
return _initModels.apply(this, arguments);
|
|
152
179
|
}
|
|
180
|
+
|
|
153
181
|
return initModels;
|
|
154
182
|
}()
|
|
155
183
|
}, {
|
|
@@ -157,45 +185,53 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
157
185
|
value: function () {
|
|
158
186
|
var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
159
187
|
var _ref2, _ref2$animateOption$r, repeat, model;
|
|
188
|
+
|
|
160
189
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
161
|
-
while (1)
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
190
|
+
while (1) {
|
|
191
|
+
switch (_context2.prev = _context2.next) {
|
|
192
|
+
case 0:
|
|
193
|
+
// GAODE1.x GAODE2.x MAPBOX
|
|
194
|
+
_ref2 = this.layer.getLayerConfig(), _ref2$animateOption$r = _ref2.animateOption.repeat, repeat = _ref2$animateOption$r === void 0 ? 1 : _ref2$animateOption$r;
|
|
195
|
+
this.raiseRepeat = repeat;
|
|
196
|
+
_context2.next = 4;
|
|
197
|
+
return this.layer.buildLayerModel({
|
|
198
|
+
moduleName: 'pointEarthExtrude',
|
|
199
|
+
vertexShader: pointExtrudeVert,
|
|
200
|
+
fragmentShader: pointExtrudeFrag,
|
|
201
|
+
triangulation: PointExtrudeTriangulation,
|
|
202
|
+
depth: {
|
|
203
|
+
enable: true
|
|
204
|
+
},
|
|
205
|
+
cull: {
|
|
206
|
+
enable: true,
|
|
207
|
+
face: getCullFace(this.mapService.version)
|
|
208
|
+
},
|
|
209
|
+
blend: this.getBlend()
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
case 4:
|
|
213
|
+
model = _context2.sent;
|
|
214
|
+
return _context2.abrupt("return", [model]);
|
|
215
|
+
|
|
216
|
+
case 6:
|
|
217
|
+
case "end":
|
|
218
|
+
return _context2.stop();
|
|
219
|
+
}
|
|
187
220
|
}
|
|
188
221
|
}, _callee2, this);
|
|
189
222
|
}));
|
|
223
|
+
|
|
190
224
|
function buildModels() {
|
|
191
225
|
return _buildModels.apply(this, arguments);
|
|
192
226
|
}
|
|
227
|
+
|
|
193
228
|
return buildModels;
|
|
194
229
|
}()
|
|
195
230
|
}, {
|
|
196
231
|
key: "clearModels",
|
|
197
232
|
value: function clearModels() {
|
|
198
233
|
var _this$dataTexture;
|
|
234
|
+
|
|
199
235
|
(_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
|
|
200
236
|
}
|
|
201
237
|
}, {
|
|
@@ -214,23 +250,26 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
214
250
|
size: 3,
|
|
215
251
|
update: function update(feature) {
|
|
216
252
|
var size = feature.size;
|
|
253
|
+
|
|
217
254
|
if (size) {
|
|
218
255
|
var buffersize = [];
|
|
256
|
+
|
|
219
257
|
if (Array.isArray(size)) {
|
|
220
258
|
buffersize = size.length === 2 ? [size[0], size[0], size[1]] : size;
|
|
221
259
|
}
|
|
260
|
+
|
|
222
261
|
if (!Array.isArray(size)) {
|
|
223
262
|
buffersize = [size, size, size];
|
|
224
263
|
}
|
|
264
|
+
|
|
225
265
|
return buffersize;
|
|
226
266
|
} else {
|
|
227
267
|
return [2, 2, 2];
|
|
228
268
|
}
|
|
229
269
|
}
|
|
230
270
|
}
|
|
231
|
-
});
|
|
271
|
+
}); // point layer size;
|
|
232
272
|
|
|
233
|
-
// point layer size;
|
|
234
273
|
this.styleAttributeService.registerStyleAttribute({
|
|
235
274
|
name: 'normal',
|
|
236
275
|
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 };
|
|
@@ -7,41 +7,52 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
|
7
7
|
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
8
8
|
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
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 { isNumber } from 'lodash';
|
|
14
17
|
import BaseModel from "../../core/BaseModel";
|
|
15
18
|
import { GlobelPointFillTriangulation } from "../../core/triangulation";
|
|
19
|
+
|
|
16
20
|
/* babel-plugin-inline-import '../shaders/earth/fill_frag.glsl' */
|
|
17
21
|
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 if(outer_df > antialiasblur + 0.018) discard;\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}\n";
|
|
22
|
+
|
|
18
23
|
/* babel-plugin-inline-import '../shaders/earth/fill_vert.glsl' */
|
|
19
24
|
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;\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;\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 */\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 // cal style mapping\n\n // unpack color(vec2)\n v_color = a_Color;\n\n // radius(16-bit)\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 // 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 gl_Position = u_ViewProjectionMatrix * vec4(a_Position + extrude * newSize * 0.1, 1.0);\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
20
25
|
import { mat4, vec3 } from 'gl-matrix';
|
|
26
|
+
|
|
21
27
|
var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
22
28
|
_inherits(FillModel, _BaseModel);
|
|
29
|
+
|
|
23
30
|
var _super = _createSuper(FillModel);
|
|
31
|
+
|
|
24
32
|
function FillModel() {
|
|
25
33
|
_classCallCheck(this, FillModel);
|
|
34
|
+
|
|
26
35
|
return _super.apply(this, arguments);
|
|
27
36
|
}
|
|
37
|
+
|
|
28
38
|
_createClass(FillModel, [{
|
|
29
39
|
key: "getUninforms",
|
|
30
40
|
value: function getUninforms() {
|
|
31
41
|
var _ref = this.layer.getLayerConfig(),
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
_ref$opacity = _ref.opacity,
|
|
43
|
+
opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
|
|
44
|
+
_ref$strokeOpacity = _ref.strokeOpacity,
|
|
45
|
+
strokeOpacity = _ref$strokeOpacity === void 0 ? 1 : _ref$strokeOpacity,
|
|
46
|
+
_ref$strokeWidth = _ref.strokeWidth,
|
|
47
|
+
strokeWidth = _ref$strokeWidth === void 0 ? 0 : _ref$strokeWidth,
|
|
48
|
+
_ref$stroke = _ref.stroke,
|
|
49
|
+
stroke = _ref$stroke === void 0 ? 'rgba(0,0,0,0)' : _ref$stroke,
|
|
50
|
+
_ref$offsets = _ref.offsets,
|
|
51
|
+
offsets = _ref$offsets === void 0 ? [0, 0] : _ref$offsets,
|
|
52
|
+
blend = _ref.blend,
|
|
53
|
+
_ref$blur = _ref.blur,
|
|
54
|
+
blur = _ref$blur === void 0 ? 0 : _ref$blur;
|
|
55
|
+
|
|
45
56
|
if (this.dataTextureTest && this.dataTextureNeedUpdate({
|
|
46
57
|
opacity: opacity,
|
|
47
58
|
strokeOpacity: strokeOpacity,
|
|
@@ -58,10 +69,12 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
58
69
|
offsets: offsets
|
|
59
70
|
});
|
|
60
71
|
var encodeData = this.layer.getEncodedData();
|
|
72
|
+
|
|
61
73
|
var _this$calDataFrame = this.calDataFrame(this.cellLength, encodeData, this.cellProperties),
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
74
|
+
data = _this$calDataFrame.data,
|
|
75
|
+
width = _this$calDataFrame.width,
|
|
76
|
+
height = _this$calDataFrame.height;
|
|
77
|
+
|
|
65
78
|
this.rowCount = height; // 当前数据纹理有多少行
|
|
66
79
|
|
|
67
80
|
this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
|
|
@@ -80,6 +93,7 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
80
93
|
height: 1
|
|
81
94
|
});
|
|
82
95
|
}
|
|
96
|
+
|
|
83
97
|
return {
|
|
84
98
|
u_blur: blur,
|
|
85
99
|
u_additive: blend === 'additive' ? 1.0 : 0.0,
|
|
@@ -97,10 +111,11 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
97
111
|
key: "getAnimateUniforms",
|
|
98
112
|
value: function getAnimateUniforms() {
|
|
99
113
|
var _ref2 = this.layer.getLayerConfig(),
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
114
|
+
_ref2$animateOption = _ref2.animateOption,
|
|
115
|
+
animateOption = _ref2$animateOption === void 0 ? {
|
|
116
|
+
enable: false
|
|
117
|
+
} : _ref2$animateOption;
|
|
118
|
+
|
|
104
119
|
return {
|
|
105
120
|
u_animate: this.animateOption2Array(animateOption),
|
|
106
121
|
u_time: this.layer.getLayerAnimateTime()
|
|
@@ -111,18 +126,23 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
111
126
|
value: function () {
|
|
112
127
|
var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
113
128
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
114
|
-
while (1)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
129
|
+
while (1) {
|
|
130
|
+
switch (_context.prev = _context.next) {
|
|
131
|
+
case 0:
|
|
132
|
+
return _context.abrupt("return", this.buildModels());
|
|
133
|
+
|
|
134
|
+
case 1:
|
|
135
|
+
case "end":
|
|
136
|
+
return _context.stop();
|
|
137
|
+
}
|
|
120
138
|
}
|
|
121
139
|
}, _callee, this);
|
|
122
140
|
}));
|
|
141
|
+
|
|
123
142
|
function initModels() {
|
|
124
143
|
return _initModels.apply(this, arguments);
|
|
125
144
|
}
|
|
145
|
+
|
|
126
146
|
return initModels;
|
|
127
147
|
}()
|
|
128
148
|
}, {
|
|
@@ -131,42 +151,48 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
131
151
|
var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
132
152
|
var model;
|
|
133
153
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
134
|
-
while (1)
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
+
while (1) {
|
|
155
|
+
switch (_context2.prev = _context2.next) {
|
|
156
|
+
case 0:
|
|
157
|
+
this.layer.triangulation = GlobelPointFillTriangulation;
|
|
158
|
+
_context2.next = 3;
|
|
159
|
+
return this.layer.buildLayerModel({
|
|
160
|
+
moduleName: 'pointEarthFill',
|
|
161
|
+
vertexShader: pointFillVert,
|
|
162
|
+
fragmentShader: pointFillFrag,
|
|
163
|
+
triangulation: GlobelPointFillTriangulation,
|
|
164
|
+
depth: {
|
|
165
|
+
enable: true
|
|
166
|
+
},
|
|
167
|
+
blend: this.getBlend()
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
case 3:
|
|
171
|
+
model = _context2.sent;
|
|
172
|
+
return _context2.abrupt("return", [model]);
|
|
173
|
+
|
|
174
|
+
case 5:
|
|
175
|
+
case "end":
|
|
176
|
+
return _context2.stop();
|
|
177
|
+
}
|
|
154
178
|
}
|
|
155
179
|
}, _callee2, this);
|
|
156
180
|
}));
|
|
181
|
+
|
|
157
182
|
function buildModels() {
|
|
158
183
|
return _buildModels.apply(this, arguments);
|
|
159
184
|
}
|
|
185
|
+
|
|
160
186
|
return buildModels;
|
|
161
187
|
}()
|
|
162
188
|
}, {
|
|
163
189
|
key: "clearModels",
|
|
164
190
|
value: function clearModels() {
|
|
165
191
|
var _this$dataTexture;
|
|
192
|
+
|
|
166
193
|
(_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
|
|
167
|
-
}
|
|
194
|
+
} // overwrite baseModel func
|
|
168
195
|
|
|
169
|
-
// overwrite baseModel func
|
|
170
196
|
}, {
|
|
171
197
|
key: "animateOption2Array",
|
|
172
198
|
value: function animateOption2Array(option) {
|
|
@@ -176,6 +202,7 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
176
202
|
key: "registerBuiltinAttributes",
|
|
177
203
|
value: function registerBuiltinAttributes() {
|
|
178
204
|
var _this = this;
|
|
205
|
+
|
|
179
206
|
this.styleAttributeService.registerStyleAttribute({
|
|
180
207
|
name: 'extrude',
|
|
181
208
|
type: AttributeType.Attribute,
|
|
@@ -190,9 +217,10 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
190
217
|
size: 3,
|
|
191
218
|
update: function update(feature, featureIdx, vertex, attributeIdx) {
|
|
192
219
|
var _vertex = _slicedToArray(vertex, 3),
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
220
|
+
x = _vertex[0],
|
|
221
|
+
y = _vertex[1],
|
|
222
|
+
z = _vertex[2];
|
|
223
|
+
|
|
196
224
|
var n1 = vec3.fromValues(0, 0, 1);
|
|
197
225
|
var n2 = vec3.fromValues(x, 0, z);
|
|
198
226
|
var xzReg = x >= 0 ? vec3.angle(n1, n2) : Math.PI * 2 - vec3.angle(n1, n2);
|
|
@@ -217,9 +245,8 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
217
245
|
return [extrude[extrudeIndex], extrude[extrudeIndex + 1], extrude[extrudeIndex + 2]];
|
|
218
246
|
}
|
|
219
247
|
}
|
|
220
|
-
});
|
|
248
|
+
}); // point layer size;
|
|
221
249
|
|
|
222
|
-
// point layer size;
|
|
223
250
|
this.styleAttributeService.registerStyleAttribute({
|
|
224
251
|
name: 'size',
|
|
225
252
|
type: AttributeType.Attribute,
|
|
@@ -234,13 +261,12 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
234
261
|
size: 1,
|
|
235
262
|
update: function update(feature) {
|
|
236
263
|
var _feature$size = feature.size,
|
|
237
|
-
|
|
264
|
+
size = _feature$size === void 0 ? 5 : _feature$size;
|
|
238
265
|
return Array.isArray(size) ? [size[0]] : [size];
|
|
239
266
|
}
|
|
240
267
|
}
|
|
241
|
-
});
|
|
268
|
+
}); // point layer size;
|
|
242
269
|
|
|
243
|
-
// point layer size;
|
|
244
270
|
this.styleAttributeService.registerStyleAttribute({
|
|
245
271
|
name: 'shape',
|
|
246
272
|
type: AttributeType.Attribute,
|
|
@@ -255,8 +281,10 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
255
281
|
size: 1,
|
|
256
282
|
update: function update(feature) {
|
|
257
283
|
var _feature$shape = feature.shape,
|
|
258
|
-
|
|
284
|
+
shape = _feature$shape === void 0 ? 2 : _feature$shape;
|
|
285
|
+
|
|
259
286
|
var shape2d = _this.layer.getLayerConfig().shape2d;
|
|
287
|
+
|
|
260
288
|
var shapeIndex = shape2d.indexOf(shape);
|
|
261
289
|
return [shapeIndex];
|
|
262
290
|
}
|
|
@@ -264,6 +292,8 @@ var FillModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
264
292
|
});
|
|
265
293
|
}
|
|
266
294
|
}]);
|
|
295
|
+
|
|
267
296
|
return FillModel;
|
|
268
297
|
}(BaseModel);
|
|
298
|
+
|
|
269
299
|
export { FillModel as default };
|