@antv/l7-layers 2.6.3 → 2.6.7
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/core/BaseLayer.js +4 -0
- package/es/core/BaseLayer.js.map +1 -1
- package/es/core/triangulation.d.ts +5 -0
- package/es/core/triangulation.js +30 -1
- package/es/core/triangulation.js.map +1 -1
- package/es/point/models/extrude.d.ts +6 -0
- package/es/point/models/extrude.js +42 -5
- package/es/point/models/extrude.js.map +1 -1
- package/es/polygon/models/extrude.js +8 -2
- package/es/polygon/models/extrude.js.map +1 -1
- package/es/polygon/models/fill.d.ts +2 -0
- package/es/polygon/models/fill.js +52 -10
- package/es/polygon/models/fill.js.map +1 -1
- package/es/utils/geo.d.ts +9 -0
- package/es/utils/geo.js +29 -0
- package/es/utils/geo.js.map +1 -1
- package/lib/core/BaseLayer.js +4 -0
- package/lib/core/BaseLayer.js.map +1 -1
- package/lib/core/triangulation.js +32 -0
- package/lib/core/triangulation.js.map +1 -1
- package/lib/point/models/extrude.js +43 -5
- package/lib/point/models/extrude.js.map +1 -1
- package/lib/polygon/models/extrude.js +8 -2
- package/lib/polygon/models/extrude.js.map +1 -1
- package/lib/polygon/models/fill.js +50 -8
- package/lib/polygon/models/fill.js.map +1 -1
- package/lib/utils/geo.js +31 -0
- package/lib/utils/geo.js.map +1 -1
- package/package.json +5 -5
|
@@ -30,6 +30,8 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
30
30
|
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; } }
|
|
31
31
|
|
|
32
32
|
var polygonExtrudeFrag = "uniform float u_opacity: 1.0;\nvarying vec4 v_Color;\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n#pragma include \"picking\"\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n gl_FragColor = v_Color;\n // gl_FragColor.a *= u_opacity;\n gl_FragColor.a *= opacity;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
33
|
+
var polygonExtrudePickLightFrag = "uniform float u_opacity: 1.0;\nvarying vec4 v_Color;\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n#pragma include \"picking\"\nvarying float v_lightWeight;\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n gl_FragColor = v_Color;\n // gl_FragColor.a *= u_opacity;\n gl_FragColor.a *= opacity;\n gl_FragColor = filterColorWithLight(gl_FragColor, v_lightWeight);\n}\n";
|
|
34
|
+
var polygonExtrudePickLightVert = "precision highp float;\n\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Normal;\nattribute float a_Size;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nuniform float u_opacity: 1.0;\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\nvarying float v_lightWeight;\n\nvoid main() {\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 // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n vec4 pos = vec4(a_Position.xy, a_Position.z * a_Size, 1.0);\n vec4 project_pos = project_position(pos);\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n // gl_Position = u_Mvp * (vec4(project_pos.xyz * vec3(1.0, 1.0, -1.0), 1.0));\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n float lightWeight = calc_lighting(pos);\n v_lightWeight = lightWeight;\n // v_Color = a_Color;\n v_Color = vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
33
35
|
var polygonExtrudeVert = "precision highp float;\n\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Normal;\nattribute float a_Size;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nuniform float u_opacity: 1.0;\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\nvoid main() {\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 // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n vec4 pos = vec4(a_Position.xy, a_Position.z * a_Size, 1.0);\n vec4 project_pos = project_position(pos);\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n // gl_Position = u_Mvp * (vec4(project_pos.xyz * vec3(1.0, 1.0, -1.0), 1.0));\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n float lightWeight = calc_lighting(pos);\n // v_Color = a_Color;\n v_Color = vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
34
36
|
|
|
35
37
|
var ExtrudeModel = function (_BaseModel) {
|
|
@@ -94,10 +96,14 @@ var ExtrudeModel = function (_BaseModel) {
|
|
|
94
96
|
}, {
|
|
95
97
|
key: "buildModels",
|
|
96
98
|
value: function buildModels() {
|
|
99
|
+
var _ref2 = this.layer.getLayerConfig(),
|
|
100
|
+
_ref2$pickLight = _ref2.pickLight,
|
|
101
|
+
pickLight = _ref2$pickLight === void 0 ? false : _ref2$pickLight;
|
|
102
|
+
|
|
97
103
|
return [this.layer.buildLayerModel({
|
|
98
104
|
moduleName: 'polygonExtrude',
|
|
99
|
-
vertexShader: polygonExtrudeVert,
|
|
100
|
-
fragmentShader: polygonExtrudeFrag,
|
|
105
|
+
vertexShader: pickLight ? polygonExtrudePickLightVert : polygonExtrudeVert,
|
|
106
|
+
fragmentShader: pickLight ? polygonExtrudePickLightFrag : polygonExtrudeFrag,
|
|
101
107
|
triangulation: _triangulation.PolygonExtrudeTriangulation
|
|
102
108
|
})];
|
|
103
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/polygon/models/extrude.ts"],"names":["ExtrudeModel","layer","getLayerConfig","opacity","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","buildModels","buildLayerModel","moduleName","vertexShader","polygonExtrudeVert","fragmentShader","polygonExtrudeFrag","triangulation","PolygonExtrudeTriangulation","destroy","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","normal","DYNAMIC_DRAW","Array","isArray","BaseModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA
|
|
1
|
+
{"version":3,"sources":["../../../src/polygon/models/extrude.ts"],"names":["ExtrudeModel","layer","getLayerConfig","opacity","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","buildModels","pickLight","buildLayerModel","moduleName","vertexShader","polygonExtrudePickLightVert","polygonExtrudeVert","fragmentShader","polygonExtrudePickLightFrag","polygonExtrudeFrag","triangulation","PolygonExtrudeTriangulation","destroy","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","normal","DYNAMIC_DRAW","Array","isArray","BaseModel"],"mappings":"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","sourcesContent":["import { AttributeType, gl, IEncodeFeature, IModel } from '@antv/l7-core';\nimport { isNumber } from 'lodash';\nimport BaseModel, { styleSingle } from '../../core/BaseModel';\nimport { PolygonExtrudeTriangulation } from '../../core/triangulation';\nimport polygonExtrudeFrag from '../shaders/polygon_extrude_frag.glsl';\nimport polygonExtrudePickLightFrag from '../shaders/polygon_extrude_picklight_frag.glsl';\nimport polygonExtrudePickLightVert from '../shaders/polygon_extrude_picklight_vert.glsl';\nimport polygonExtrudeVert from '../shaders/polygon_extrude_vert.glsl';\n\ninterface IPolygonLayerStyleOptions {\n opacity: styleSingle;\n pickLight: boolean;\n}\nexport default class ExtrudeModel extends BaseModel {\n public getUninforms() {\n const {\n opacity = 1,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n };\n }\n\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n pickLight = false,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'polygonExtrude',\n vertexShader: pickLight\n ? polygonExtrudePickLightVert\n : polygonExtrudeVert,\n fragmentShader: pickLight\n ? polygonExtrudePickLightFrag\n : polygonExtrudeFrag,\n triangulation: PolygonExtrudeTriangulation,\n }),\n ];\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\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 = 10 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n }\n}\n"],"file":"extrude.js"}
|
|
@@ -29,8 +29,10 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
29
29
|
|
|
30
30
|
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; } }
|
|
31
31
|
|
|
32
|
-
var polygon_frag = "uniform float u_opacity: 1.0;\nvarying vec4 v_Color;\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\n#pragma include \"picking\"\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n gl_FragColor = v_Color;\n
|
|
33
|
-
var
|
|
32
|
+
var polygon_frag = "uniform float u_opacity: 1.0;\nvarying vec4 v_Color;\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\n#pragma include \"picking\"\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n gl_FragColor = v_Color;\n gl_FragColor.a *= opacity;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
33
|
+
var polygon_linear_frag = "uniform float u_opacity: 1.0;\nvarying vec4 v_Color;\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\n#pragma include \"picking\"\nuniform float u_opacitylinear: 0.0;\nuniform float u_dir: 1.0;\nvarying vec3 v_linear;\nvarying vec2 v_pos;\n\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n gl_FragColor = v_Color;\n \n if(u_opacitylinear > 0.0) {\n gl_FragColor.a *= u_dir == 1.0 ? 1.0 - length(v_pos - v_linear.xy)/v_linear.z : length(v_pos - v_linear.xy)/v_linear.z;\n }\n\n gl_FragColor.a *= opacity;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
34
|
+
var polygon_linear_vert = "attribute vec4 a_Color;\nattribute vec3 a_Position;\n\n\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nuniform float u_opacity: 1.0;\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 \"picking\"\n\nuniform float u_opacitylinear: 0.0;\n\nattribute vec3 a_linear;\nvarying vec3 v_linear;\nvarying vec2 v_pos;\n\nvoid main() {\n if(u_opacitylinear > 0.0) {\n v_linear = a_linear;\n v_pos = a_Position.xy;\n }\n \n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\nstyleMappingMat = 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 // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n v_Color = a_Color;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}";
|
|
35
|
+
var polygon_vert = "attribute vec4 a_Color;\nattribute vec3 a_Position;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nuniform float u_opacity: 1.0;\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 \"picking\"\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\nstyleMappingMat = 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 // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n v_Color = a_Color;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}\n\n";
|
|
34
36
|
|
|
35
37
|
var FillModel = function (_BaseModel) {
|
|
36
38
|
(0, _inherits2.default)(FillModel, _BaseModel);
|
|
@@ -47,7 +49,12 @@ var FillModel = function (_BaseModel) {
|
|
|
47
49
|
value: function getUninforms() {
|
|
48
50
|
var _ref = this.layer.getLayerConfig(),
|
|
49
51
|
_ref$opacity = _ref.opacity,
|
|
50
|
-
opacity = _ref$opacity === void 0 ? 1 : _ref$opacity
|
|
52
|
+
opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
|
|
53
|
+
_ref$opacityLinear = _ref.opacityLinear,
|
|
54
|
+
opacityLinear = _ref$opacityLinear === void 0 ? {
|
|
55
|
+
enable: false,
|
|
56
|
+
dir: 'in'
|
|
57
|
+
} : _ref$opacityLinear;
|
|
51
58
|
|
|
52
59
|
if (this.dataTextureTest && this.dataTextureNeedUpdate({
|
|
53
60
|
opacity: opacity
|
|
@@ -83,7 +90,9 @@ var FillModel = function (_BaseModel) {
|
|
|
83
90
|
return {
|
|
84
91
|
u_dataTexture: this.dataTexture,
|
|
85
92
|
u_cellTypeLayout: this.getCellTypeLayout(),
|
|
86
|
-
u_opacity: (0, _isNumber2.default)(opacity) ? opacity : 1.0
|
|
93
|
+
u_opacity: (0, _isNumber2.default)(opacity) ? opacity : 1.0,
|
|
94
|
+
u_opacitylinear: Number(opacityLinear.enable),
|
|
95
|
+
u_dir: opacityLinear.dir === 'in' ? 1.0 : 0.0
|
|
87
96
|
};
|
|
88
97
|
}
|
|
89
98
|
}, {
|
|
@@ -94,11 +103,18 @@ var FillModel = function (_BaseModel) {
|
|
|
94
103
|
}, {
|
|
95
104
|
key: "buildModels",
|
|
96
105
|
value: function buildModels() {
|
|
106
|
+
var _ref2 = this.layer.getLayerConfig(),
|
|
107
|
+
_ref2$opacityLinear = _ref2.opacityLinear,
|
|
108
|
+
opacityLinear = _ref2$opacityLinear === void 0 ? {
|
|
109
|
+
enable: false,
|
|
110
|
+
dir: 'in'
|
|
111
|
+
} : _ref2$opacityLinear;
|
|
112
|
+
|
|
97
113
|
return [this.layer.buildLayerModel({
|
|
98
114
|
moduleName: 'polygon',
|
|
99
|
-
vertexShader: polygon_vert,
|
|
100
|
-
fragmentShader: polygon_frag,
|
|
101
|
-
triangulation: _triangulation.polygonTriangulation,
|
|
115
|
+
vertexShader: opacityLinear.enable ? polygon_linear_vert : polygon_vert,
|
|
116
|
+
fragmentShader: opacityLinear.enable ? polygon_linear_frag : polygon_frag,
|
|
117
|
+
triangulation: opacityLinear.enable ? _triangulation.polygonTriangulationWithCenter : _triangulation.polygonTriangulation,
|
|
102
118
|
blend: this.getBlend(),
|
|
103
119
|
depth: {
|
|
104
120
|
enable: false
|
|
@@ -114,7 +130,33 @@ var FillModel = function (_BaseModel) {
|
|
|
114
130
|
}
|
|
115
131
|
}, {
|
|
116
132
|
key: "registerBuiltinAttributes",
|
|
117
|
-
value: function registerBuiltinAttributes() {
|
|
133
|
+
value: function registerBuiltinAttributes() {
|
|
134
|
+
var _ref3 = this.layer.getLayerConfig(),
|
|
135
|
+
_ref3$opacityLinear = _ref3.opacityLinear,
|
|
136
|
+
opacityLinear = _ref3$opacityLinear === void 0 ? {
|
|
137
|
+
enable: false,
|
|
138
|
+
dir: 'in'
|
|
139
|
+
} : _ref3$opacityLinear;
|
|
140
|
+
|
|
141
|
+
if (opacityLinear.enable) {
|
|
142
|
+
this.styleAttributeService.registerStyleAttribute({
|
|
143
|
+
name: 'linear',
|
|
144
|
+
type: _l7Core.AttributeType.Attribute,
|
|
145
|
+
descriptor: {
|
|
146
|
+
name: 'a_linear',
|
|
147
|
+
buffer: {
|
|
148
|
+
usage: _l7Core.gl.STATIC_DRAW,
|
|
149
|
+
data: [],
|
|
150
|
+
type: _l7Core.gl.FLOAT
|
|
151
|
+
},
|
|
152
|
+
size: 3,
|
|
153
|
+
update: function update(feature, featureIdx, vertex, attributeIdx, normal) {
|
|
154
|
+
return [vertex[3], vertex[4], vertex[5]];
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
118
160
|
}]);
|
|
119
161
|
return FillModel;
|
|
120
162
|
}(_BaseModel2.default);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/polygon/models/fill.ts"],"names":["FillModel","layer","getLayerConfig","opacity","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","buildModels","buildLayerModel","moduleName","vertexShader","polygon_vert","fragmentShader","polygon_frag","triangulation","polygonTriangulation","blend","getBlend","depth","
|
|
1
|
+
{"version":3,"sources":["../../../src/polygon/models/fill.ts"],"names":["FillModel","layer","getLayerConfig","opacity","opacityLinear","enable","dir","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_opacitylinear","Number","u_dir","buildModels","buildLayerModel","moduleName","vertexShader","polygon_linear_vert","polygon_vert","fragmentShader","polygon_linear_frag","polygon_frag","triangulation","polygonTriangulationWithCenter","polygonTriangulation","blend","getBlend","depth","destroy","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","normal","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n ILayer,\n ILayerModel,\n ILayerPlugin,\n IModel,\n IStyleAttributeService,\n lazyInject,\n TYPES,\n} from '@antv/l7-core';\nimport { isNumber } from 'lodash';\nimport BaseModel, { styleSingle } from '../../core/BaseModel';\nimport {\n polygonTriangulation,\n polygonTriangulationWithCenter,\n} from '../../core/triangulation';\nimport polygon_frag from '../shaders/polygon_frag.glsl';\nimport polygon_linear_frag from '../shaders/polygon_linear_frag.glsl';\nimport polygon_linear_vert from '../shaders/polygon_linear_vert.glsl';\nimport polygon_vert from '../shaders/polygon_vert.glsl';\n\ninterface IPolygonLayerStyleOptions {\n opacity: styleSingle;\n\n opacityLinear: {\n enable: boolean;\n dir: string;\n };\n}\nexport default class FillModel extends BaseModel {\n public getUninforms() {\n const {\n opacity = 1,\n opacityLinear = {\n enable: false,\n dir: 'in',\n },\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n // u_opacity: opacity,\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n\n u_opacitylinear: Number(opacityLinear.enable),\n u_dir: opacityLinear.dir === 'in' ? 1.0 : 0.0,\n };\n }\n\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n opacityLinear = {\n enable: false,\n dir: 'in',\n },\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'polygon',\n vertexShader: opacityLinear.enable ? polygon_linear_vert : polygon_vert,\n fragmentShader: opacityLinear.enable\n ? polygon_linear_frag\n : polygon_frag,\n // triangulation: polygonTriangulation,\n triangulation: opacityLinear.enable\n ? polygonTriangulationWithCenter\n : polygonTriangulation,\n blend: this.getBlend(),\n depth: { enable: false },\n }),\n ];\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n protected registerBuiltinAttributes() {\n const {\n opacityLinear = {\n enable: false,\n dir: 'in',\n },\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n if (opacityLinear.enable) {\n this.styleAttributeService.registerStyleAttribute({\n name: 'linear',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_linear',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n // center[0] center[1] radius\n return [vertex[3], vertex[4], vertex[5]];\n },\n },\n });\n }\n }\n}\n"],"file":"fill.js"}
|
package/lib/utils/geo.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.calculateCentroid = calculateCentroid;
|
|
9
|
+
exports.calculatePointsCenterAndRadius = calculatePointsCenterAndRadius;
|
|
9
10
|
|
|
10
11
|
var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
|
|
11
12
|
|
|
@@ -31,4 +32,34 @@ function calculateCentroid(coord) {
|
|
|
31
32
|
throw new Error('当前数据不支持标注');
|
|
32
33
|
}
|
|
33
34
|
}
|
|
35
|
+
|
|
36
|
+
function calculatePointsCenterAndRadius(points) {
|
|
37
|
+
var maxX = points[0];
|
|
38
|
+
var maxY = points[1];
|
|
39
|
+
var minX = points[0];
|
|
40
|
+
var minY = points[1];
|
|
41
|
+
var xCount = 0;
|
|
42
|
+
var yCount = 0;
|
|
43
|
+
var pCount = 0;
|
|
44
|
+
|
|
45
|
+
for (var i = 0; i < points.length; i += 2) {
|
|
46
|
+
var x = points[i];
|
|
47
|
+
var y = points[i + 1];
|
|
48
|
+
|
|
49
|
+
if (x && y) {
|
|
50
|
+
maxX = Math.max(x, maxX);
|
|
51
|
+
maxY = Math.max(y, maxY);
|
|
52
|
+
minX = Math.min(x, minX);
|
|
53
|
+
minY = Math.min(y, minY);
|
|
54
|
+
xCount += x;
|
|
55
|
+
yCount += y;
|
|
56
|
+
pCount++;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
center: [xCount / pCount, yCount / pCount],
|
|
62
|
+
radius: Math.sqrt(Math.pow(maxX - minX, 2) + Math.pow(maxY - minY, 2)) / 2
|
|
63
|
+
};
|
|
64
|
+
}
|
|
34
65
|
//# sourceMappingURL=geo.js.map
|
package/lib/utils/geo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/geo.ts"],"names":["calculateCentroid","coord","Error","coords","xSum","ySum","len","forEach","coor","pos"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/utils/geo.ts"],"names":["calculateCentroid","coord","Error","coords","xSum","ySum","len","forEach","coor","pos","calculatePointsCenterAndRadius","points","maxX","maxY","minX","minY","xCount","yCount","pCount","i","length","x","y","Math","max","min","center","radius","sqrt","pow"],"mappings":";;;;;;;;;;;;AAEO,SAASA,iBAAT,CACLC,KADK,EAEK;AAEV,MAAI,wBAASA,KAAK,CAAC,CAAD,CAAd,CAAJ,EAAwB;AACtB,WAAOA,KAAP;AACD,GAFD,MAEO,IAAI,wBAASA,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,CAAT,CAAJ,EAA2B;AAChC,UAAM,IAAIC,KAAJ,CAAU,WAAV,CAAN;AACD,GAFM,MAEA,IAAI,wBAASD,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAT,CAAJ,EAA8B;AACnC,QAAME,MAAM,GAAGF,KAAf;AACA,QAAIG,IAAI,GAAG,CAAX;AACA,QAAIC,IAAI,GAAG,CAAX;AACA,QAAIC,GAAG,GAAG,CAAV;AACAH,IAAAA,MAAM,CAACI,OAAP,CAAe,UAACC,IAAD,EAAsB;AACnCA,MAAAA,IAAI,CAACD,OAAL,CAAa,UAACE,GAAD,EAAS;AACpBL,QAAAA,IAAI,IAAIK,GAAG,CAAC,CAAD,CAAX;AACAJ,QAAAA,IAAI,IAAII,GAAG,CAAC,CAAD,CAAX;AACAH,QAAAA,GAAG;AACJ,OAJD;AAKD,KAND;AAOA,WAAO,CAACF,IAAI,GAAGE,GAAR,EAAaD,IAAI,GAAGC,GAApB,EAAyB,CAAzB,CAAP;AACD,GAbM,MAaA;AACL,UAAM,IAAIJ,KAAJ,CAAU,WAAV,CAAN;AACD;AACF;;AAOM,SAASQ,8BAAT,CAAwCC,MAAxC,EAA0D;AAC/D,MAAIC,IAAI,GAAGD,MAAM,CAAC,CAAD,CAAjB;AACA,MAAIE,IAAI,GAAGF,MAAM,CAAC,CAAD,CAAjB;AACA,MAAIG,IAAI,GAAGH,MAAM,CAAC,CAAD,CAAjB;AACA,MAAII,IAAI,GAAGJ,MAAM,CAAC,CAAD,CAAjB;AACA,MAAIK,MAAM,GAAG,CAAb;AACA,MAAIC,MAAM,GAAG,CAAb;AACA,MAAIC,MAAM,GAAG,CAAb;;AAEA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGR,MAAM,CAACS,MAA3B,EAAmCD,CAAC,IAAI,CAAxC,EAA2C;AACzC,QAAME,CAAC,GAAGV,MAAM,CAACQ,CAAD,CAAhB;AACA,QAAMG,CAAC,GAAGX,MAAM,CAACQ,CAAC,GAAG,CAAL,CAAhB;;AACA,QAAIE,CAAC,IAAIC,CAAT,EAAY;AACVV,MAAAA,IAAI,GAAGW,IAAI,CAACC,GAAL,CAASH,CAAT,EAAYT,IAAZ,CAAP;AACAC,MAAAA,IAAI,GAAGU,IAAI,CAACC,GAAL,CAASF,CAAT,EAAYT,IAAZ,CAAP;AACAC,MAAAA,IAAI,GAAGS,IAAI,CAACE,GAAL,CAASJ,CAAT,EAAYP,IAAZ,CAAP;AACAC,MAAAA,IAAI,GAAGQ,IAAI,CAACE,GAAL,CAASH,CAAT,EAAYP,IAAZ,CAAP;AACAC,MAAAA,MAAM,IAAIK,CAAV;AACAJ,MAAAA,MAAM,IAAIK,CAAV;AACAJ,MAAAA,MAAM;AACP;AACF;;AACD,SAAO;AACLQ,IAAAA,MAAM,EAAE,CAACV,MAAM,GAAGE,MAAV,EAAkBD,MAAM,GAAGC,MAA3B,CADH;AAELS,IAAAA,MAAM,EAAEJ,IAAI,CAACK,IAAL,CAAUL,IAAI,CAACM,GAAL,CAASjB,IAAI,GAAGE,IAAhB,EAAsB,CAAtB,IAA2BS,IAAI,CAACM,GAAL,CAAShB,IAAI,GAAGE,IAAhB,EAAsB,CAAtB,CAArC,IAAiE;AAFpE,GAAP;AAID","sourcesContent":["type Position = number[];\nimport { isNumber } from 'lodash';\nexport function calculateCentroid(\n coord: Position | Position[] | Position[][],\n): Position {\n // let pos = coord as Position;\n if (isNumber(coord[0])) {\n return coord as Position;\n } else if (isNumber(coord[0][0])) {\n throw new Error('当前数据不支持标注');\n } else if (isNumber(coord[0][0][0])) {\n const coords = coord as Position[][];\n let xSum = 0;\n let ySum = 0;\n let len = 0;\n coords.forEach((coor: Position[]) => {\n coor.forEach((pos) => {\n xSum += pos[0];\n ySum += pos[1];\n len++;\n });\n });\n return [xSum / len, ySum / len, 0];\n } else {\n throw new Error('当前数据不支持标注');\n }\n}\n\n/**\n * 计算\n * @param points\n * @returns\n */\nexport function calculatePointsCenterAndRadius(points: number[]) {\n let maxX = points[0];\n let maxY = points[1];\n let minX = points[0];\n let minY = points[1];\n let xCount = 0;\n let yCount = 0;\n let pCount = 0;\n\n for (let i = 0; i < points.length; i += 2) {\n const x = points[i];\n const y = points[i + 1];\n if (x && y) {\n maxX = Math.max(x, maxX);\n maxY = Math.max(y, maxY);\n minX = Math.min(x, minX);\n minY = Math.min(y, minY);\n xCount += x;\n yCount += y;\n pCount++;\n }\n }\n return {\n center: [xCount / pCount, yCount / pCount],\n radius: Math.sqrt(Math.pow(maxX - minX, 2) + Math.pow(maxY - minY, 2)) / 2,\n };\n}\n"],"file":"geo.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antv/l7-layers",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.7",
|
|
4
4
|
"description": "L7's collection of built-in layers",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"license": "ISC",
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@antv/geo-coord": "^1.0.8",
|
|
27
|
-
"@antv/l7-core": "^2.6.
|
|
28
|
-
"@antv/l7-source": "^2.6.
|
|
29
|
-
"@antv/l7-utils": "^2.6.
|
|
27
|
+
"@antv/l7-core": "^2.6.7",
|
|
28
|
+
"@antv/l7-source": "^2.6.7",
|
|
29
|
+
"@antv/l7-utils": "^2.6.7",
|
|
30
30
|
"@babel/runtime": "^7.7.7",
|
|
31
31
|
"@mapbox/martini": "^0.2.0",
|
|
32
32
|
"@turf/meta": "^6.0.2",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@types/gl-matrix": "^2.4.5",
|
|
53
53
|
"@types/lodash": "^4.14.138"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "70a22219e71c4170e3f679dab22a7301af7e2d45",
|
|
56
56
|
"publishConfig": {
|
|
57
57
|
"access": "public"
|
|
58
58
|
}
|