@antv/l7-layers 2.9.9 → 2.9.12
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/LICENSE.md +1 -1
- package/es/core/BaseLayer.d.ts +1 -0
- package/es/core/BaseLayer.js +13 -0
- package/es/core/BaseLayer.js.map +1 -1
- package/es/plugins/FeatureScalePlugin.js +35 -9
- package/es/plugins/FeatureScalePlugin.js.map +1 -1
- package/es/point/models/fill.d.ts +8 -1
- package/es/point/models/fill.js +49 -33
- package/es/point/models/fill.js.map +1 -1
- package/lib/core/BaseLayer.js +13 -0
- package/lib/core/BaseLayer.js.map +1 -1
- package/lib/plugins/FeatureScalePlugin.js +35 -9
- package/lib/plugins/FeatureScalePlugin.js.map +1 -1
- package/lib/point/models/fill.js +46 -32
- package/lib/point/models/fill.js.map +1 -1
- package/package.json +7 -7
package/es/point/models/fill.js
CHANGED
|
@@ -14,12 +14,12 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
14
14
|
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; } }
|
|
15
15
|
|
|
16
16
|
import { AttributeType, gl } from '@antv/l7-core';
|
|
17
|
-
import {
|
|
17
|
+
import { $window, getMask } from '@antv/l7-utils';
|
|
18
18
|
import BaseModel from '../../core/BaseModel';
|
|
19
19
|
import { GlobelPointFillTriangulation, PointFillTriangulation } from '../../core/triangulation';
|
|
20
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_aimate: [ 0, 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_aimate.z - u_aimate.y * u_time)), 0.0, 1.0);\n \n // TODO: \u6839\u636E\u53E0\u52A0\u6A21\u5F0F\u9009\u62E9\u6548\u679C\n if(u_additive > 0.0) {\n gl_FragColor *= intensity;\n // TODO: \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";
|
|
21
21
|
var pointFillFrag = "\nuniform float u_globel;\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;\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(u_globel > 0.0) {\n // TODO: \u5730\u7403\u6A21\u5F0F\u4E0B\u907F\u514D\u591A\u4F59\u7247\u5143\u7ED8\u5236\uFF0C\u540C\u65F6\u4E5F\u80FD\u907F\u514D\u6709\u7528\u7247\u5143\u5728\u900F\u660E\u4E14\u91CD\u53E0\u7684\u60C5\u51B5\u4E0B\u65E0\u6CD5\u5199\u5165\n // \u4ED8\u51FA\u7684\u4EE3\u4EF7\u662F\u8FB9\u7F18\u4F1A\u6709\u4E00\u4E9B\u952F\u9F7F\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
|
-
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 float u_globel;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float u_isMeter;\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;\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 float newSize = setPickingSize(a_Size);\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;\n\n // radius(16-bit)\n v_radius = newSize;\n\n // TODO: billboard\n // anti-alias\n // float antialiased_blur = -max(u_blur, antialiasblur);\n float antialiasblur = -max(2.0 / u_DevicePixelRatio /
|
|
22
|
+
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 float u_globel;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float u_meter2coord;\nuniform float u_meteryScale;\nuniform float u_isMeter;\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;\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) * u_meter2coord;\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;\n\n // radius(16-bit)\n v_radius = newSize;\n\n // TODO: billboard\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 if(u_isMeter < 1.0) {\n // \u4E0D\u4EE5\u7C73\u4E3A\u5B9E\u9645\u5355\u4F4D\n offset = project_pixel(offset);\n } else {\n // \u4EE5\u7C73\u4E3A\u5B9E\u9645\u5355\u4F4D\n if(newSize * pow(2.0, u_Zoom) < 48.0) {\n antialiasblur = max(antialiasblur, -0.05);\n } else if(newSize * pow(2.0, u_Zoom) < 128.0) {\n antialiasblur = max(antialiasblur, -0.6/pow(u_Zoom, 2.0));\n } else {\n antialiasblur = max(antialiasblur, -0.8/pow(u_Zoom, 2.0));\n }\n \n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n aPosition.x += offset.x / u_meteryScale;\n aPosition.y += offset.y;\n offset = vec2(0.0);\n }\n }\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 raiseHeight = u_raisingHeight;\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 raiseHeight = u_raisingHeight * mapboxZoomScale;\n }\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * vec4(project_pos.xy + offset, raiseHeight, 1.0);\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, u_raisingHeight, 1.0));\n }\n\n if(u_globel > 0.0) {\n gl_Position = u_ViewProjectionMatrix * vec4(a_Position + extrude * newSize * 0.1, 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";
|
|
23
23
|
import { Version } from '@antv/l7-maps';
|
|
24
24
|
import { mat4, vec3 } from 'gl-matrix';
|
|
25
25
|
|
|
@@ -41,8 +41,12 @@ var FillModel = function (_BaseModel) {
|
|
|
41
41
|
|
|
42
42
|
_defineProperty(_assertThisInitialized(_this), "meter2coord", 1);
|
|
43
43
|
|
|
44
|
+
_defineProperty(_assertThisInitialized(_this), "meteryScale", 1);
|
|
45
|
+
|
|
44
46
|
_defineProperty(_assertThisInitialized(_this), "isMeter", false);
|
|
45
47
|
|
|
48
|
+
_defineProperty(_assertThisInitialized(_this), "unit", 'l7size');
|
|
49
|
+
|
|
46
50
|
return _this;
|
|
47
51
|
}
|
|
48
52
|
|
|
@@ -64,7 +68,11 @@ var FillModel = function (_BaseModel) {
|
|
|
64
68
|
_ref$blur = _ref.blur,
|
|
65
69
|
blur = _ref$blur === void 0 ? 0 : _ref$blur,
|
|
66
70
|
_ref$raisingHeight = _ref.raisingHeight,
|
|
67
|
-
raisingHeight = _ref$raisingHeight === void 0 ? 0 : _ref$raisingHeight
|
|
71
|
+
raisingHeight = _ref$raisingHeight === void 0 ? 0 : _ref$raisingHeight,
|
|
72
|
+
_ref$unit = _ref.unit,
|
|
73
|
+
unit = _ref$unit === void 0 ? 'l7size' : _ref$unit;
|
|
74
|
+
|
|
75
|
+
this.updateUnit(unit);
|
|
68
76
|
|
|
69
77
|
if (this.dataTextureTest && this.dataTextureNeedUpdate({
|
|
70
78
|
opacity: opacity,
|
|
@@ -107,6 +115,8 @@ var FillModel = function (_BaseModel) {
|
|
|
107
115
|
|
|
108
116
|
return {
|
|
109
117
|
u_raisingHeight: Number(raisingHeight),
|
|
118
|
+
u_meter2coord: this.meter2coord,
|
|
119
|
+
u_meteryScale: this.meteryScale,
|
|
110
120
|
u_isMeter: Number(this.isMeter),
|
|
111
121
|
u_blur: blur,
|
|
112
122
|
u_additive: blend === 'additive' ? 1.0 : 0.0,
|
|
@@ -142,17 +152,7 @@ var FillModel = function (_BaseModel) {
|
|
|
142
152
|
}, {
|
|
143
153
|
key: "initModels",
|
|
144
154
|
value: function initModels() {
|
|
145
|
-
|
|
146
|
-
_ref3$unit = _ref3.unit,
|
|
147
|
-
unit = _ref3$unit === void 0 ? 'l7size' : _ref3$unit;
|
|
148
|
-
|
|
149
|
-
var version = this.mapService.version;
|
|
150
|
-
|
|
151
|
-
if (unit === 'meter' && version !== Version.L7MAP && version !== Version.GLOBEL) {
|
|
152
|
-
this.isMeter = true;
|
|
153
|
-
this.calMeter2Coord();
|
|
154
|
-
}
|
|
155
|
-
|
|
155
|
+
this.updateUnit('l7size');
|
|
156
156
|
return this.buildModels();
|
|
157
157
|
}
|
|
158
158
|
}, {
|
|
@@ -166,17 +166,20 @@ var FillModel = function (_BaseModel) {
|
|
|
166
166
|
|
|
167
167
|
var center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];
|
|
168
168
|
var version = this.mapService.version;
|
|
169
|
+
var mapboxContext = $window === null || $window === void 0 ? void 0 : $window.mapboxgl;
|
|
169
170
|
|
|
170
|
-
if (version === Version.MAPBOX &&
|
|
171
|
-
var coord =
|
|
171
|
+
if (version === Version.MAPBOX && mapboxContext !== null && mapboxContext !== void 0 && mapboxContext.MercatorCoordinate) {
|
|
172
|
+
var coord = mapboxContext.MercatorCoordinate.fromLngLat({
|
|
172
173
|
lng: center[0],
|
|
173
174
|
lat: center[1]
|
|
174
175
|
}, 0);
|
|
175
|
-
var
|
|
176
|
-
var
|
|
177
|
-
var westCoord = new window.mapboxgl.MercatorCoordinate(coord.x - offsetInMercatorCoordinateUnits, coord.y, coord.z);
|
|
176
|
+
var offsetInMercatorCoordinateUnits = coord.meterInMercatorCoordinateUnits();
|
|
177
|
+
var westCoord = new mapboxContext.MercatorCoordinate(coord.x - offsetInMercatorCoordinateUnits, coord.y, coord.z);
|
|
178
178
|
var westLnglat = westCoord.toLngLat();
|
|
179
|
+
var southCoord = new mapboxContext.MercatorCoordinate(coord.x, coord.y - offsetInMercatorCoordinateUnits, coord.z);
|
|
180
|
+
var southLnglat = southCoord.toLngLat();
|
|
179
181
|
this.meter2coord = center[0] - westLnglat.lng;
|
|
182
|
+
this.meteryScale = (southLnglat.lat - center[1]) / this.meter2coord;
|
|
180
183
|
return;
|
|
181
184
|
}
|
|
182
185
|
|
|
@@ -191,15 +194,15 @@ var FillModel = function (_BaseModel) {
|
|
|
191
194
|
}, {
|
|
192
195
|
key: "buildModels",
|
|
193
196
|
value: function buildModels() {
|
|
194
|
-
var
|
|
195
|
-
|
|
196
|
-
mask =
|
|
197
|
-
|
|
198
|
-
maskInside =
|
|
199
|
-
|
|
200
|
-
animateOption =
|
|
197
|
+
var _ref3 = this.layer.getLayerConfig(),
|
|
198
|
+
_ref3$mask = _ref3.mask,
|
|
199
|
+
mask = _ref3$mask === void 0 ? false : _ref3$mask,
|
|
200
|
+
_ref3$maskInside = _ref3.maskInside,
|
|
201
|
+
maskInside = _ref3$maskInside === void 0 ? true : _ref3$maskInside,
|
|
202
|
+
_ref3$animateOption = _ref3.animateOption,
|
|
203
|
+
animateOption = _ref3$animateOption === void 0 ? {
|
|
201
204
|
enable: false
|
|
202
|
-
} :
|
|
205
|
+
} : _ref3$animateOption;
|
|
203
206
|
|
|
204
207
|
var _this$getShaders = this.getShaders(animateOption),
|
|
205
208
|
frag = _this$getShaders.frag,
|
|
@@ -217,11 +220,7 @@ var FillModel = function (_BaseModel) {
|
|
|
217
220
|
enable: isGlobel
|
|
218
221
|
},
|
|
219
222
|
blend: this.getBlend(),
|
|
220
|
-
stencil: getMask(mask, maskInside)
|
|
221
|
-
cull: {
|
|
222
|
-
enable: true,
|
|
223
|
-
face: getCullFace(this.mapService.version)
|
|
224
|
-
}
|
|
223
|
+
stencil: getMask(mask, maskInside)
|
|
225
224
|
})];
|
|
226
225
|
}
|
|
227
226
|
}, {
|
|
@@ -332,7 +331,7 @@ var FillModel = function (_BaseModel) {
|
|
|
332
331
|
update: function update(feature, featureIdx, vertex, attributeIdx) {
|
|
333
332
|
var _feature$size = feature.size,
|
|
334
333
|
size = _feature$size === void 0 ? 5 : _feature$size;
|
|
335
|
-
return Array.isArray(size) ? [size[0]
|
|
334
|
+
return Array.isArray(size) ? [size[0]] : [size];
|
|
336
335
|
}
|
|
337
336
|
}
|
|
338
337
|
});
|
|
@@ -359,6 +358,23 @@ var FillModel = function (_BaseModel) {
|
|
|
359
358
|
}
|
|
360
359
|
});
|
|
361
360
|
}
|
|
361
|
+
}, {
|
|
362
|
+
key: "updateUnit",
|
|
363
|
+
value: function updateUnit(unit) {
|
|
364
|
+
var version = this.mapService.version;
|
|
365
|
+
|
|
366
|
+
if (this.unit !== unit) {
|
|
367
|
+
if (this.unit !== 'meter' && unit === 'meter' && version !== Version.L7MAP && version !== Version.GLOBEL) {
|
|
368
|
+
this.isMeter = true;
|
|
369
|
+
this.calMeter2Coord();
|
|
370
|
+
} else if (this.unit === 'meter' && unit !== 'meter') {
|
|
371
|
+
this.isMeter = false;
|
|
372
|
+
this.meter2coord = 1;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
this.unit = unit;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
362
378
|
}]);
|
|
363
379
|
|
|
364
380
|
return FillModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/point/models/fill.ts"],"names":["AttributeType","gl","getCullFace","getMask","BaseModel","GlobelPointFillTriangulation","PointFillTriangulation","Version","mat4","vec3","FillModel","layer","getLayerConfig","opacity","strokeOpacity","strokeWidth","stroke","offsets","blend","blur","raisingHeight","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","LUMINANCE","type","FLOAT","u_raisingHeight","Number","u_isMeter","isMeter","u_blur","u_additive","u_globel","mapService","version","GLOBEL","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_stroke_opacity","u_stroke_width","u_stroke_color","getStrokeColor","u_offsets","isOffsetStatic","animateOption","enable","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","styleAttributeService","createAttributesAndIndices","unit","L7MAP","calMeter2Coord","buildModels","getSource","extent","minLng","minLat","maxLng","maxLat","center","MAPBOX","window","mapboxgl","MercatorCoordinate","coord","fromLngLat","lng","lat","offsetInMeters","offsetInMercatorCoordinateUnits","meterInMercatorCoordinateUnits","westCoord","x","y","z","westLnglat","toLngLat","meter2coord","m1","meterToCoord","m2","Boolean","mask","maskInside","getShaders","frag","vert","isGlobel","triangulation","buildLayerModel","moduleName","vertexShader","fragmentShader","depth","getBlend","stencil","cull","face","waveFillFrag","pointFillVert","pointFillFrag","destroy","option","speed","rings","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","extrude","n1","fromValues","n2","xzReg","angle","Math","PI","yReg","asin","m","create","rotateY","rotateX","v1","transformMat4","normalize","v2","v3","v4","extrudeIndex","Array","isArray","shape","shape2d","shapeIndex","indexOf"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IAttribute,\n IElements,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n} from '@antv/l7-core';\nimport { getCullFace, getMask } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport {\n GlobelPointFillTriangulation,\n PointFillTriangulation,\n} from '../../core/triangulation';\n// animate pointLayer shader - support animate\nimport waveFillFrag from '../shaders/animate/wave_frag.glsl';\n// static pointLayer shader - not support animate\nimport pointFillFrag from '../shaders/fill_frag.glsl';\nimport pointFillVert from '../shaders/fill_vert.glsl';\n\nimport { Version } from '@antv/l7-maps';\nimport { mat4, vec3 } from 'gl-matrix';\nexport default class FillModel extends BaseModel {\n public meter2coord: number = 1;\n private isMeter: boolean = false;\n public getUninforms(): IModelUniform {\n const {\n opacity = 1,\n strokeOpacity = 1,\n strokeWidth = 0,\n stroke = 'rgba(0,0,0,0)',\n offsets = [0, 0],\n blend,\n blur = 0,\n raisingHeight = 0,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n })\n ) {\n // 判断当前的样式中哪些是需要进行数据映射的,哪些是常量,同时计算用于构建数据纹理的一些中间变量\n this.judgeStyleAttributes({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n });\n\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_raisingHeight: Number(raisingHeight),\n\n u_isMeter: Number(this.isMeter),\n u_blur: blur,\n\n u_additive: blend === 'additive' ? 1.0 : 0.0,\n u_globel: this.mapService.version === Version.GLOBEL ? 1 : 0,\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_stroke_opacity: isNumber(strokeOpacity) ? strokeOpacity : 1.0,\n u_stroke_width: isNumber(strokeWidth) ? strokeWidth : 1.0,\n u_stroke_color: this.getStrokeColor(stroke),\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n public getAnimateUniforms(): IModelUniform {\n const {\n animateOption = { enable: false },\n } = this.layer.getLayerConfig() as ILayerConfig;\n return {\n u_aimate: this.animateOption2Array(animateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public getAttribute(): {\n attributes: {\n [attributeName: string]: IAttribute;\n };\n elements: IElements;\n } {\n return this.styleAttributeService.createAttributesAndIndices(\n this.layer.getEncodedData(),\n PointFillTriangulation,\n );\n }\n\n public initModels(): IModel[] {\n const {\n unit = 'l7size',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { version } = this.mapService;\n if (\n unit === 'meter' &&\n version !== Version.L7MAP &&\n version !== Version.GLOBEL\n ) {\n this.isMeter = true;\n this.calMeter2Coord();\n }\n\n return this.buildModels();\n }\n\n /**\n * 计算等面积点图层(unit meter)笛卡尔坐标标度与世界坐标标度的比例\n * @returns\n */\n public calMeter2Coord() {\n const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;\n const center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];\n\n const { version } = this.mapService;\n if (version === Version.MAPBOX && window.mapboxgl.MercatorCoordinate) {\n const coord = window.mapboxgl.MercatorCoordinate.fromLngLat(\n { lng: center[0], lat: center[1] },\n 0,\n );\n const offsetInMeters = 1;\n const offsetInMercatorCoordinateUnits =\n offsetInMeters * coord.meterInMercatorCoordinateUnits();\n const westCoord = new window.mapboxgl.MercatorCoordinate(\n coord.x - offsetInMercatorCoordinateUnits,\n coord.y,\n coord.z,\n );\n const westLnglat = westCoord.toLngLat();\n\n this.meter2coord = center[0] - westLnglat.lng;\n return;\n }\n\n // @ts-ignore\n const m1 = this.mapService.meterToCoord(center, [minLng, minLat]);\n // @ts-ignore\n const m2 = this.mapService.meterToCoord(center, [\n maxLng === minLng ? maxLng + 0.1 : maxLng,\n maxLat === minLat ? minLat + 0.1 : maxLat,\n ]);\n this.meter2coord = (m1 + m2) / 2;\n if (!Boolean(this.meter2coord)) {\n // Tip: 兼容单个数据导致的 m1、m2 为 NaN\n this.meter2coord = 7.70681090738883;\n }\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n animateOption = { enable: false },\n } = this.layer.getLayerConfig() as Partial<\n ILayerConfig & IPointLayerStyleOptions\n >;\n const { frag, vert, type } = this.getShaders(animateOption);\n\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n this.layer.triangulation = isGlobel\n ? GlobelPointFillTriangulation\n : PointFillTriangulation;\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointfill_' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: isGlobel\n ? GlobelPointFillTriangulation\n : PointFillTriangulation,\n depth: { enable: isGlobel },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n cull: {\n enable: true,\n face: getCullFace(this.mapService.version),\n },\n }),\n ];\n }\n\n /**\n * 根据 animateOption 的值返回对应的 shader 代码\n * @returns\n */\n public getShaders(\n animateOption: Partial<IAnimateOption>,\n ): { frag: string; vert: string; type: string } {\n if (animateOption.enable) {\n switch (animateOption.type) {\n case 'wave':\n return {\n frag: waveFillFrag,\n vert: pointFillVert,\n type: 'wave',\n };\n default:\n return {\n frag: waveFillFrag,\n vert: pointFillVert,\n type: 'wave',\n };\n }\n } else {\n return {\n frag: pointFillFrag,\n vert: pointFillVert,\n type: 'normal',\n };\n }\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n // overwrite baseModel func\n protected animateOption2Array(option: Partial<IAnimateOption>): number[] {\n return [option.enable ? 0 : 1.0, option.speed || 1, option.rings || 3, 0];\n }\n protected registerBuiltinAttributes() {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n let extrude;\n // 地球模式\n if (isGlobel) {\n const [x, y, z] = vertex;\n const n1 = vec3.fromValues(0, 0, 1);\n const n2 = vec3.fromValues(x, 0, z);\n\n const xzReg =\n x >= 0 ? vec3.angle(n1, n2) : Math.PI * 2 - vec3.angle(n1, n2);\n\n const yReg = Math.PI * 2 - Math.asin(y / 100);\n\n const m = mat4.create();\n mat4.rotateY(m, m, xzReg);\n mat4.rotateX(m, m, yReg);\n\n const v1 = vec3.fromValues(1, 1, 0);\n vec3.transformMat4(v1, v1, m);\n vec3.normalize(v1, v1);\n\n const v2 = vec3.fromValues(-1, 1, 0);\n vec3.transformMat4(v2, v2, m);\n vec3.normalize(v2, v2);\n\n const v3 = vec3.fromValues(-1, -1, 0);\n vec3.transformMat4(v3, v3, m);\n vec3.normalize(v3, v3);\n\n const v4 = vec3.fromValues(1, -1, 0);\n vec3.transformMat4(v4, v4, m);\n vec3.normalize(v4, v4);\n\n extrude = [...v1, ...v2, ...v3, ...v4];\n } else {\n // 平面模式\n extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n }\n\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 5 } = feature;\n // console.log('featureIdx', featureIdx, feature)\n return Array.isArray(size)\n ? [size[0] * this.meter2coord]\n : [(size as number) * this.meter2coord];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'shape',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Shape',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { shape = 2 } = feature;\n const shape2d = this.layer.getLayerConfig().shape2d as string[];\n const shapeIndex = shape2d.indexOf(shape as string);\n return [shapeIndex];\n },\n },\n });\n }\n}\n"],"file":"fill.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/point/models/fill.ts"],"names":["AttributeType","gl","$window","getMask","BaseModel","GlobelPointFillTriangulation","PointFillTriangulation","Version","mat4","vec3","FillModel","layer","getLayerConfig","opacity","strokeOpacity","strokeWidth","stroke","offsets","blend","blur","raisingHeight","unit","updateUnit","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","LUMINANCE","type","FLOAT","u_raisingHeight","Number","u_meter2coord","meter2coord","u_meteryScale","meteryScale","u_isMeter","isMeter","u_blur","u_additive","u_globel","mapService","version","GLOBEL","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_stroke_opacity","u_stroke_width","u_stroke_color","getStrokeColor","u_offsets","isOffsetStatic","animateOption","enable","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","styleAttributeService","createAttributesAndIndices","buildModels","getSource","extent","minLng","minLat","maxLng","maxLat","center","mapboxContext","mapboxgl","MAPBOX","MercatorCoordinate","coord","fromLngLat","lng","lat","offsetInMercatorCoordinateUnits","meterInMercatorCoordinateUnits","westCoord","x","y","z","westLnglat","toLngLat","southCoord","southLnglat","m1","meterToCoord","m2","Boolean","mask","maskInside","getShaders","frag","vert","isGlobel","triangulation","buildLayerModel","moduleName","vertexShader","fragmentShader","depth","getBlend","stencil","waveFillFrag","pointFillVert","pointFillFrag","destroy","option","speed","rings","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","extrude","n1","fromValues","n2","xzReg","angle","Math","PI","yReg","asin","m","create","rotateY","rotateX","v1","transformMat4","normalize","v2","v3","v4","extrudeIndex","Array","isArray","shape","shape2d","shapeIndex","indexOf","L7MAP","calMeter2Coord"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IAttribute,\n IElements,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n} from '@antv/l7-core';\nimport { $window, getCullFace, getMask } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport {\n GlobelPointFillTriangulation,\n PointFillTriangulation,\n} from '../../core/triangulation';\n// animate pointLayer shader - support animate\nimport waveFillFrag from '../shaders/animate/wave_frag.glsl';\n// static pointLayer shader - not support animate\nimport pointFillFrag from '../shaders/fill_frag.glsl';\nimport pointFillVert from '../shaders/fill_vert.glsl';\n\nimport { Version } from '@antv/l7-maps';\nimport { mat4, vec3 } from 'gl-matrix';\nexport default class FillModel extends BaseModel {\n private meter2coord: number = 1;\n private meteryScale: number = 1; // 兼容 mapbox\n private isMeter: boolean = false;\n\n private unit: string = 'l7size';\n public getUninforms(): IModelUniform {\n const {\n opacity = 1,\n strokeOpacity = 1,\n strokeWidth = 0,\n stroke = 'rgba(0,0,0,0)',\n offsets = [0, 0],\n blend,\n blur = 0,\n raisingHeight = 0,\n unit = 'l7size',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n this.updateUnit(unit);\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n })\n ) {\n // 判断当前的样式中哪些是需要进行数据映射的,哪些是常量,同时计算用于构建数据纹理的一些中间变量\n this.judgeStyleAttributes({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n });\n\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_raisingHeight: Number(raisingHeight),\n\n u_meter2coord: this.meter2coord,\n u_meteryScale: this.meteryScale,\n u_isMeter: Number(this.isMeter),\n u_blur: blur,\n\n u_additive: blend === 'additive' ? 1.0 : 0.0,\n u_globel: this.mapService.version === Version.GLOBEL ? 1 : 0,\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_stroke_opacity: isNumber(strokeOpacity) ? strokeOpacity : 1.0,\n u_stroke_width: isNumber(strokeWidth) ? strokeWidth : 1.0,\n u_stroke_color: this.getStrokeColor(stroke),\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n public getAnimateUniforms(): IModelUniform {\n const {\n animateOption = { enable: false },\n } = this.layer.getLayerConfig() as ILayerConfig;\n return {\n u_aimate: this.animateOption2Array(animateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public getAttribute(): {\n attributes: {\n [attributeName: string]: IAttribute;\n };\n elements: IElements;\n } {\n return this.styleAttributeService.createAttributesAndIndices(\n this.layer.getEncodedData(),\n PointFillTriangulation,\n );\n }\n\n public initModels(): IModel[] {\n this.updateUnit('l7size');\n\n return this.buildModels();\n }\n\n /**\n * 计算等面积点图层(unit meter)笛卡尔坐标标度与世界坐标标度的比例\n * @returns\n */\n public calMeter2Coord() {\n const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;\n const center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];\n\n const { version } = this.mapService;\n const mapboxContext = $window?.mapboxgl;\n if (version === Version.MAPBOX && mapboxContext?.MercatorCoordinate) {\n // 参考:\n // https://docs.mapbox.com/mapbox-gl-js/api/geography/#mercatorcoordinate#meterinmercatorcoordinateunits\n const coord = mapboxContext.MercatorCoordinate.fromLngLat(\n { lng: center[0], lat: center[1] },\n 0,\n );\n const offsetInMercatorCoordinateUnits = coord.meterInMercatorCoordinateUnits();\n const westCoord = new mapboxContext.MercatorCoordinate(\n coord.x - offsetInMercatorCoordinateUnits,\n coord.y,\n coord.z,\n );\n const westLnglat = westCoord.toLngLat();\n\n const southCoord = new mapboxContext.MercatorCoordinate(\n coord.x,\n coord.y - offsetInMercatorCoordinateUnits,\n coord.z,\n );\n const southLnglat = southCoord.toLngLat();\n\n this.meter2coord = center[0] - westLnglat.lng;\n\n this.meteryScale = (southLnglat.lat - center[1]) / this.meter2coord;\n return;\n }\n\n const m1 = this.mapService.meterToCoord(center, [minLng, minLat]);\n const m2 = this.mapService.meterToCoord(center, [\n maxLng === minLng ? maxLng + 0.1 : maxLng,\n maxLat === minLat ? minLat + 0.1 : maxLat,\n ]);\n this.meter2coord = (m1 + m2) / 2;\n if (!Boolean(this.meter2coord)) {\n // Tip: 兼容单个数据导致的 m1、m2 为 NaN\n this.meter2coord = 7.70681090738883;\n }\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n animateOption = { enable: false },\n } = this.layer.getLayerConfig() as Partial<\n ILayerConfig & IPointLayerStyleOptions\n >;\n const { frag, vert, type } = this.getShaders(animateOption);\n\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n this.layer.triangulation = isGlobel\n ? GlobelPointFillTriangulation\n : PointFillTriangulation;\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointfill_' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: isGlobel\n ? GlobelPointFillTriangulation\n : PointFillTriangulation,\n depth: { enable: isGlobel },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n /**\n * 根据 animateOption 的值返回对应的 shader 代码\n * @returns\n */\n public getShaders(\n animateOption: Partial<IAnimateOption>,\n ): { frag: string; vert: string; type: string } {\n if (animateOption.enable) {\n switch (animateOption.type) {\n case 'wave':\n return {\n frag: waveFillFrag,\n vert: pointFillVert,\n type: 'wave',\n };\n default:\n return {\n frag: waveFillFrag,\n vert: pointFillVert,\n type: 'wave',\n };\n }\n } else {\n return {\n frag: pointFillFrag,\n vert: pointFillVert,\n type: 'normal',\n };\n }\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n // overwrite baseModel func\n protected animateOption2Array(option: Partial<IAnimateOption>): number[] {\n return [option.enable ? 0 : 1.0, option.speed || 1, option.rings || 3, 0];\n }\n protected registerBuiltinAttributes() {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n let extrude;\n // 地球模式\n if (isGlobel) {\n const [x, y, z] = vertex;\n const n1 = vec3.fromValues(0, 0, 1);\n const n2 = vec3.fromValues(x, 0, z);\n\n const xzReg =\n x >= 0 ? vec3.angle(n1, n2) : Math.PI * 2 - vec3.angle(n1, n2);\n\n const yReg = Math.PI * 2 - Math.asin(y / 100);\n\n const m = mat4.create();\n mat4.rotateY(m, m, xzReg);\n mat4.rotateX(m, m, yReg);\n\n const v1 = vec3.fromValues(1, 1, 0);\n vec3.transformMat4(v1, v1, m);\n vec3.normalize(v1, v1);\n\n const v2 = vec3.fromValues(-1, 1, 0);\n vec3.transformMat4(v2, v2, m);\n vec3.normalize(v2, v2);\n\n const v3 = vec3.fromValues(-1, -1, 0);\n vec3.transformMat4(v3, v3, m);\n vec3.normalize(v3, v3);\n\n const v4 = vec3.fromValues(1, -1, 0);\n vec3.transformMat4(v4, v4, m);\n vec3.normalize(v4, v4);\n\n extrude = [...v1, ...v2, ...v3, ...v4];\n } else {\n // 平面模式\n extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n }\n\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 5 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'shape',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Shape',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { shape = 2 } = feature;\n const shape2d = this.layer.getLayerConfig().shape2d as string[];\n const shapeIndex = shape2d.indexOf(shape as string);\n return [shapeIndex];\n },\n },\n });\n }\n\n /**\n * 判断是否更新点图层的计量单位\n * @param unit\n */\n private updateUnit(unit: string) {\n const { version } = this.mapService;\n if (this.unit !== unit) {\n // l7size => meter\n if (\n this.unit !== 'meter' &&\n unit === 'meter' &&\n version !== Version.L7MAP &&\n version !== Version.GLOBEL\n ) {\n this.isMeter = true;\n this.calMeter2Coord();\n // meter => l7size\n } else if (this.unit === 'meter' && unit !== 'meter') {\n this.isMeter = false;\n this.meter2coord = 1;\n }\n this.unit = unit;\n }\n }\n}\n"],"file":"fill.js"}
|
package/lib/core/BaseLayer.js
CHANGED
|
@@ -217,6 +217,8 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
|
|
|
217
217
|
}, {
|
|
218
218
|
key: "updateLayerConfig",
|
|
219
219
|
value: function updateLayerConfig(configToUpdate) {
|
|
220
|
+
this.updateRawConfig(configToUpdate);
|
|
221
|
+
|
|
220
222
|
if (!this.inited) {
|
|
221
223
|
this.needUpdateConfig = _objectSpread(_objectSpread({}, this.needUpdateConfig), configToUpdate);
|
|
222
224
|
} else {
|
|
@@ -1245,6 +1247,17 @@ var BaseLayer = (_dec = (0, _l7Core.lazyInject)(_l7Core.TYPES.IGlobalConfigServi
|
|
|
1245
1247
|
value: function getDefaultConfig() {
|
|
1246
1248
|
return {};
|
|
1247
1249
|
}
|
|
1250
|
+
}, {
|
|
1251
|
+
key: "updateRawConfig",
|
|
1252
|
+
value: function updateRawConfig(configToUpdate) {
|
|
1253
|
+
var _this8 = this;
|
|
1254
|
+
|
|
1255
|
+
Object.keys(configToUpdate).map(function (key) {
|
|
1256
|
+
if (_this8.rawConfig[key] && _this8.rawConfig[key] !== configToUpdate[key]) {
|
|
1257
|
+
_this8.rawConfig[key] = configToUpdate[key];
|
|
1258
|
+
}
|
|
1259
|
+
});
|
|
1260
|
+
}
|
|
1248
1261
|
}, {
|
|
1249
1262
|
key: "reRender",
|
|
1250
1263
|
value: function reRender() {
|