@antv/l7-layers 2.7.36 → 2.8.2

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.
@@ -0,0 +1,211 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/createClass";
4
+ import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
5
+ import _inherits from "@babel/runtime/helpers/inherits";
6
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
7
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
+ import _isNumber from "lodash/isNumber";
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
+
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
+
15
+ import { AttributeType, gl } from '@antv/l7-core';
16
+ import { getMask } from '@antv/l7-utils';
17
+ import BaseModel from '../../core/BaseModel';
18
+ import { polygonTriangulation } from '../../core/triangulation';
19
+ var water_frag = "\nuniform sampler2D u_texture;\nuniform float u_time;\nuniform float u_speed: 1.0;\nuniform float u_opacity: 1.0;\n\nvarying vec4 v_Color;\nvarying vec2 v_uv;\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\n#pragma include \"picking\"\n\n float rand(vec2 n) { return 0.5 + 0.5 * fract(sin(dot(n.xy, vec2(12.9898, 78.233)))* 43758.5453); }\n\n float water(vec3 p) {\n float t = u_time * u_speed;\n p.z += t * 2.; p.x += t * 2.;\n vec3 c1 = texture2D(u_texture, p.xz / 30.).xyz;\n p.z += t * 3.; p.x += t * 0.52;\n vec3 c2 = texture2D(u_texture, p.xz / 30.).xyz;\n p.z += t * 4.; p.x += t * 0.8;\n vec3 c3 = texture2D(u_texture, p.xz / 30.).xyz;\n c1 += c2 - c3;\n float z = (c1.x + c1.y + c1.z) / 3.;\n return p.y + z / 4.;\n }\n\n float map(vec3 p) {\n float d = 100.0;\n d = water(p);\n return d;\n }\n\n float intersect(vec3 ro, vec3 rd) {\n float d = 0.0;\n for (int i = 0; i <= 100; i++) {\n float h = map(ro + rd * d);\n if (h < 0.1) return d;\n d += h;\n }\n return 0.0;\n }\n \n vec3 norm(vec3 p) {\n float eps = .1;\n return normalize(vec3(\n map(p + vec3(eps, 0, 0)) - map(p + vec3(-eps, 0, 0)),\n map(p + vec3(0, eps, 0)) - map(p + vec3(0, -eps, 0)),\n map(p + vec3(0, 0, eps)) - map(p + vec3(0, 0, -eps))\n ));\n } \n\n float calSpc() {\n vec3 l1 = normalize(vec3(1, 1, 1));\n vec3 ro = vec3(-3, 20, -8);\n vec3 rc = vec3(0, 0, 0);\n vec3 ww = normalize(rc - ro);\n vec3 uu = normalize(cross(vec3(0,1,0), ww));\n vec3 vv = normalize(cross(rc - ro, uu));\n vec3 rd = normalize(uu * v_uv.x + vv * v_uv.y + ww);\n float d = intersect(ro, rd);\n vec3 p = ro + rd * d;\n vec3 n = norm(p);\n float spc = pow(max(0.0, dot(reflect(l1, n), rd)), 30.0);\n return spc;\n }\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n gl_FragColor = v_Color;\n gl_FragColor.a *= opacity;\n\n float spc = calSpc();\n gl_FragColor += spc * 0.4;\n}\n";
20
+ var water_vert = "attribute vec4 a_Color;\nattribute vec2 a_uv;\nattribute vec3 a_Position;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nvarying vec2 v_uv;\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 v_uv = a_uv;\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";
21
+
22
+ var WaterModel = function (_BaseModel) {
23
+ _inherits(WaterModel, _BaseModel);
24
+
25
+ var _super = _createSuper(WaterModel);
26
+
27
+ function WaterModel() {
28
+ var _this;
29
+
30
+ _classCallCheck(this, WaterModel);
31
+
32
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
33
+ args[_key] = arguments[_key];
34
+ }
35
+
36
+ _this = _super.call.apply(_super, [this].concat(args));
37
+
38
+ _defineProperty(_assertThisInitialized(_this), "texture", void 0);
39
+
40
+ return _this;
41
+ }
42
+
43
+ _createClass(WaterModel, [{
44
+ key: "getUninforms",
45
+ value: function getUninforms() {
46
+ var _ref = this.layer.getLayerConfig(),
47
+ _ref$opacity = _ref.opacity,
48
+ opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
49
+ _ref$speed = _ref.speed,
50
+ speed = _ref$speed === void 0 ? 0.5 : _ref$speed;
51
+
52
+ if (this.dataTextureTest && this.dataTextureNeedUpdate({
53
+ opacity: opacity
54
+ })) {
55
+ this.judgeStyleAttributes({
56
+ opacity: opacity
57
+ });
58
+ var encodeData = this.layer.getEncodedData();
59
+
60
+ var _this$calDataFrame = this.calDataFrame(this.cellLength, encodeData, this.cellProperties),
61
+ data = _this$calDataFrame.data,
62
+ width = _this$calDataFrame.width,
63
+ height = _this$calDataFrame.height;
64
+
65
+ this.rowCount = height;
66
+ this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
67
+ flipY: true,
68
+ data: data,
69
+ format: gl.LUMINANCE,
70
+ type: gl.FLOAT,
71
+ width: width,
72
+ height: height
73
+ }) : this.createTexture2D({
74
+ flipY: true,
75
+ data: [1],
76
+ format: gl.LUMINANCE,
77
+ type: gl.FLOAT,
78
+ width: 1,
79
+ height: 1
80
+ });
81
+ }
82
+
83
+ return {
84
+ u_texture: this.texture,
85
+ u_dataTexture: this.dataTexture,
86
+ u_cellTypeLayout: this.getCellTypeLayout(),
87
+ u_speed: speed,
88
+ u_opacity: _isNumber(opacity) ? opacity : 1.0
89
+ };
90
+ }
91
+ }, {
92
+ key: "getAnimateUniforms",
93
+ value: function getAnimateUniforms() {
94
+ return {
95
+ u_time: this.layer.getLayerAnimateTime()
96
+ };
97
+ }
98
+ }, {
99
+ key: "initModels",
100
+ value: function initModels() {
101
+ this.loadTexture();
102
+ return this.buildModels();
103
+ }
104
+ }, {
105
+ key: "buildModels",
106
+ value: function buildModels() {
107
+ var _ref2 = this.layer.getLayerConfig(),
108
+ _ref2$mask = _ref2.mask,
109
+ mask = _ref2$mask === void 0 ? false : _ref2$mask,
110
+ _ref2$maskInside = _ref2.maskInside,
111
+ maskInside = _ref2$maskInside === void 0 ? true : _ref2$maskInside;
112
+
113
+ return [this.layer.buildLayerModel({
114
+ moduleName: 'polygon_water',
115
+ vertexShader: water_vert,
116
+ fragmentShader: water_frag,
117
+ triangulation: polygonTriangulation,
118
+ depth: {
119
+ enable: false
120
+ },
121
+ stencil: getMask(mask, maskInside)
122
+ })];
123
+ }
124
+ }, {
125
+ key: "clearModels",
126
+ value: function clearModels() {
127
+ var _this$dataTexture;
128
+
129
+ this.texture.destroy();
130
+ (_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
131
+ }
132
+ }, {
133
+ key: "registerBuiltinAttributes",
134
+ value: function registerBuiltinAttributes() {
135
+ var bbox = this.layer.getSource().extent;
136
+
137
+ var _bbox = _slicedToArray(bbox, 4),
138
+ minLng = _bbox[0],
139
+ minLat = _bbox[1],
140
+ maxLng = _bbox[2],
141
+ maxLat = _bbox[3];
142
+
143
+ var lngLen = maxLng - minLng;
144
+ var latLen = maxLat - minLat;
145
+ this.styleAttributeService.registerStyleAttribute({
146
+ name: 'linear',
147
+ type: AttributeType.Attribute,
148
+ descriptor: {
149
+ name: 'a_uv',
150
+ buffer: {
151
+ usage: gl.STATIC_DRAW,
152
+ data: [],
153
+ type: gl.FLOAT
154
+ },
155
+ size: 2,
156
+ update: function update(feature, featureIdx, vertex, attributeIdx, normal) {
157
+ var _vertex = _slicedToArray(vertex, 2),
158
+ lng = _vertex[0],
159
+ lat = _vertex[1];
160
+
161
+ return [(lng - minLng) / lngLen, (lat - minLat) / latLen];
162
+ }
163
+ }
164
+ });
165
+ }
166
+ }, {
167
+ key: "loadTexture",
168
+ value: function loadTexture() {
169
+ var _this2 = this;
170
+
171
+ var _ref3 = this.layer.getLayerConfig(),
172
+ waterTexture = _ref3.waterTexture;
173
+
174
+ var createTexture2D = this.rendererService.createTexture2D;
175
+ this.texture = createTexture2D({
176
+ height: 0,
177
+ width: 0
178
+ });
179
+ var image = new Image();
180
+ image.crossOrigin = '';
181
+
182
+ if (waterTexture) {
183
+ console.warn('L7 recommend:https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*EojwT4VzSiYAAAAAAAAAAAAAARQnAQ');
184
+ image.src = waterTexture;
185
+ } else {
186
+ image.src = 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*EojwT4VzSiYAAAAAAAAAAAAAARQnAQ';
187
+ }
188
+
189
+ image.onload = function () {
190
+ _this2.texture = createTexture2D({
191
+ data: image,
192
+ width: image.width,
193
+ height: image.height,
194
+ wrapS: gl.MIRRORED_REPEAT,
195
+ wrapT: gl.MIRRORED_REPEAT,
196
+ min: gl.LINEAR,
197
+ mag: gl.LINEAR
198
+ });
199
+
200
+ _this2.layerService.updateLayerRenderList();
201
+
202
+ _this2.layerService.renderLayers();
203
+ };
204
+ }
205
+ }]);
206
+
207
+ return WaterModel;
208
+ }(BaseModel);
209
+
210
+ export { WaterModel as default };
211
+ //# sourceMappingURL=water.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/polygon/models/water.ts"],"names":["AttributeType","gl","getMask","BaseModel","polygonTriangulation","WaterModel","layer","getLayerConfig","opacity","speed","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","LUMINANCE","type","FLOAT","u_texture","texture","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_speed","u_opacity","u_time","getLayerAnimateTime","loadTexture","buildModels","mask","maskInside","buildLayerModel","moduleName","vertexShader","water_vert","fragmentShader","water_frag","triangulation","depth","enable","stencil","destroy","bbox","getSource","extent","minLng","minLat","maxLng","maxLat","lngLen","latLen","styleAttributeService","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","normal","lng","lat","waterTexture","rendererService","image","Image","crossOrigin","console","warn","src","onload","wrapS","MIRRORED_REPEAT","wrapT","min","LINEAR","mag","layerService","updateLayerRenderList","renderLayers"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPolygonLayerStyleOptions } from '../../core/interface';\nimport { polygonTriangulation } from '../../core/triangulation';\nimport water_frag from '../shaders/water/polygon_water_frag.glsl';\nimport water_vert from '../shaders/water/polygon_water_vert.glsl';\nexport default class WaterModel extends BaseModel {\n private texture: ITexture2D;\n public getUninforms() {\n const {\n opacity = 1,\n speed = 0.5,\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_texture: this.texture,\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n u_speed: speed,\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n };\n }\n\n public getAnimateUniforms(): IModelUniform {\n return {\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.loadTexture();\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'polygon_water',\n vertexShader: water_vert,\n fragmentShader: water_frag,\n triangulation: polygonTriangulation,\n depth: { enable: false },\n\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n public clearModels() {\n this.texture.destroy();\n this.dataTexture?.destroy();\n }\n\n protected registerBuiltinAttributes() {\n const bbox = this.layer.getSource().extent;\n const [minLng, minLat, maxLng, maxLat] = bbox;\n const lngLen = maxLng - minLng;\n const latLen = maxLat - minLat;\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'linear',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n const [lng, lat] = vertex;\n return [(lng - minLng) / lngLen, (lat - minLat) / latLen];\n },\n },\n });\n }\n\n private loadTexture() {\n const {\n waterTexture,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n const image = new Image();\n image.crossOrigin = '';\n if (waterTexture) {\n // custom texture\n console.warn(\n 'L7 recommend:https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*EojwT4VzSiYAAAAAAAAAAAAAARQnAQ',\n );\n image.src = waterTexture;\n } else {\n // default texture\n image.src =\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*EojwT4VzSiYAAAAAAAAAAAAAARQnAQ';\n }\n\n image.onload = () => {\n this.texture = createTexture2D({\n data: image,\n width: image.width,\n height: image.height,\n wrapS: gl.MIRRORED_REPEAT,\n wrapT: gl.MIRRORED_REPEAT,\n min: gl.LINEAR,\n mag: gl.LINEAR,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n };\n }\n}\n"],"file":"water.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/interface.ts"],"names":["lineStyleType"],"mappings":";;;;;;IASYA,a;;;WAAAA,a;AAAAA,EAAAA,a,CAAAA,a;AAAAA,EAAAA,a,CAAAA,a;GAAAA,a,6BAAAA,a","sourcesContent":["import { IAnimateOption } from '@antv/l7-core';\nimport { generateColorRamp, getMask, IColorRamp } from '@antv/l7-utils';\nimport { styleColor, styleOffset, styleSingle } from '../core/BaseModel';\nimport {\n anchorType,\n getGlyphQuads,\n IGlyphQuad,\n shapeText,\n} from '../utils/symbol-layout';\nexport enum lineStyleType {\n 'solid' = 0.0,\n 'dash' = 1.0,\n}\n\nexport interface ILineLayerStyleOptions {\n opacity: styleSingle;\n lineType?: keyof typeof lineStyleType; // 可选参数、线类型(all - dash/solid)\n dashArray?: [number, number]; // 可选参数、虚线间隔\n segmentNumber?: number;\n\n forward?: boolean; // 可选参数、是否反向(arcLine)\n lineTexture?: boolean; // 可选参数、是否开启纹理贴图功能(all)\n iconStep?: number; // 可选参数、纹理贴图步长(all)\n iconStepCount?: number; // 可选参数、纹理贴图间隔\n textureBlend?: string; // 可选参数、供给纹理贴图使用(all)\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n thetaOffset?: number; // 可选参数、设置弧线的偏移量\n\n globalArcHeight?: number; // 可选参数、地球模式下 3D 弧线的高度\n vertexHeightScale?: number; // 可选参数、lineLayer vertex height scale\n\n borderWidth?: number; // 可选参数 线边框宽度\n borderColor?: string; // 可选参数 线边框颜色\n\n heightfixed?: boolean; // 可选参数 高度是否固定\n\n mask?: boolean; // 可选参数 时候允许蒙层\n maskInside?: boolean; // 可选参数 控制图层是否显示在蒙层的内部\n}\n\nexport interface IPointLayerStyleOptions {\n opacity: number;\n strokeOpacity: number;\n strokeWidth: number;\n stroke: string;\n\n textOffset?: [number, number];\n textAnchor?: anchorType;\n spacing?: number;\n padding?: [number, number];\n halo?: number;\n gamma?: number;\n fontWeight?: string;\n fontFamily?: string;\n textAllowOverlap?: boolean;\n\n // cylinder\n pickLight?: boolean;\n depth?: boolean;\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n opacityLinear?: {\n enable: boolean;\n dir: string;\n };\n lightEnable: boolean;\n heightfixed?: boolean; // 圆柱体高度是否固定(不随 zoom 发生变化)\n\n offsets?: styleOffset;\n blend?: string;\n unit?: string;\n mask?: boolean;\n maskInside?: boolean;\n\n rotation?: number; // angle\n\n animateOption: IAnimateOption;\n}\n\nexport interface IPolygonLayerStyleOptions {\n opacity: styleSingle;\n\n opacityLinear: {\n enable: boolean;\n dir: string;\n };\n\n heightfixed?: boolean; // 挤出几何体高度是否固定(不随 zoom 发生变化)\n\n pickLight: boolean;\n mask?: boolean;\n maskInside?: boolean;\n}\n\nexport interface IImageLayerStyleOptions {\n opacity: number;\n mask?: boolean;\n maskInside?: boolean;\n}\n\nexport interface IHeatMapLayerStyleOptions {\n opacity: number;\n intensity: number;\n radius: number;\n angle: number;\n rampColors: IColorRamp;\n mask?: boolean;\n maskInside?: boolean;\n\n coverage?: number;\n}\n\nexport interface IRasterLayerStyleOptions {\n opacity: number;\n domain: [number, number];\n noDataValue: number;\n clampLow: boolean;\n clampHigh: boolean;\n rampColors: IColorRamp;\n mask?: boolean;\n maskInside?: boolean;\n}\n"],"file":"interface.js"}
1
+ {"version":3,"sources":["../../src/core/interface.ts"],"names":["lineStyleType"],"mappings":";;;;;;IASYA,a;;;WAAAA,a;AAAAA,EAAAA,a,CAAAA,a;AAAAA,EAAAA,a,CAAAA,a;GAAAA,a,6BAAAA,a","sourcesContent":["import { IAnimateOption } from '@antv/l7-core';\nimport { generateColorRamp, getMask, IColorRamp } from '@antv/l7-utils';\nimport { styleColor, styleOffset, styleSingle } from '../core/BaseModel';\nimport {\n anchorType,\n getGlyphQuads,\n IGlyphQuad,\n shapeText,\n} from '../utils/symbol-layout';\nexport enum lineStyleType {\n 'solid' = 0.0,\n 'dash' = 1.0,\n}\n\nexport interface ILineLayerStyleOptions {\n opacity: styleSingle;\n lineType?: keyof typeof lineStyleType; // 可选参数、线类型(all - dash/solid)\n dashArray?: [number, number]; // 可选参数、虚线间隔\n segmentNumber?: number;\n\n forward?: boolean; // 可选参数、是否反向(arcLine)\n lineTexture?: boolean; // 可选参数、是否开启纹理贴图功能(all)\n iconStep?: number; // 可选参数、纹理贴图步长(all)\n iconStepCount?: number; // 可选参数、纹理贴图间隔\n textureBlend?: string; // 可选参数、供给纹理贴图使用(all)\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n thetaOffset?: number; // 可选参数、设置弧线的偏移量\n\n globalArcHeight?: number; // 可选参数、地球模式下 3D 弧线的高度\n vertexHeightScale?: number; // 可选参数、lineLayer vertex height scale\n\n borderWidth?: number; // 可选参数 线边框宽度\n borderColor?: string; // 可选参数 线边框颜色\n\n heightfixed?: boolean; // 可选参数 高度是否固定\n\n mask?: boolean; // 可选参数 时候允许蒙层\n maskInside?: boolean; // 可选参数 控制图层是否显示在蒙层的内部\n}\n\nexport interface IPointLayerStyleOptions {\n opacity: number;\n strokeOpacity: number;\n strokeWidth: number;\n stroke: string;\n\n textOffset?: [number, number];\n textAnchor?: anchorType;\n spacing?: number;\n padding?: [number, number];\n halo?: number;\n gamma?: number;\n fontWeight?: string;\n fontFamily?: string;\n textAllowOverlap?: boolean;\n\n // cylinder\n pickLight?: boolean;\n depth?: boolean;\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n opacityLinear?: {\n enable: boolean;\n dir: string;\n };\n lightEnable: boolean;\n heightfixed?: boolean; // 圆柱体高度是否固定(不随 zoom 发生变化)\n\n offsets?: styleOffset;\n blend?: string;\n unit?: string;\n mask?: boolean;\n maskInside?: boolean;\n\n rotation?: number; // angle\n\n animateOption: IAnimateOption;\n}\n\nexport interface IPolygonLayerStyleOptions {\n opacity: styleSingle;\n\n opacityLinear: {\n enable: boolean;\n dir: string;\n };\n\n heightfixed?: boolean; // 挤出几何体高度是否固定(不随 zoom 发生变化)\n\n pickLight: boolean;\n mask?: boolean;\n maskInside?: boolean;\n\n // water\n waterTexture?: string;\n speed?: number;\n}\n\nexport interface IImageLayerStyleOptions {\n opacity: number;\n mask?: boolean;\n maskInside?: boolean;\n}\n\nexport interface IHeatMapLayerStyleOptions {\n opacity: number;\n intensity: number;\n radius: number;\n angle: number;\n rampColors: IColorRamp;\n mask?: boolean;\n maskInside?: boolean;\n\n coverage?: number;\n}\n\nexport interface IRasterLayerStyleOptions {\n opacity: number;\n domain: [number, number];\n noDataValue: number;\n clampLow: boolean;\n clampHigh: boolean;\n rampColors: IColorRamp;\n mask?: boolean;\n maskInside?: boolean;\n}\n"],"file":"interface.js"}
@@ -123,7 +123,7 @@ function LineTriangulation(feature) {
123
123
  } else {
124
124
  var path = coordinates;
125
125
 
126
- if (!Array.isArray(path[0][0])) {
126
+ if (path[0] && !Array.isArray(path[0][0])) {
127
127
  path = [coordinates];
128
128
  }
129
129
 
@@ -171,7 +171,7 @@ function SimpleLineTriangulation(feature) {
171
171
  } else {
172
172
  var path = coordinates;
173
173
 
174
- if (!Array.isArray(path[0][0])) {
174
+ if (path[0] && !Array.isArray(path[0][0])) {
175
175
  path = [coordinates];
176
176
  }
177
177
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/triangulation.ts"],"names":["GeometryCache","PointFillTriangulation","feature","coordinates","vertices","indices","size","length","GlobelPointFillTriangulation","xyz","PointExtrudeTriangulation","shape","getGeometry","positions","index","normals","PointImageTriangulation","LineTriangulation","originCoordinates","version","line","ExtrudePolyline","dash","join","path1","Array","isArray","path2","i","item1","item2","extrude_gaode2","path","forEach","item","extrude","linebuffer","complex","SimpleLineTriangulation","simpleExtrude_gaode2","simpleExtrude","polygonTriangulation","flattengeo","earcut","flatten","dimensions","holes","polygonTriangulationWithCenter","getVerticesWithCenter","verticesWithCenter","center","radius","lng","lat","push","PolygonExtrudeTriangulation","HeatmapGridTriangulation","getHeatmapGeometry","RasterImageTriangulation","indexs","LineArcTriangulation","segmentNumber","segNum","indexArray","map","v","HeatmapTriangulation","dir","addDir","dir1","dir2","dir3","needFlat","geometryShape","cylinder","geometry","computeVertexNormals","dim","Float32Array","vA","vB","vC","cb","vec3","create","ab","normal","li","p1","p2","p3","ax","ay","pA","fromValues","bx","by","pB","cx","cy","pC","sub","cross","normalizeNormals","newNormal","normalize","set","checkIsClosed","points","shape3d","circle","indexOf","dirX","dirY","x","y","earthTriangulation","earthmesh","EARTH_RADIUS","segments","EARTH_SEGMENTS","positionsArr","indicesArr","normalArr","earthOuterTriangulation","EARTH_RADIUS_OUTER"],"mappings":"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","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport { aProjectFlat, lngLatToMeters } from '@antv/l7-utils';\nimport earcut from 'earcut';\n// @ts-ignore\nimport { mat4, vec3 } from 'gl-matrix';\nimport {\n EARTH_RADIUS,\n EARTH_RADIUS_OUTER,\n EARTH_SEGMENTS,\n lglt2xyz,\n primitiveSphere,\n} from '../earth/utils';\nimport ExtrudePolyline from '../utils/extrude_polyline';\nimport {\n calculateCentroid,\n calculatePointsCenterAndRadius,\n} from '../utils/geo';\nimport extrudePolygon, {\n extrude_PolygonNormal,\n fillPolygon,\n IExtrudeGeomety,\n} from './shape/extrude';\nimport {\n geometryShape,\n IPosition,\n ShapeType2D,\n ShapeType3D,\n} from './shape/Path';\ntype IShape = ShapeType2D & ShapeType3D;\ninterface IGeometryCache {\n [key: string]: IExtrudeGeomety;\n}\nconst GeometryCache: IGeometryCache = {};\n\n/**\n * 计算2D 填充点图顶点\n * @param feature 映射feature\n */\n\nexport function PointFillTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n return {\n vertices: [...coordinates, ...coordinates, ...coordinates, ...coordinates],\n indices: [0, 1, 2, 2, 3, 0],\n size: coordinates.length,\n };\n}\n/**\n * 计算2D 填充点图顶点 (地球模式)\n * @param feature 映射feature\n */\nexport function GlobelPointFillTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n const xyz = lglt2xyz(coordinates as [number, number]);\n return {\n vertices: [...xyz, ...xyz, ...xyz, ...xyz],\n indices: [0, 1, 2, 2, 3, 0],\n size: xyz.length,\n };\n}\n\n/**\n * 计算3D 拉伸点图\n * @param feature 映射feature\n */\nexport function PointExtrudeTriangulation(feature: IEncodeFeature) {\n const { shape } = feature;\n const { positions, index, normals } = getGeometry(\n shape as ShapeType3D,\n false,\n );\n return {\n vertices: positions,\n indices: index,\n normals,\n size: 5,\n };\n}\n\n/**\n * 计算图片标注\n * @param feature 映射feature\n */\nexport function PointImageTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n return {\n vertices: [...coordinates],\n indices: [0],\n size: coordinates.length,\n };\n}\n\n/**\n * 线三角化\n * @param feature 映射feature\n */\nexport function LineTriangulation(feature: IEncodeFeature) {\n const { coordinates, originCoordinates, version } = feature;\n // let path = coordinates as number[][][] | number[][];\n // if (!Array.isArray(path[0][0])) {\n // path = [coordinates] as number[][][];\n // }\n\n const line = new ExtrudePolyline({\n dash: true,\n join: 'bevel',\n });\n\n if (version === 'GAODE2.x') {\n // 处理高德2.0几何体构建\n let path1 = coordinates as number[][][] | number[][]; // 计算位置\n if (!Array.isArray(path1[0][0])) {\n path1 = [coordinates] as number[][][];\n }\n let path2 = originCoordinates as number[][][] | number[][]; // 计算法线\n if (!Array.isArray(path2[0][0])) {\n path2 = [originCoordinates] as number[][][];\n }\n\n for (let i = 0; i < path1.length; i++) {\n // 高德2.0在计算线时,需要使用经纬度计算发现,使用 customCoords.lnglatToCoords 计算的数据来计算顶点的位置\n const item1 = path1[i];\n const item2 = path2[i];\n line.extrude_gaode2(item1 as number[][], item2 as number[][]);\n }\n } else {\n // 处理非高德2.0的几何体构建\n let path = coordinates as number[][][] | number[][];\n if (!Array.isArray(path[0][0])) {\n path = [coordinates] as number[][][];\n }\n path.forEach((item: any) => {\n line.extrude(item as number[][]);\n });\n }\n\n const linebuffer = line.complex;\n return {\n vertices: linebuffer.positions, // [ x,y,z, distance, miter,total ]\n indices: linebuffer.indices,\n normals: linebuffer.normals,\n size: 6,\n };\n}\n\nexport function SimpleLineTriangulation(feature: IEncodeFeature) {\n const { coordinates, originCoordinates, version } = feature;\n\n const line = new ExtrudePolyline({\n dash: true,\n join: 'bevel',\n });\n\n if (version === 'GAODE2.x') {\n // 处理高德2.0几何体构建\n let path1 = coordinates as number[][][] | number[][]; // 计算位置\n if (!Array.isArray(path1[0][0])) {\n path1 = [coordinates] as number[][][];\n }\n let path2 = originCoordinates as number[][][] | number[][]; // 计算法线\n if (!Array.isArray(path2[0][0])) {\n path2 = [originCoordinates] as number[][][];\n }\n\n for (let i = 0; i < path1.length; i++) {\n // 高德2.0在计算线时,需要使用经纬度计算发现,使用 customCoords.lnglatToCoords 计算的数据来计算顶点的位置\n const item1 = path1[i];\n const item2 = path2[i];\n line.simpleExtrude_gaode2(item1 as number[][], item2 as number[][]);\n }\n } else {\n // 处理非高德2.0的几何体构建\n let path = coordinates as number[][][] | number[][];\n if (!Array.isArray(path[0][0])) {\n path = [coordinates] as number[][][];\n }\n path.forEach((item: any) => {\n line.simpleExtrude(item as number[][]);\n });\n }\n\n const linebuffer = line.complex;\n return {\n vertices: linebuffer.positions, // [ x,y,z, distance, miter,total ]\n indices: linebuffer.indices,\n normals: linebuffer.normals,\n size: 6,\n };\n}\n\nexport function polygonTriangulation(feature: IEncodeFeature) {\n const { coordinates } = feature;\n const flattengeo = earcut.flatten(coordinates as number[][][]);\n const { vertices, dimensions, holes } = flattengeo;\n return {\n indices: earcut(vertices, holes, dimensions),\n vertices,\n size: dimensions,\n };\n}\n\n// TODO:构建几何图形(带有中心点和大小)\nexport function polygonTriangulationWithCenter(feature: IEncodeFeature) {\n const { coordinates } = feature;\n const flattengeo = earcut.flatten(coordinates as number[][][]);\n const { vertices, dimensions, holes } = flattengeo;\n\n return {\n indices: earcut(vertices, holes, dimensions),\n vertices: getVerticesWithCenter(vertices),\n size: dimensions + 4,\n };\n}\n\nfunction getVerticesWithCenter(vertices: number[]) {\n const verticesWithCenter = [];\n const { center, radius } = calculatePointsCenterAndRadius(vertices);\n for (let i = 0; i < vertices.length; i += 2) {\n const lng = vertices[i];\n const lat = vertices[i + 1];\n verticesWithCenter.push(lng, lat, 0, ...center, radius);\n }\n return verticesWithCenter;\n}\n\nexport function PolygonExtrudeTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as IPosition[][];\n const { positions, index, normals } = extrude_PolygonNormal(\n coordinates,\n true,\n );\n return {\n vertices: positions, // [ x, y, z, uv.x,uv.y ]\n indices: index,\n normals,\n size: 5,\n };\n}\n\nexport function HeatmapGridTriangulation(feature: IEncodeFeature) {\n const { shape } = feature;\n const { positions, index } = getHeatmapGeometry(shape as IShape);\n return {\n vertices: positions, // [ x, y, z ] 多边形顶点\n indices: index,\n size: 3,\n };\n}\n\n/**\n * 图片图层顶点构造\n * @param feature 数据\n */\nexport function RasterImageTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as IPosition[];\n // [ x, y, z. uv.x, uv.y]\n const positions: number[] = [\n ...coordinates[0],\n 0,\n 0,\n 1,\n coordinates[1][0],\n coordinates[0][1],\n 0,\n 1,\n 1,\n ...coordinates[1],\n 0,\n 1,\n 0,\n ...coordinates[0],\n 0,\n 0,\n 1,\n ...coordinates[1],\n 0,\n 1,\n 0,\n coordinates[0][0],\n coordinates[1][1],\n 0,\n 0,\n 0,\n ];\n const indexs = [0, 1, 2, 3, 4, 5];\n return {\n vertices: positions,\n indices: indexs,\n size: 5,\n };\n}\n/**\n * 计算3D弧线顶点\n * @param feature 映射数据\n * @param segNum 弧线线段数\n */\nexport function LineArcTriangulation(\n feature: IEncodeFeature,\n segmentNumber?: number,\n) {\n const segNum = segmentNumber ? segmentNumber : 30;\n const coordinates = feature.coordinates as IPosition[];\n const positions = [];\n const indexArray = [];\n for (let i = 0; i < segNum; i++) {\n // 上线两个顶点\n // [ x, y, z, sx,sy, tx,ty]\n positions.push(\n i,\n 1,\n i,\n coordinates[0][0],\n coordinates[0][1],\n coordinates[1][0],\n coordinates[1][1],\n i,\n -1,\n i,\n coordinates[0][0],\n coordinates[0][1],\n coordinates[1][0],\n coordinates[1][1],\n );\n\n if (i !== segNum - 1) {\n indexArray.push(\n ...[0, 1, 2, 1, 3, 2].map((v) => {\n return i * 2 + v;\n }),\n );\n }\n }\n return {\n vertices: positions,\n indices: indexArray,\n size: 7,\n };\n}\n\n/**\n * 构建热力图密度图的顶点\n * @param feature\n * @returns\n */\nexport function HeatmapTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as number[];\n if (coordinates.length === 2) {\n coordinates.push(0);\n }\n const size = feature.size as number;\n const dir = addDir(-1, 1);\n const dir1 = addDir(1, 1);\n const dir2 = addDir(-1, -1);\n const dir3 = addDir(1, -1);\n // [x,y,z, dirx ,diry, weight]\n const positions = [\n ...coordinates,\n ...dir,\n ...coordinates,\n ...dir2,\n ...coordinates,\n ...dir3,\n ...coordinates,\n ...dir1,\n ];\n const indexArray = [0, 1, 2, 3, 0, 2];\n return {\n vertices: positions,\n indices: indexArray,\n size: 5,\n };\n}\n\n/**\n * 点图层3d geomerty\n * @param shape 3D形状\n */\nfunction getGeometry(shape: ShapeType3D, needFlat = false): IExtrudeGeomety {\n if (GeometryCache && GeometryCache[shape]) {\n return GeometryCache[shape];\n }\n const path = geometryShape[shape]\n ? geometryShape[shape]()\n : geometryShape.cylinder();\n const geometry = extrude_PolygonNormal([path], needFlat);\n GeometryCache[shape] = geometry;\n return geometry;\n}\n\nfunction computeVertexNormals(\n positions: number[],\n indexArray: number[],\n dim: number = 3,\n needFlat: boolean = false,\n) {\n const normals = new Float32Array((positions.length / dim) * 3);\n let vA: number;\n let vB: number;\n let vC: number;\n const cb = vec3.create();\n const ab = vec3.create();\n const normal = vec3.create();\n for (let i = 0, li = indexArray.length; i < li; i += 3) {\n vA = indexArray[i + 0] * 3;\n vB = indexArray[i + 1] * 3;\n vC = indexArray[i + 2] * 3;\n let p1 = [positions[vA], positions[vA + 1]];\n let p2 = [positions[vB], positions[vB + 1]];\n let p3 = [positions[vC], positions[vC + 1]];\n if (needFlat) {\n p1 = lngLatToMeters(p1);\n p2 = lngLatToMeters(p2);\n p3 = lngLatToMeters(p3);\n }\n const [ax, ay] = p1;\n const pA = vec3.fromValues(ax, ay, positions[vA + 2]);\n const [bx, by] = p2;\n const pB = vec3.fromValues(bx, by, positions[vB + 2]);\n const [cx, cy] = p3;\n const pC = vec3.fromValues(cx, cy, positions[vC + 2]);\n vec3.sub(cb, pC, pB);\n vec3.sub(ab, pA, pB);\n vec3.cross(normal, cb, ab);\n normals[vA] += cb[0];\n normals[vA + 1] += cb[1];\n normals[vA + 2] += cb[2];\n normals[vB] += cb[0];\n normals[vB + 1] += cb[1];\n normals[vB + 2] += cb[2];\n normals[vC] += cb[0];\n normals[vC + 1] += cb[1];\n normals[vC + 2] += cb[2];\n }\n normalizeNormals(normals);\n return normals;\n}\n\nfunction normalizeNormals(normals: Float32Array) {\n for (let i = 0, li = normals.length; i < li; i += 3) {\n const normal = vec3.fromValues(normals[i], normals[i + 1], normals[i + 2]);\n const newNormal = vec3.create();\n vec3.normalize(newNormal, normal);\n normals.set(newNormal, i);\n }\n}\n\nfunction checkIsClosed(points: number[][][]) {\n const p1 = points[0][0];\n const p2 = points[0][points[0].length - 1];\n return p1[0] === p2[0] && p1[1] === p2[1];\n}\n\nfunction getHeatmapGeometry(shape: ShapeType2D | ShapeType3D): IExtrudeGeomety {\n const shape3d = [\n 'cylinder',\n 'triangleColumn',\n 'hexagonColumn',\n 'squareColumn',\n ];\n const path = geometryShape[shape]\n ? geometryShape[shape]()\n : geometryShape.circle();\n const geometry =\n shape3d.indexOf(shape) === -1\n ? fillPolygon([path])\n : extrudePolygon([path]);\n // const geometry = fillPolygon([path]);\n return geometry;\n}\n// 热力图计算范围\nfunction addDir(dirX: number, dirY: number) {\n const x = (dirX + 1) / 2;\n const y = (dirY + 1) / 2;\n return [x, y];\n}\n\n/**\n * 构建地球三角网格\n * @returns\n */\nexport function earthTriangulation() {\n const earthmesh = primitiveSphere(EARTH_RADIUS, { segments: EARTH_SEGMENTS });\n const { positionsArr, indicesArr, normalArr } = earthmesh;\n return {\n vertices: positionsArr,\n indices: indicesArr,\n size: 5,\n normals: normalArr,\n };\n}\n\nexport function earthOuterTriangulation() {\n const earthmesh = primitiveSphere(EARTH_RADIUS + EARTH_RADIUS_OUTER, {\n segments: EARTH_SEGMENTS,\n });\n const { positionsArr, indicesArr, normalArr } = earthmesh;\n return {\n vertices: positionsArr,\n indices: indicesArr,\n size: 5,\n normals: normalArr,\n };\n}\n"],"file":"triangulation.js"}
1
+ {"version":3,"sources":["../../src/core/triangulation.ts"],"names":["GeometryCache","PointFillTriangulation","feature","coordinates","vertices","indices","size","length","GlobelPointFillTriangulation","xyz","PointExtrudeTriangulation","shape","getGeometry","positions","index","normals","PointImageTriangulation","LineTriangulation","originCoordinates","version","line","ExtrudePolyline","dash","join","path1","Array","isArray","path2","i","item1","item2","extrude_gaode2","path","forEach","item","extrude","linebuffer","complex","SimpleLineTriangulation","simpleExtrude_gaode2","simpleExtrude","polygonTriangulation","flattengeo","earcut","flatten","dimensions","holes","polygonTriangulationWithCenter","getVerticesWithCenter","verticesWithCenter","center","radius","lng","lat","push","PolygonExtrudeTriangulation","HeatmapGridTriangulation","getHeatmapGeometry","RasterImageTriangulation","indexs","LineArcTriangulation","segmentNumber","segNum","indexArray","map","v","HeatmapTriangulation","dir","addDir","dir1","dir2","dir3","needFlat","geometryShape","cylinder","geometry","computeVertexNormals","dim","Float32Array","vA","vB","vC","cb","vec3","create","ab","normal","li","p1","p2","p3","ax","ay","pA","fromValues","bx","by","pB","cx","cy","pC","sub","cross","normalizeNormals","newNormal","normalize","set","checkIsClosed","points","shape3d","circle","indexOf","dirX","dirY","x","y","earthTriangulation","earthmesh","EARTH_RADIUS","segments","EARTH_SEGMENTS","positionsArr","indicesArr","normalArr","earthOuterTriangulation","EARTH_RADIUS_OUTER"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AAEA;;AACA;;AAOA;;AACA;;AAIA;;AAKA;;;;;;AAUA,IAAMA,aAA6B,GAAG,EAAtC;;AAOO,SAASC,sBAAT,CAAgCC,OAAhC,EAAyD;AAC9D,MAAMC,WAAW,GAAG,4BAAkBD,OAAO,CAACC,WAA1B,CAApB;AACA,SAAO;AACLC,IAAAA,QAAQ,6CAAMD,WAAN,oCAAsBA,WAAtB,oCAAsCA,WAAtC,oCAAsDA,WAAtD,EADH;AAELE,IAAAA,OAAO,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAFJ;AAGLC,IAAAA,IAAI,EAAEH,WAAW,CAACI;AAHb,GAAP;AAKD;;AAKM,SAASC,4BAAT,CAAsCN,OAAtC,EAA+D;AACpE,MAAMC,WAAW,GAAG,4BAAkBD,OAAO,CAACC,WAA1B,CAApB;AACA,MAAMM,GAAG,GAAG,qBAASN,WAAT,CAAZ;AACA,SAAO;AACLC,IAAAA,QAAQ,6CAAMK,GAAN,oCAAcA,GAAd,oCAAsBA,GAAtB,oCAA8BA,GAA9B,EADH;AAELJ,IAAAA,OAAO,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAFJ;AAGLC,IAAAA,IAAI,EAAEG,GAAG,CAACF;AAHL,GAAP;AAKD;;AAMM,SAASG,yBAAT,CAAmCR,OAAnC,EAA4D;AACjE,MAAQS,KAAR,GAAkBT,OAAlB,CAAQS,KAAR;;AACA,qBAAsCC,WAAW,CAC/CD,KAD+C,EAE/C,KAF+C,CAAjD;AAAA,MAAQE,SAAR,gBAAQA,SAAR;AAAA,MAAmBC,KAAnB,gBAAmBA,KAAnB;AAAA,MAA0BC,OAA1B,gBAA0BA,OAA1B;;AAIA,SAAO;AACLX,IAAAA,QAAQ,EAAES,SADL;AAELR,IAAAA,OAAO,EAAES,KAFJ;AAGLC,IAAAA,OAAO,EAAPA,OAHK;AAILT,IAAAA,IAAI,EAAE;AAJD,GAAP;AAMD;;AAMM,SAASU,uBAAT,CAAiCd,OAAjC,EAA0D;AAC/D,MAAMC,WAAW,GAAG,4BAAkBD,OAAO,CAACC,WAA1B,CAApB;AACA,SAAO;AACLC,IAAAA,QAAQ,mCAAMD,WAAN,CADH;AAELE,IAAAA,OAAO,EAAE,CAAC,CAAD,CAFJ;AAGLC,IAAAA,IAAI,EAAEH,WAAW,CAACI;AAHb,GAAP;AAKD;;AAMM,SAASU,iBAAT,CAA2Bf,OAA3B,EAAoD;AACzD,MAAQC,WAAR,GAAoDD,OAApD,CAAQC,WAAR;AAAA,MAAqBe,iBAArB,GAAoDhB,OAApD,CAAqBgB,iBAArB;AAAA,MAAwCC,OAAxC,GAAoDjB,OAApD,CAAwCiB,OAAxC;AAMA,MAAMC,IAAI,GAAG,IAAIC,yBAAJ,CAAoB;AAC/BC,IAAAA,IAAI,EAAE,IADyB;AAE/BC,IAAAA,IAAI,EAAE;AAFyB,GAApB,CAAb;;AAKA,MAAIJ,OAAO,KAAK,UAAhB,EAA4B;AAE1B,QAAIK,KAAK,GAAGrB,WAAZ;;AACA,QAAI,CAACsB,KAAK,CAACC,OAAN,CAAcF,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,CAAd,CAAL,EAAiC;AAC/BA,MAAAA,KAAK,GAAG,CAACrB,WAAD,CAAR;AACD;;AACD,QAAIwB,KAAK,GAAGT,iBAAZ;;AACA,QAAI,CAACO,KAAK,CAACC,OAAN,CAAcC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,CAAd,CAAL,EAAiC;AAC/BA,MAAAA,KAAK,GAAG,CAACT,iBAAD,CAAR;AACD;;AAED,SAAK,IAAIU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,KAAK,CAACjB,MAA1B,EAAkCqB,CAAC,EAAnC,EAAuC;AAErC,UAAMC,KAAK,GAAGL,KAAK,CAACI,CAAD,CAAnB;AACA,UAAME,KAAK,GAAGH,KAAK,CAACC,CAAD,CAAnB;AACAR,MAAAA,IAAI,CAACW,cAAL,CAAoBF,KAApB,EAAyCC,KAAzC;AACD;AACF,GAjBD,MAiBO;AAEL,QAAIE,IAAI,GAAG7B,WAAX;;AACA,QAAI6B,IAAI,CAAC,CAAD,CAAJ,IAAW,CAACP,KAAK,CAACC,OAAN,CAAcM,IAAI,CAAC,CAAD,CAAJ,CAAQ,CAAR,CAAd,CAAhB,EAA2C;AACzCA,MAAAA,IAAI,GAAG,CAAC7B,WAAD,CAAP;AACD;;AACD6B,IAAAA,IAAI,CAACC,OAAL,CAAa,UAACC,IAAD,EAAe;AAC1Bd,MAAAA,IAAI,CAACe,OAAL,CAAaD,IAAb;AACD,KAFD;AAGD;;AAED,MAAME,UAAU,GAAGhB,IAAI,CAACiB,OAAxB;AACA,SAAO;AACLjC,IAAAA,QAAQ,EAAEgC,UAAU,CAACvB,SADhB;AAELR,IAAAA,OAAO,EAAE+B,UAAU,CAAC/B,OAFf;AAGLU,IAAAA,OAAO,EAAEqB,UAAU,CAACrB,OAHf;AAILT,IAAAA,IAAI,EAAE;AAJD,GAAP;AAMD;;AAEM,SAASgC,uBAAT,CAAiCpC,OAAjC,EAA0D;AAC/D,MAAQC,WAAR,GAAoDD,OAApD,CAAQC,WAAR;AAAA,MAAqBe,iBAArB,GAAoDhB,OAApD,CAAqBgB,iBAArB;AAAA,MAAwCC,OAAxC,GAAoDjB,OAApD,CAAwCiB,OAAxC;AAEA,MAAMC,IAAI,GAAG,IAAIC,yBAAJ,CAAoB;AAC/BC,IAAAA,IAAI,EAAE,IADyB;AAE/BC,IAAAA,IAAI,EAAE;AAFyB,GAApB,CAAb;;AAKA,MAAIJ,OAAO,KAAK,UAAhB,EAA4B;AAE1B,QAAIK,KAAK,GAAGrB,WAAZ;;AACA,QAAI,CAACsB,KAAK,CAACC,OAAN,CAAcF,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,CAAd,CAAL,EAAiC;AAC/BA,MAAAA,KAAK,GAAG,CAACrB,WAAD,CAAR;AACD;;AACD,QAAIwB,KAAK,GAAGT,iBAAZ;;AACA,QAAI,CAACO,KAAK,CAACC,OAAN,CAAcC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,CAAd,CAAL,EAAiC;AAC/BA,MAAAA,KAAK,GAAG,CAACT,iBAAD,CAAR;AACD;;AAED,SAAK,IAAIU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,KAAK,CAACjB,MAA1B,EAAkCqB,CAAC,EAAnC,EAAuC;AAErC,UAAMC,KAAK,GAAGL,KAAK,CAACI,CAAD,CAAnB;AACA,UAAME,KAAK,GAAGH,KAAK,CAACC,CAAD,CAAnB;AACAR,MAAAA,IAAI,CAACmB,oBAAL,CAA0BV,KAA1B,EAA+CC,KAA/C;AACD;AACF,GAjBD,MAiBO;AAEL,QAAIE,IAAI,GAAG7B,WAAX;;AACA,QAAI6B,IAAI,CAAC,CAAD,CAAJ,IAAW,CAACP,KAAK,CAACC,OAAN,CAAcM,IAAI,CAAC,CAAD,CAAJ,CAAQ,CAAR,CAAd,CAAhB,EAA2C;AACzCA,MAAAA,IAAI,GAAG,CAAC7B,WAAD,CAAP;AACD;;AACD6B,IAAAA,IAAI,CAACC,OAAL,CAAa,UAACC,IAAD,EAAe;AAC1Bd,MAAAA,IAAI,CAACoB,aAAL,CAAmBN,IAAnB;AACD,KAFD;AAGD;;AAED,MAAME,UAAU,GAAGhB,IAAI,CAACiB,OAAxB;AACA,SAAO;AACLjC,IAAAA,QAAQ,EAAEgC,UAAU,CAACvB,SADhB;AAELR,IAAAA,OAAO,EAAE+B,UAAU,CAAC/B,OAFf;AAGLU,IAAAA,OAAO,EAAEqB,UAAU,CAACrB,OAHf;AAILT,IAAAA,IAAI,EAAE;AAJD,GAAP;AAMD;;AAEM,SAASmC,oBAAT,CAA8BvC,OAA9B,EAAuD;AAC5D,MAAQC,WAAR,GAAwBD,OAAxB,CAAQC,WAAR;;AACA,MAAMuC,UAAU,GAAGC,gBAAOC,OAAP,CAAezC,WAAf,CAAnB;;AACA,MAAQC,QAAR,GAAwCsC,UAAxC,CAAQtC,QAAR;AAAA,MAAkByC,UAAlB,GAAwCH,UAAxC,CAAkBG,UAAlB;AAAA,MAA8BC,KAA9B,GAAwCJ,UAAxC,CAA8BI,KAA9B;AACA,SAAO;AACLzC,IAAAA,OAAO,EAAE,qBAAOD,QAAP,EAAiB0C,KAAjB,EAAwBD,UAAxB,CADJ;AAELzC,IAAAA,QAAQ,EAARA,QAFK;AAGLE,IAAAA,IAAI,EAAEuC;AAHD,GAAP;AAKD;;AAGM,SAASE,8BAAT,CAAwC7C,OAAxC,EAAiE;AACtE,MAAQC,WAAR,GAAwBD,OAAxB,CAAQC,WAAR;;AACA,MAAMuC,UAAU,GAAGC,gBAAOC,OAAP,CAAezC,WAAf,CAAnB;;AACA,MAAQC,QAAR,GAAwCsC,UAAxC,CAAQtC,QAAR;AAAA,MAAkByC,UAAlB,GAAwCH,UAAxC,CAAkBG,UAAlB;AAAA,MAA8BC,KAA9B,GAAwCJ,UAAxC,CAA8BI,KAA9B;AAEA,SAAO;AACLzC,IAAAA,OAAO,EAAE,qBAAOD,QAAP,EAAiB0C,KAAjB,EAAwBD,UAAxB,CADJ;AAELzC,IAAAA,QAAQ,EAAE4C,qBAAqB,CAAC5C,QAAD,CAF1B;AAGLE,IAAAA,IAAI,EAAEuC,UAAU,GAAG;AAHd,GAAP;AAKD;;AAED,SAASG,qBAAT,CAA+B5C,QAA/B,EAAmD;AACjD,MAAM6C,kBAAkB,GAAG,EAA3B;;AACA,8BAA2B,yCAA+B7C,QAA/B,CAA3B;AAAA,MAAQ8C,MAAR,yBAAQA,MAAR;AAAA,MAAgBC,MAAhB,yBAAgBA,MAAhB;;AACA,OAAK,IAAIvB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGxB,QAAQ,CAACG,MAA7B,EAAqCqB,CAAC,IAAI,CAA1C,EAA6C;AAC3C,QAAMwB,GAAG,GAAGhD,QAAQ,CAACwB,CAAD,CAApB;AACA,QAAMyB,GAAG,GAAGjD,QAAQ,CAACwB,CAAC,GAAG,CAAL,CAApB;AACAqB,IAAAA,kBAAkB,CAACK,IAAnB,OAAAL,kBAAkB,GAAMG,GAAN,EAAWC,GAAX,EAAgB,CAAhB,0CAAsBH,MAAtB,IAA8BC,MAA9B,GAAlB;AACD;;AACD,SAAOF,kBAAP;AACD;;AAEM,SAASM,2BAAT,CAAqCrD,OAArC,EAA8D;AACnE,MAAMC,WAAW,GAAGD,OAAO,CAACC,WAA5B;;AACA,8BAAsC,oCACpCA,WADoC,EAEpC,IAFoC,CAAtC;AAAA,MAAQU,SAAR,yBAAQA,SAAR;AAAA,MAAmBC,KAAnB,yBAAmBA,KAAnB;AAAA,MAA0BC,OAA1B,yBAA0BA,OAA1B;;AAIA,SAAO;AACLX,IAAAA,QAAQ,EAAES,SADL;AAELR,IAAAA,OAAO,EAAES,KAFJ;AAGLC,IAAAA,OAAO,EAAPA,OAHK;AAILT,IAAAA,IAAI,EAAE;AAJD,GAAP;AAMD;;AAEM,SAASkD,wBAAT,CAAkCtD,OAAlC,EAA2D;AAChE,MAAQS,KAAR,GAAkBT,OAAlB,CAAQS,KAAR;;AACA,4BAA6B8C,kBAAkB,CAAC9C,KAAD,CAA/C;AAAA,MAAQE,SAAR,uBAAQA,SAAR;AAAA,MAAmBC,KAAnB,uBAAmBA,KAAnB;;AACA,SAAO;AACLV,IAAAA,QAAQ,EAAES,SADL;AAELR,IAAAA,OAAO,EAAES,KAFJ;AAGLR,IAAAA,IAAI,EAAE;AAHD,GAAP;AAKD;;AAMM,SAASoD,wBAAT,CAAkCxD,OAAlC,EAA2D;AAChE,MAAMC,WAAW,GAAGD,OAAO,CAACC,WAA5B;AAEA,MAAMU,SAAmB,8CACpBV,WAAW,CAAC,CAAD,CADS,IAEvB,CAFuB,EAGvB,CAHuB,EAIvB,CAJuB,EAKvBA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CALuB,EAMvBA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CANuB,EAOvB,CAPuB,EAQvB,CARuB,EASvB,CATuB,oCAUpBA,WAAW,CAAC,CAAD,CAVS,IAWvB,CAXuB,EAYvB,CAZuB,EAavB,CAbuB,oCAcpBA,WAAW,CAAC,CAAD,CAdS,IAevB,CAfuB,EAgBvB,CAhBuB,EAiBvB,CAjBuB,oCAkBpBA,WAAW,CAAC,CAAD,CAlBS,IAmBvB,CAnBuB,EAoBvB,CApBuB,EAqBvB,CArBuB,EAsBvBA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAtBuB,EAuBvBA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAvBuB,EAwBvB,CAxBuB,EAyBvB,CAzBuB,EA0BvB,CA1BuB,EAAzB;AA4BA,MAAMwD,MAAM,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf;AACA,SAAO;AACLvD,IAAAA,QAAQ,EAAES,SADL;AAELR,IAAAA,OAAO,EAAEsD,MAFJ;AAGLrD,IAAAA,IAAI,EAAE;AAHD,GAAP;AAKD;;AAMM,SAASsD,oBAAT,CACL1D,OADK,EAEL2D,aAFK,EAGL;AACA,MAAMC,MAAM,GAAGD,aAAa,GAAGA,aAAH,GAAmB,EAA/C;AACA,MAAM1D,WAAW,GAAGD,OAAO,CAACC,WAA5B;AACA,MAAMU,SAAS,GAAG,EAAlB;AACA,MAAMkD,UAAU,GAAG,EAAnB;;AAJA,6BAKSnC,CALT;AAQEf,IAAAA,SAAS,CAACyC,IAAV,CACE1B,CADF,EAEE,CAFF,EAGEA,CAHF,EAIEzB,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAJF,EAKEA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CALF,EAMEA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CANF,EAOEA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAPF,EAQEyB,CARF,EASE,CAAC,CATH,EAUEA,CAVF,EAWEzB,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAXF,EAYEA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAZF,EAaEA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAbF,EAcEA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAdF;;AAiBA,QAAIyB,CAAC,KAAKkC,MAAM,GAAG,CAAnB,EAAsB;AACpBC,MAAAA,UAAU,CAACT,IAAX,OAAAS,UAAU,mCACL,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmBC,GAAnB,CAAuB,UAACC,CAAD,EAAO;AAC/B,eAAOrC,CAAC,GAAG,CAAJ,GAAQqC,CAAf;AACD,OAFE,CADK,EAAV;AAKD;AA/BH;;AAKA,OAAK,IAAIrC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkC,MAApB,EAA4BlC,CAAC,EAA7B,EAAiC;AAAA,UAAxBA,CAAwB;AA2BhC;;AACD,SAAO;AACLxB,IAAAA,QAAQ,EAAES,SADL;AAELR,IAAAA,OAAO,EAAE0D,UAFJ;AAGLzD,IAAAA,IAAI,EAAE;AAHD,GAAP;AAKD;;AAOM,SAAS4D,oBAAT,CAA8BhE,OAA9B,EAAuD;AAC5D,MAAMC,WAAW,GAAGD,OAAO,CAACC,WAA5B;;AACA,MAAIA,WAAW,CAACI,MAAZ,KAAuB,CAA3B,EAA8B;AAC5BJ,IAAAA,WAAW,CAACmD,IAAZ,CAAiB,CAAjB;AACD;;AACD,MAAMhD,IAAI,GAAGJ,OAAO,CAACI,IAArB;AACA,MAAM6D,GAAG,GAAGC,MAAM,CAAC,CAAC,CAAF,EAAK,CAAL,CAAlB;AACA,MAAMC,IAAI,GAAGD,MAAM,CAAC,CAAD,EAAI,CAAJ,CAAnB;AACA,MAAME,IAAI,GAAGF,MAAM,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,CAAnB;AACA,MAAMG,IAAI,GAAGH,MAAM,CAAC,CAAD,EAAI,CAAC,CAAL,CAAnB;AAEA,MAAMvD,SAAS,8CACVV,WADU,oCAEVgE,GAFU,oCAGVhE,WAHU,oCAIVmE,IAJU,oCAKVnE,WALU,oCAMVoE,IANU,oCAOVpE,WAPU,oCAQVkE,IARU,EAAf;AAUA,MAAMN,UAAU,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAnB;AACA,SAAO;AACL3D,IAAAA,QAAQ,EAAES,SADL;AAELR,IAAAA,OAAO,EAAE0D,UAFJ;AAGLzD,IAAAA,IAAI,EAAE;AAHD,GAAP;AAKD;;AAMD,SAASM,WAAT,CAAqBD,KAArB,EAA4E;AAAA,MAAnC6D,QAAmC,uEAAxB,KAAwB;;AAC1E,MAAIxE,aAAa,IAAIA,aAAa,CAACW,KAAD,CAAlC,EAA2C;AACzC,WAAOX,aAAa,CAACW,KAAD,CAApB;AACD;;AACD,MAAMqB,IAAI,GAAGyC,oBAAc9D,KAAd,IACT8D,oBAAc9D,KAAd,GADS,GAET8D,oBAAcC,QAAd,EAFJ;AAGA,MAAMC,QAAQ,GAAG,oCAAsB,CAAC3C,IAAD,CAAtB,EAA8BwC,QAA9B,CAAjB;AACAxE,EAAAA,aAAa,CAACW,KAAD,CAAb,GAAuBgE,QAAvB;AACA,SAAOA,QAAP;AACD;;AAED,SAASC,oBAAT,CACE/D,SADF,EAEEkD,UAFF,EAKE;AAAA,MAFAc,GAEA,uEAFc,CAEd;AAAA,MADAL,QACA,uEADoB,KACpB;AACA,MAAMzD,OAAO,GAAG,IAAI+D,YAAJ,CAAkBjE,SAAS,CAACN,MAAV,GAAmBsE,GAApB,GAA2B,CAA5C,CAAhB;AACA,MAAIE,EAAJ;AACA,MAAIC,EAAJ;AACA,MAAIC,EAAJ;;AACA,MAAMC,EAAE,GAAGC,eAAKC,MAAL,EAAX;;AACA,MAAMC,EAAE,GAAGF,eAAKC,MAAL,EAAX;;AACA,MAAME,MAAM,GAAGH,eAAKC,MAAL,EAAf;;AACA,OAAK,IAAIxD,CAAC,GAAG,CAAR,EAAW2D,EAAE,GAAGxB,UAAU,CAACxD,MAAhC,EAAwCqB,CAAC,GAAG2D,EAA5C,EAAgD3D,CAAC,IAAI,CAArD,EAAwD;AACtDmD,IAAAA,EAAE,GAAGhB,UAAU,CAACnC,CAAC,GAAG,CAAL,CAAV,GAAoB,CAAzB;AACAoD,IAAAA,EAAE,GAAGjB,UAAU,CAACnC,CAAC,GAAG,CAAL,CAAV,GAAoB,CAAzB;AACAqD,IAAAA,EAAE,GAAGlB,UAAU,CAACnC,CAAC,GAAG,CAAL,CAAV,GAAoB,CAAzB;AACA,QAAI4D,EAAE,GAAG,CAAC3E,SAAS,CAACkE,EAAD,CAAV,EAAgBlE,SAAS,CAACkE,EAAE,GAAG,CAAN,CAAzB,CAAT;AACA,QAAIU,EAAE,GAAG,CAAC5E,SAAS,CAACmE,EAAD,CAAV,EAAgBnE,SAAS,CAACmE,EAAE,GAAG,CAAN,CAAzB,CAAT;AACA,QAAIU,EAAE,GAAG,CAAC7E,SAAS,CAACoE,EAAD,CAAV,EAAgBpE,SAAS,CAACoE,EAAE,GAAG,CAAN,CAAzB,CAAT;;AACA,QAAIT,QAAJ,EAAc;AACZgB,MAAAA,EAAE,GAAG,6BAAeA,EAAf,CAAL;AACAC,MAAAA,EAAE,GAAG,6BAAeA,EAAf,CAAL;AACAC,MAAAA,EAAE,GAAG,6BAAeA,EAAf,CAAL;AACD;;AACD,aAAiBF,EAAjB;AAAA;AAAA,QAAOG,EAAP;AAAA,QAAWC,EAAX;;AACA,QAAMC,EAAE,GAAGV,eAAKW,UAAL,CAAgBH,EAAhB,EAAoBC,EAApB,EAAwB/E,SAAS,CAACkE,EAAE,GAAG,CAAN,CAAjC,CAAX;;AACA,cAAiBU,EAAjB;AAAA;AAAA,QAAOM,EAAP;AAAA,QAAWC,EAAX;;AACA,QAAMC,EAAE,GAAGd,eAAKW,UAAL,CAAgBC,EAAhB,EAAoBC,EAApB,EAAwBnF,SAAS,CAACmE,EAAE,GAAG,CAAN,CAAjC,CAAX;;AACA,cAAiBU,EAAjB;AAAA;AAAA,QAAOQ,EAAP;AAAA,QAAWC,EAAX;;AACA,QAAMC,EAAE,GAAGjB,eAAKW,UAAL,CAAgBI,EAAhB,EAAoBC,EAApB,EAAwBtF,SAAS,CAACoE,EAAE,GAAG,CAAN,CAAjC,CAAX;;AACAE,mBAAKkB,GAAL,CAASnB,EAAT,EAAakB,EAAb,EAAiBH,EAAjB;;AACAd,mBAAKkB,GAAL,CAAShB,EAAT,EAAaQ,EAAb,EAAiBI,EAAjB;;AACAd,mBAAKmB,KAAL,CAAWhB,MAAX,EAAmBJ,EAAnB,EAAuBG,EAAvB;;AACAtE,IAAAA,OAAO,CAACgE,EAAD,CAAP,IAAeG,EAAE,CAAC,CAAD,CAAjB;AACAnE,IAAAA,OAAO,CAACgE,EAAE,GAAG,CAAN,CAAP,IAAmBG,EAAE,CAAC,CAAD,CAArB;AACAnE,IAAAA,OAAO,CAACgE,EAAE,GAAG,CAAN,CAAP,IAAmBG,EAAE,CAAC,CAAD,CAArB;AACAnE,IAAAA,OAAO,CAACiE,EAAD,CAAP,IAAeE,EAAE,CAAC,CAAD,CAAjB;AACAnE,IAAAA,OAAO,CAACiE,EAAE,GAAG,CAAN,CAAP,IAAmBE,EAAE,CAAC,CAAD,CAArB;AACAnE,IAAAA,OAAO,CAACiE,EAAE,GAAG,CAAN,CAAP,IAAmBE,EAAE,CAAC,CAAD,CAArB;AACAnE,IAAAA,OAAO,CAACkE,EAAD,CAAP,IAAeC,EAAE,CAAC,CAAD,CAAjB;AACAnE,IAAAA,OAAO,CAACkE,EAAE,GAAG,CAAN,CAAP,IAAmBC,EAAE,CAAC,CAAD,CAArB;AACAnE,IAAAA,OAAO,CAACkE,EAAE,GAAG,CAAN,CAAP,IAAmBC,EAAE,CAAC,CAAD,CAArB;AACD;;AACDqB,EAAAA,gBAAgB,CAACxF,OAAD,CAAhB;AACA,SAAOA,OAAP;AACD;;AAED,SAASwF,gBAAT,CAA0BxF,OAA1B,EAAiD;AAC/C,OAAK,IAAIa,CAAC,GAAG,CAAR,EAAW2D,EAAE,GAAGxE,OAAO,CAACR,MAA7B,EAAqCqB,CAAC,GAAG2D,EAAzC,EAA6C3D,CAAC,IAAI,CAAlD,EAAqD;AACnD,QAAM0D,MAAM,GAAGH,eAAKW,UAAL,CAAgB/E,OAAO,CAACa,CAAD,CAAvB,EAA4Bb,OAAO,CAACa,CAAC,GAAG,CAAL,CAAnC,EAA4Cb,OAAO,CAACa,CAAC,GAAG,CAAL,CAAnD,CAAf;;AACA,QAAM4E,SAAS,GAAGrB,eAAKC,MAAL,EAAlB;;AACAD,mBAAKsB,SAAL,CAAeD,SAAf,EAA0BlB,MAA1B;;AACAvE,IAAAA,OAAO,CAAC2F,GAAR,CAAYF,SAAZ,EAAuB5E,CAAvB;AACD;AACF;;AAED,SAAS+E,aAAT,CAAuBC,MAAvB,EAA6C;AAC3C,MAAMpB,EAAE,GAAGoB,MAAM,CAAC,CAAD,CAAN,CAAU,CAAV,CAAX;AACA,MAAMnB,EAAE,GAAGmB,MAAM,CAAC,CAAD,CAAN,CAAUA,MAAM,CAAC,CAAD,CAAN,CAAUrG,MAAV,GAAmB,CAA7B,CAAX;AACA,SAAOiF,EAAE,CAAC,CAAD,CAAF,KAAUC,EAAE,CAAC,CAAD,CAAZ,IAAmBD,EAAE,CAAC,CAAD,CAAF,KAAUC,EAAE,CAAC,CAAD,CAAtC;AACD;;AAED,SAAShC,kBAAT,CAA4B9C,KAA5B,EAA+E;AAC7E,MAAMkG,OAAO,GAAG,CACd,UADc,EAEd,gBAFc,EAGd,eAHc,EAId,cAJc,CAAhB;AAMA,MAAM7E,IAAI,GAAGyC,oBAAc9D,KAAd,IACT8D,oBAAc9D,KAAd,GADS,GAET8D,oBAAcqC,MAAd,EAFJ;AAGA,MAAMnC,QAAQ,GACZkC,OAAO,CAACE,OAAR,CAAgBpG,KAAhB,MAA2B,CAAC,CAA5B,GACI,0BAAY,CAACqB,IAAD,CAAZ,CADJ,GAEI,sBAAe,CAACA,IAAD,CAAf,CAHN;AAKA,SAAO2C,QAAP;AACD;;AAED,SAASP,MAAT,CAAgB4C,IAAhB,EAA8BC,IAA9B,EAA4C;AAC1C,MAAMC,CAAC,GAAG,CAACF,IAAI,GAAG,CAAR,IAAa,CAAvB;AACA,MAAMG,CAAC,GAAG,CAACF,IAAI,GAAG,CAAR,IAAa,CAAvB;AACA,SAAO,CAACC,CAAD,EAAIC,CAAJ,CAAP;AACD;;AAMM,SAASC,kBAAT,GAA8B;AACnC,MAAMC,SAAS,GAAG,4BAAgBC,mBAAhB,EAA8B;AAAEC,IAAAA,QAAQ,EAAEC;AAAZ,GAA9B,CAAlB;AACA,MAAQC,YAAR,GAAgDJ,SAAhD,CAAQI,YAAR;AAAA,MAAsBC,UAAtB,GAAgDL,SAAhD,CAAsBK,UAAtB;AAAA,MAAkCC,SAAlC,GAAgDN,SAAhD,CAAkCM,SAAlC;AACA,SAAO;AACLvH,IAAAA,QAAQ,EAAEqH,YADL;AAELpH,IAAAA,OAAO,EAAEqH,UAFJ;AAGLpH,IAAAA,IAAI,EAAE,CAHD;AAILS,IAAAA,OAAO,EAAE4G;AAJJ,GAAP;AAMD;;AAEM,SAASC,uBAAT,GAAmC;AACxC,MAAMP,SAAS,GAAG,4BAAgBC,sBAAeO,yBAA/B,EAAmD;AACnEN,IAAAA,QAAQ,EAAEC;AADyD,GAAnD,CAAlB;AAGA,MAAQC,YAAR,GAAgDJ,SAAhD,CAAQI,YAAR;AAAA,MAAsBC,UAAtB,GAAgDL,SAAhD,CAAsBK,UAAtB;AAAA,MAAkCC,SAAlC,GAAgDN,SAAhD,CAAkCM,SAAlC;AACA,SAAO;AACLvH,IAAAA,QAAQ,EAAEqH,YADL;AAELpH,IAAAA,OAAO,EAAEqH,UAFJ;AAGLpH,IAAAA,IAAI,EAAE,CAHD;AAILS,IAAAA,OAAO,EAAE4G;AAJJ,GAAP;AAMD","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport { aProjectFlat, lngLatToMeters } from '@antv/l7-utils';\nimport earcut from 'earcut';\n// @ts-ignore\nimport { mat4, vec3 } from 'gl-matrix';\nimport {\n EARTH_RADIUS,\n EARTH_RADIUS_OUTER,\n EARTH_SEGMENTS,\n lglt2xyz,\n primitiveSphere,\n} from '../earth/utils';\nimport ExtrudePolyline from '../utils/extrude_polyline';\nimport {\n calculateCentroid,\n calculatePointsCenterAndRadius,\n} from '../utils/geo';\nimport extrudePolygon, {\n extrude_PolygonNormal,\n fillPolygon,\n IExtrudeGeomety,\n} from './shape/extrude';\nimport {\n geometryShape,\n IPosition,\n ShapeType2D,\n ShapeType3D,\n} from './shape/Path';\ntype IShape = ShapeType2D & ShapeType3D;\ninterface IGeometryCache {\n [key: string]: IExtrudeGeomety;\n}\nconst GeometryCache: IGeometryCache = {};\n\n/**\n * 计算2D 填充点图顶点\n * @param feature 映射feature\n */\n\nexport function PointFillTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n return {\n vertices: [...coordinates, ...coordinates, ...coordinates, ...coordinates],\n indices: [0, 1, 2, 2, 3, 0],\n size: coordinates.length,\n };\n}\n/**\n * 计算2D 填充点图顶点 (地球模式)\n * @param feature 映射feature\n */\nexport function GlobelPointFillTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n const xyz = lglt2xyz(coordinates as [number, number]);\n return {\n vertices: [...xyz, ...xyz, ...xyz, ...xyz],\n indices: [0, 1, 2, 2, 3, 0],\n size: xyz.length,\n };\n}\n\n/**\n * 计算3D 拉伸点图\n * @param feature 映射feature\n */\nexport function PointExtrudeTriangulation(feature: IEncodeFeature) {\n const { shape } = feature;\n const { positions, index, normals } = getGeometry(\n shape as ShapeType3D,\n false,\n );\n return {\n vertices: positions,\n indices: index,\n normals,\n size: 5,\n };\n}\n\n/**\n * 计算图片标注\n * @param feature 映射feature\n */\nexport function PointImageTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n return {\n vertices: [...coordinates],\n indices: [0],\n size: coordinates.length,\n };\n}\n\n/**\n * 线三角化\n * @param feature 映射feature\n */\nexport function LineTriangulation(feature: IEncodeFeature) {\n const { coordinates, originCoordinates, version } = feature;\n // let path = coordinates as number[][][] | number[][];\n // if (!Array.isArray(path[0][0])) {\n // path = [coordinates] as number[][][];\n // }\n\n const line = new ExtrudePolyline({\n dash: true,\n join: 'bevel',\n });\n\n if (version === 'GAODE2.x') {\n // 处理高德2.0几何体构建\n let path1 = coordinates as number[][][] | number[][]; // 计算位置\n if (!Array.isArray(path1[0][0])) {\n path1 = [coordinates] as number[][][];\n }\n let path2 = originCoordinates as number[][][] | number[][]; // 计算法线\n if (!Array.isArray(path2[0][0])) {\n path2 = [originCoordinates] as number[][][];\n }\n\n for (let i = 0; i < path1.length; i++) {\n // 高德2.0在计算线时,需要使用经纬度计算发现,使用 customCoords.lnglatToCoords 计算的数据来计算顶点的位置\n const item1 = path1[i];\n const item2 = path2[i];\n line.extrude_gaode2(item1 as number[][], item2 as number[][]);\n }\n } else {\n // 处理非高德2.0的几何体构建\n let path = coordinates as number[][][] | number[][];\n if (path[0] && !Array.isArray(path[0][0])) {\n path = [coordinates] as number[][][];\n }\n path.forEach((item: any) => {\n line.extrude(item as number[][]);\n });\n }\n\n const linebuffer = line.complex;\n return {\n vertices: linebuffer.positions, // [ x,y,z, distance, miter,total ]\n indices: linebuffer.indices,\n normals: linebuffer.normals,\n size: 6,\n };\n}\n\nexport function SimpleLineTriangulation(feature: IEncodeFeature) {\n const { coordinates, originCoordinates, version } = feature;\n\n const line = new ExtrudePolyline({\n dash: true,\n join: 'bevel',\n });\n\n if (version === 'GAODE2.x') {\n // 处理高德2.0几何体构建\n let path1 = coordinates as number[][][] | number[][]; // 计算位置\n if (!Array.isArray(path1[0][0])) {\n path1 = [coordinates] as number[][][];\n }\n let path2 = originCoordinates as number[][][] | number[][]; // 计算法线\n if (!Array.isArray(path2[0][0])) {\n path2 = [originCoordinates] as number[][][];\n }\n\n for (let i = 0; i < path1.length; i++) {\n // 高德2.0在计算线时,需要使用经纬度计算发现,使用 customCoords.lnglatToCoords 计算的数据来计算顶点的位置\n const item1 = path1[i];\n const item2 = path2[i];\n line.simpleExtrude_gaode2(item1 as number[][], item2 as number[][]);\n }\n } else {\n // 处理非高德2.0的几何体构建\n let path = coordinates as number[][][] | number[][];\n if (path[0] && !Array.isArray(path[0][0])) {\n path = [coordinates] as number[][][];\n }\n path.forEach((item: any) => {\n line.simpleExtrude(item as number[][]);\n });\n }\n\n const linebuffer = line.complex;\n return {\n vertices: linebuffer.positions, // [ x,y,z, distance, miter,total ]\n indices: linebuffer.indices,\n normals: linebuffer.normals,\n size: 6,\n };\n}\n\nexport function polygonTriangulation(feature: IEncodeFeature) {\n const { coordinates } = feature;\n const flattengeo = earcut.flatten(coordinates as number[][][]);\n const { vertices, dimensions, holes } = flattengeo;\n return {\n indices: earcut(vertices, holes, dimensions),\n vertices,\n size: dimensions,\n };\n}\n\n// TODO:构建几何图形(带有中心点和大小)\nexport function polygonTriangulationWithCenter(feature: IEncodeFeature) {\n const { coordinates } = feature;\n const flattengeo = earcut.flatten(coordinates as number[][][]);\n const { vertices, dimensions, holes } = flattengeo;\n\n return {\n indices: earcut(vertices, holes, dimensions),\n vertices: getVerticesWithCenter(vertices),\n size: dimensions + 4,\n };\n}\n\nfunction getVerticesWithCenter(vertices: number[]) {\n const verticesWithCenter = [];\n const { center, radius } = calculatePointsCenterAndRadius(vertices);\n for (let i = 0; i < vertices.length; i += 2) {\n const lng = vertices[i];\n const lat = vertices[i + 1];\n verticesWithCenter.push(lng, lat, 0, ...center, radius);\n }\n return verticesWithCenter;\n}\n\nexport function PolygonExtrudeTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as IPosition[][];\n const { positions, index, normals } = extrude_PolygonNormal(\n coordinates,\n true,\n );\n return {\n vertices: positions, // [ x, y, z, uv.x,uv.y ]\n indices: index,\n normals,\n size: 5,\n };\n}\n\nexport function HeatmapGridTriangulation(feature: IEncodeFeature) {\n const { shape } = feature;\n const { positions, index } = getHeatmapGeometry(shape as IShape);\n return {\n vertices: positions, // [ x, y, z ] 多边形顶点\n indices: index,\n size: 3,\n };\n}\n\n/**\n * 图片图层顶点构造\n * @param feature 数据\n */\nexport function RasterImageTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as IPosition[];\n // [ x, y, z. uv.x, uv.y]\n const positions: number[] = [\n ...coordinates[0],\n 0,\n 0,\n 1,\n coordinates[1][0],\n coordinates[0][1],\n 0,\n 1,\n 1,\n ...coordinates[1],\n 0,\n 1,\n 0,\n ...coordinates[0],\n 0,\n 0,\n 1,\n ...coordinates[1],\n 0,\n 1,\n 0,\n coordinates[0][0],\n coordinates[1][1],\n 0,\n 0,\n 0,\n ];\n const indexs = [0, 1, 2, 3, 4, 5];\n return {\n vertices: positions,\n indices: indexs,\n size: 5,\n };\n}\n/**\n * 计算3D弧线顶点\n * @param feature 映射数据\n * @param segNum 弧线线段数\n */\nexport function LineArcTriangulation(\n feature: IEncodeFeature,\n segmentNumber?: number,\n) {\n const segNum = segmentNumber ? segmentNumber : 30;\n const coordinates = feature.coordinates as IPosition[];\n const positions = [];\n const indexArray = [];\n for (let i = 0; i < segNum; i++) {\n // 上线两个顶点\n // [ x, y, z, sx,sy, tx,ty]\n positions.push(\n i,\n 1,\n i,\n coordinates[0][0],\n coordinates[0][1],\n coordinates[1][0],\n coordinates[1][1],\n i,\n -1,\n i,\n coordinates[0][0],\n coordinates[0][1],\n coordinates[1][0],\n coordinates[1][1],\n );\n\n if (i !== segNum - 1) {\n indexArray.push(\n ...[0, 1, 2, 1, 3, 2].map((v) => {\n return i * 2 + v;\n }),\n );\n }\n }\n return {\n vertices: positions,\n indices: indexArray,\n size: 7,\n };\n}\n\n/**\n * 构建热力图密度图的顶点\n * @param feature\n * @returns\n */\nexport function HeatmapTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as number[];\n if (coordinates.length === 2) {\n coordinates.push(0);\n }\n const size = feature.size as number;\n const dir = addDir(-1, 1);\n const dir1 = addDir(1, 1);\n const dir2 = addDir(-1, -1);\n const dir3 = addDir(1, -1);\n // [x,y,z, dirx ,diry, weight]\n const positions = [\n ...coordinates,\n ...dir,\n ...coordinates,\n ...dir2,\n ...coordinates,\n ...dir3,\n ...coordinates,\n ...dir1,\n ];\n const indexArray = [0, 1, 2, 3, 0, 2];\n return {\n vertices: positions,\n indices: indexArray,\n size: 5,\n };\n}\n\n/**\n * 点图层3d geomerty\n * @param shape 3D形状\n */\nfunction getGeometry(shape: ShapeType3D, needFlat = false): IExtrudeGeomety {\n if (GeometryCache && GeometryCache[shape]) {\n return GeometryCache[shape];\n }\n const path = geometryShape[shape]\n ? geometryShape[shape]()\n : geometryShape.cylinder();\n const geometry = extrude_PolygonNormal([path], needFlat);\n GeometryCache[shape] = geometry;\n return geometry;\n}\n\nfunction computeVertexNormals(\n positions: number[],\n indexArray: number[],\n dim: number = 3,\n needFlat: boolean = false,\n) {\n const normals = new Float32Array((positions.length / dim) * 3);\n let vA: number;\n let vB: number;\n let vC: number;\n const cb = vec3.create();\n const ab = vec3.create();\n const normal = vec3.create();\n for (let i = 0, li = indexArray.length; i < li; i += 3) {\n vA = indexArray[i + 0] * 3;\n vB = indexArray[i + 1] * 3;\n vC = indexArray[i + 2] * 3;\n let p1 = [positions[vA], positions[vA + 1]];\n let p2 = [positions[vB], positions[vB + 1]];\n let p3 = [positions[vC], positions[vC + 1]];\n if (needFlat) {\n p1 = lngLatToMeters(p1);\n p2 = lngLatToMeters(p2);\n p3 = lngLatToMeters(p3);\n }\n const [ax, ay] = p1;\n const pA = vec3.fromValues(ax, ay, positions[vA + 2]);\n const [bx, by] = p2;\n const pB = vec3.fromValues(bx, by, positions[vB + 2]);\n const [cx, cy] = p3;\n const pC = vec3.fromValues(cx, cy, positions[vC + 2]);\n vec3.sub(cb, pC, pB);\n vec3.sub(ab, pA, pB);\n vec3.cross(normal, cb, ab);\n normals[vA] += cb[0];\n normals[vA + 1] += cb[1];\n normals[vA + 2] += cb[2];\n normals[vB] += cb[0];\n normals[vB + 1] += cb[1];\n normals[vB + 2] += cb[2];\n normals[vC] += cb[0];\n normals[vC + 1] += cb[1];\n normals[vC + 2] += cb[2];\n }\n normalizeNormals(normals);\n return normals;\n}\n\nfunction normalizeNormals(normals: Float32Array) {\n for (let i = 0, li = normals.length; i < li; i += 3) {\n const normal = vec3.fromValues(normals[i], normals[i + 1], normals[i + 2]);\n const newNormal = vec3.create();\n vec3.normalize(newNormal, normal);\n normals.set(newNormal, i);\n }\n}\n\nfunction checkIsClosed(points: number[][][]) {\n const p1 = points[0][0];\n const p2 = points[0][points[0].length - 1];\n return p1[0] === p2[0] && p1[1] === p2[1];\n}\n\nfunction getHeatmapGeometry(shape: ShapeType2D | ShapeType3D): IExtrudeGeomety {\n const shape3d = [\n 'cylinder',\n 'triangleColumn',\n 'hexagonColumn',\n 'squareColumn',\n ];\n const path = geometryShape[shape]\n ? geometryShape[shape]()\n : geometryShape.circle();\n const geometry =\n shape3d.indexOf(shape) === -1\n ? fillPolygon([path])\n : extrudePolygon([path]);\n // const geometry = fillPolygon([path]);\n return geometry;\n}\n// 热力图计算范围\nfunction addDir(dirX: number, dirY: number) {\n const x = (dirX + 1) / 2;\n const y = (dirY + 1) / 2;\n return [x, y];\n}\n\n/**\n * 构建地球三角网格\n * @returns\n */\nexport function earthTriangulation() {\n const earthmesh = primitiveSphere(EARTH_RADIUS, { segments: EARTH_SEGMENTS });\n const { positionsArr, indicesArr, normalArr } = earthmesh;\n return {\n vertices: positionsArr,\n indices: indicesArr,\n size: 5,\n normals: normalArr,\n };\n}\n\nexport function earthOuterTriangulation() {\n const earthmesh = primitiveSphere(EARTH_RADIUS + EARTH_RADIUS_OUTER, {\n segments: EARTH_SEGMENTS,\n });\n const { positionsArr, indicesArr, normalArr } = earthmesh;\n return {\n vertices: positionsArr,\n indices: indicesArr,\n size: 5,\n normals: normalArr,\n };\n}\n"],"file":"triangulation.js"}
@@ -242,7 +242,7 @@ var FillImageModel = function (_BaseModel) {
242
242
  type = _this$getShaders.type;
243
243
 
244
244
  return [this.layer.buildLayerModel({
245
- moduleName: 'pointfill-' + type,
245
+ moduleName: 'pointfill_' + type,
246
246
  vertexShader: vert,
247
247
  fragmentShader: frag,
248
248
  triangulation: _triangulation.PointFillTriangulation,
@@ -267,6 +267,8 @@ var FillImageModel = function (_BaseModel) {
267
267
  value: function clearModels() {
268
268
  var _this$dataTexture;
269
269
 
270
+ this.iconService.off('imageUpdate', this.updateTexture);
271
+ this.texture.destroy();
270
272
  (_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
271
273
  }
272
274
  }, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/point/models/fillmage.ts"],"names":["FillImageModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","mag","min","mipmap","layer","renderLayers","gl","LINEAR","LINEAR_MIPMAP_LINEAR","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","strokeOpacity","strokeWidth","stroke","offsets","blend","rotation","getDirty","bind","rotateFlag","mapService","version","radian","Math","PI","getRotation","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","u_isMeter","Number","isMeter","u_RotateMatrix","Float32Array","cos","sin","u_additive","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_texture","u_textSize","u_opacity","u_offsets","isOffsetStatic","styleAttributeService","createAttributesAndIndices","PointFillTriangulation","updateTexture","on","unit","Version","L7MAP","GLOBEL","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","buildLayerModel","moduleName","vertexShader","fragmentShader","triangulation","depth","enable","getBlend","stencil","pointFillFrag","pointFillVert","destroy","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","iconMap","getIconMap","shape","extrude","extrudeIndex","Array","isArray","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAttribute,\n IElements,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport { PointFillTriangulation } from '../../core/triangulation';\n// static pointLayer shader - not support animate\nimport pointFillFrag from '../shaders/image/fillImage_frag.glsl';\nimport pointFillVert from '../shaders/image/fillImage_vert.glsl';\n\nimport { isNumber } from 'lodash';\n\nimport { Version } from '@antv/l7-maps';\n\nexport default class FillImageModel extends BaseModel {\n public meter2coord: number = 1;\n private texture: ITexture2D;\n private isMeter: boolean = false;\n private radian: number = 0; // 旋转的弧度\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 rotation,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n /**\n * rotateFlag\n * L7MAP 1\n * MAPBOX 1\n * GAODE2.x -1\n * GAODE1.x -1\n */\n let rotateFlag = 1;\n if (\n this.mapService.version === 'GAODE2.x' ||\n this.mapService.version === 'GAODE1.x'\n ) {\n rotateFlag = -1;\n }\n // 控制图标的旋转角度(绕 Z 轴旋转)\n this.radian = rotation\n ? (rotateFlag * Math.PI * rotation) / 180\n : (rotateFlag * Math.PI * (this.mapService.getRotation() % 360)) / 180;\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_isMeter: Number(this.isMeter),\n u_RotateMatrix: new Float32Array([\n Math.cos(this.radian),\n Math.sin(this.radian),\n -Math.sin(this.radian),\n Math.cos(this.radian),\n ]),\n u_additive: blend === 'additive' ? 1.0 : 0.0,\n\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_texture: this.texture,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n\n public 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.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\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 // @ts-ignore\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 } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { frag, vert, type } = this.getShaders();\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointfill-' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: PointFillTriangulation,\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n public getShaders(): { frag: string; vert: string; type: string } {\n return {\n frag: pointFillFrag,\n vert: pointFillVert,\n type: 'normal',\n };\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n // overwrite baseModel func\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { shape } = feature;\n const { x, y } = iconMap[shape as string] || { x: 0, y: 0 };\n return [x, y];\n },\n },\n });\n\n 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 const extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\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\n private updateTexture = () => {\n const { createTexture2D } = this.rendererService;\n if (this.texture) {\n this.texture.update({\n data: this.iconService.getCanvas(),\n mag: 'linear',\n min: 'linear mipmap nearest',\n mipmap: true,\n });\n // this.layer.render();\n // TODO: 更新完纹理后在更新的图层的时候需要更新所有的图层\n this.layer.renderLayers();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.LINEAR,\n // min: gl.LINEAR,\n min: gl.LINEAR_MIPMAP_LINEAR,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n mipmap: true,\n });\n };\n}\n"],"file":"fillmage.js"}
1
+ {"version":3,"sources":["../../../src/point/models/fillmage.ts"],"names":["FillImageModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","mag","min","mipmap","layer","renderLayers","gl","LINEAR","LINEAR_MIPMAP_LINEAR","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","strokeOpacity","strokeWidth","stroke","offsets","blend","rotation","getDirty","bind","rotateFlag","mapService","version","radian","Math","PI","getRotation","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","u_isMeter","Number","isMeter","u_RotateMatrix","Float32Array","cos","sin","u_additive","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_texture","u_textSize","u_opacity","u_offsets","isOffsetStatic","styleAttributeService","createAttributesAndIndices","PointFillTriangulation","updateTexture","on","unit","Version","L7MAP","GLOBEL","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","buildLayerModel","moduleName","vertexShader","fragmentShader","triangulation","depth","enable","getBlend","stencil","pointFillFrag","pointFillVert","off","destroy","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","iconMap","getIconMap","shape","extrude","extrudeIndex","Array","isArray","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAttribute,\n IElements,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport { PointFillTriangulation } from '../../core/triangulation';\n// static pointLayer shader - not support animate\nimport pointFillFrag from '../shaders/image/fillImage_frag.glsl';\nimport pointFillVert from '../shaders/image/fillImage_vert.glsl';\n\nimport { isNumber } from 'lodash';\n\nimport { Version } from '@antv/l7-maps';\n\nexport default class FillImageModel extends BaseModel {\n public meter2coord: number = 1;\n private texture: ITexture2D;\n private isMeter: boolean = false;\n private radian: number = 0; // 旋转的弧度\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 rotation,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n /**\n * rotateFlag\n * L7MAP 1\n * MAPBOX 1\n * GAODE2.x -1\n * GAODE1.x -1\n */\n let rotateFlag = 1;\n if (\n this.mapService.version === 'GAODE2.x' ||\n this.mapService.version === 'GAODE1.x'\n ) {\n rotateFlag = -1;\n }\n // 控制图标的旋转角度(绕 Z 轴旋转)\n this.radian = rotation\n ? (rotateFlag * Math.PI * rotation) / 180\n : (rotateFlag * Math.PI * (this.mapService.getRotation() % 360)) / 180;\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_isMeter: Number(this.isMeter),\n u_RotateMatrix: new Float32Array([\n Math.cos(this.radian),\n Math.sin(this.radian),\n -Math.sin(this.radian),\n Math.cos(this.radian),\n ]),\n u_additive: blend === 'additive' ? 1.0 : 0.0,\n\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_texture: this.texture,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n\n public 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.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\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 // @ts-ignore\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 } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { frag, vert, type } = this.getShaders();\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointfill_' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: PointFillTriangulation,\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n public getShaders(): { frag: string; vert: string; type: string } {\n return {\n frag: pointFillFrag,\n vert: pointFillVert,\n type: 'normal',\n };\n }\n\n public clearModels() {\n this.iconService.off('imageUpdate', this.updateTexture);\n this.texture.destroy();\n this.dataTexture?.destroy();\n }\n\n // overwrite baseModel func\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { shape } = feature;\n const { x, y } = iconMap[shape as string] || { x: 0, y: 0 };\n return [x, y];\n },\n },\n });\n\n 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 const extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\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\n private updateTexture = () => {\n const { createTexture2D } = this.rendererService;\n if (this.texture) {\n this.texture.update({\n data: this.iconService.getCanvas(),\n mag: 'linear',\n min: 'linear mipmap nearest',\n mipmap: true,\n });\n // this.layer.render();\n // TODO: 更新完纹理后在更新的图层的时候需要更新所有的图层\n this.layer.renderLayers();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.LINEAR,\n // min: gl.LINEAR,\n min: gl.LINEAR_MIPMAP_LINEAR,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n mipmap: true,\n });\n };\n}\n"],"file":"fillmage.js"}
@@ -85,6 +85,8 @@ var PolygonLayer = function (_BaseLayer) {
85
85
  return 'fill';
86
86
  } else if (shape === 'extrude') {
87
87
  return 'extrude';
88
+ } else if (shape === 'water') {
89
+ return 'water';
88
90
  } else if (shape === 'line') {
89
91
  return 'line';
90
92
  } else {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/polygon/index.ts"],"names":["PolygonLayer","shape","getModelType","layerModel","PolygonModels","models","initModels","buildModels","properties","opacity","type","minimum","maximum","shapeAttribute","styleAttributeService","getLayerStyleAttribute","scale","field","getPointModelType","layerData","getEncodedData","getLayerConfig","shape2d","shape3d","iconMap","iconService","getIconMap","item","find","fe","hasOwnProperty","indexOf","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;;;;;IAEqBA,Y;;;;;;;;;;;;;;;uFACG,c;;;;;;WACtB,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIC,gBAAcH,KAAd,CAAJ,CAAyB,IAAzB,CAAlB;AACA,WAAKI,MAAL,GAAc,KAAKF,UAAL,CAAgBG,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKF,UAAL,CAAgBI,WAAhB,EAAd;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,wBAA2C;AAAA;;AACzC,UAAMC,cAAc,GAAG,KAAKC,qBAAL,CAA2BC,sBAA3B,CACrB,OADqB,CAAvB;AAGA,UAAMd,KAAK,GAAGY,cAAH,aAAGA,cAAH,gDAAGA,cAAc,CAAEG,KAAnB,0DAAG,sBAAuBC,KAArC;;AACA,UAAIhB,KAAK,KAAK,MAAd,EAAsB;AACpB,eAAO,MAAP;AACD,OAFD,MAEO,IAAIA,KAAK,KAAK,SAAd,EAAyB;AAC9B,eAAO,SAAP;AACD,OAFM,MAEA,IAAIA,KAAK,KAAK,MAAd,EAAsB;AAC3B,eAAO,MAAP;AACD,OAFM,MAEA;AACL,eAAO,KAAKiB,iBAAL,EAAP;AACD;AACF;;;WACD,6BAAgD;AAG9C,UAAMC,SAAS,GAAG,KAAKC,cAAL,EAAlB;;AACA,iCAA6B,KAAKC,cAAL,EAA7B;AAAA,UAAQC,OAAR,wBAAQA,OAAR;AAAA,UAAiBC,OAAjB,wBAAiBA,OAAjB;;AACA,UAAMC,OAAO,GAAG,KAAKC,WAAL,CAAiBC,UAAjB,EAAhB;AACA,UAAMC,IAAI,GAAGR,SAAS,CAACS,IAAV,CAAe,UAACC,EAAD,EAAwB;AAClD,eAAOA,EAAE,CAACC,cAAH,CAAkB,OAAlB,CAAP;AACD,OAFY,CAAb;;AAGA,UAAI,CAACH,IAAL,EAAW;AACT,eAAO,MAAP;AACD,OAFD,MAEO;AACL,YAAM1B,KAAK,GAAG0B,IAAI,CAAC1B,KAAnB;;AACA,YAAIA,KAAK,KAAK,KAAd,EAAqB;AACnB,iBAAO,cAAP;AACD;;AACD,YAAI,CAAAqB,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAES,OAAT,CAAiB9B,KAAjB,OAAsC,CAAC,CAA3C,EAA8C;AAC5C,iBAAO,YAAP;AACD;;AACD,YAAI,CAAAsB,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEQ,OAAT,CAAiB9B,KAAjB,OAAsC,CAAC,CAA3C,EAA8C;AAC5C,iBAAO,eAAP;AACD;;AACD,YAAIuB,OAAO,CAACM,cAAR,CAAuB7B,KAAvB,CAAJ,EAA6C;AAC3C,iBAAO,aAAP;AACD;;AACD,eAAO,MAAP;AACD;AACF;;;EAhEuC+B,mB","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport BaseLayer from '../core/BaseLayer';\nimport { IPolygonLayerStyleOptions } from '../core/interface';\nimport PolygonModels, { PolygonModelType } from './models/';\n\nexport default class PolygonLayer extends BaseLayer<IPolygonLayerStyleOptions> {\n public type: string = 'PolygonLayer';\n public buildModels() {\n const shape = this.getModelType();\n this.layerModel = new PolygonModels[shape](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getModelType(): PolygonModelType {\n const shapeAttribute = this.styleAttributeService.getLayerStyleAttribute(\n 'shape',\n );\n const shape = shapeAttribute?.scale?.field as PolygonModelType;\n if (shape === 'fill') {\n return 'fill';\n } else if (shape === 'extrude') {\n return 'extrude';\n } else if (shape === 'line') {\n return 'line';\n } else {\n return this.getPointModelType();\n }\n }\n protected getPointModelType(): PolygonModelType {\n // pointlayer\n // 2D、 3d、 shape、image、text、normal、\n const layerData = this.getEncodedData();\n const { shape2d, shape3d } = this.getLayerConfig();\n const iconMap = this.iconService.getIconMap();\n const item = layerData.find((fe: IEncodeFeature) => {\n return fe.hasOwnProperty('shape');\n });\n if (!item) {\n return 'fill';\n } else {\n const shape = item.shape;\n if (shape === 'dot') {\n return 'point_normal';\n }\n if (shape2d?.indexOf(shape as string) !== -1) {\n return 'point_fill';\n }\n if (shape3d?.indexOf(shape as string) !== -1) {\n return 'point_extrude';\n }\n if (iconMap.hasOwnProperty(shape as string)) {\n return 'point_image';\n }\n return 'text';\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/polygon/index.ts"],"names":["PolygonLayer","shape","getModelType","layerModel","PolygonModels","models","initModels","buildModels","properties","opacity","type","minimum","maximum","shapeAttribute","styleAttributeService","getLayerStyleAttribute","scale","field","getPointModelType","layerData","getEncodedData","getLayerConfig","shape2d","shape3d","iconMap","iconService","getIconMap","item","find","fe","hasOwnProperty","indexOf","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;;;;;IAEqBA,Y;;;;;;;;;;;;;;;uFACG,c;;;;;;WACtB,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIC,gBAAcH,KAAd,CAAJ,CAAyB,IAAzB,CAAlB;AACA,WAAKI,MAAL,GAAc,KAAKF,UAAL,CAAgBG,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKF,UAAL,CAAgBI,WAAhB,EAAd;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,wBAA2C;AAAA;;AACzC,UAAMC,cAAc,GAAG,KAAKC,qBAAL,CAA2BC,sBAA3B,CACrB,OADqB,CAAvB;AAGA,UAAMd,KAAK,GAAGY,cAAH,aAAGA,cAAH,gDAAGA,cAAc,CAAEG,KAAnB,0DAAG,sBAAuBC,KAArC;;AACA,UAAIhB,KAAK,KAAK,MAAd,EAAsB;AACpB,eAAO,MAAP;AACD,OAFD,MAEO,IAAIA,KAAK,KAAK,SAAd,EAAyB;AAC9B,eAAO,SAAP;AACD,OAFM,MAEA,IAAIA,KAAK,KAAK,OAAd,EAAuB;AAC5B,eAAO,OAAP;AACD,OAFM,MAEA,IAAIA,KAAK,KAAK,MAAd,EAAsB;AAC3B,eAAO,MAAP;AACD,OAFM,MAEA;AACL,eAAO,KAAKiB,iBAAL,EAAP;AACD;AACF;;;WACD,6BAAgD;AAG9C,UAAMC,SAAS,GAAG,KAAKC,cAAL,EAAlB;;AACA,iCAA6B,KAAKC,cAAL,EAA7B;AAAA,UAAQC,OAAR,wBAAQA,OAAR;AAAA,UAAiBC,OAAjB,wBAAiBA,OAAjB;;AACA,UAAMC,OAAO,GAAG,KAAKC,WAAL,CAAiBC,UAAjB,EAAhB;AACA,UAAMC,IAAI,GAAGR,SAAS,CAACS,IAAV,CAAe,UAACC,EAAD,EAAwB;AAClD,eAAOA,EAAE,CAACC,cAAH,CAAkB,OAAlB,CAAP;AACD,OAFY,CAAb;;AAGA,UAAI,CAACH,IAAL,EAAW;AACT,eAAO,MAAP;AACD,OAFD,MAEO;AACL,YAAM1B,KAAK,GAAG0B,IAAI,CAAC1B,KAAnB;;AACA,YAAIA,KAAK,KAAK,KAAd,EAAqB;AACnB,iBAAO,cAAP;AACD;;AACD,YAAI,CAAAqB,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAES,OAAT,CAAiB9B,KAAjB,OAAsC,CAAC,CAA3C,EAA8C;AAC5C,iBAAO,YAAP;AACD;;AACD,YAAI,CAAAsB,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEQ,OAAT,CAAiB9B,KAAjB,OAAsC,CAAC,CAA3C,EAA8C;AAC5C,iBAAO,eAAP;AACD;;AACD,YAAIuB,OAAO,CAACM,cAAR,CAAuB7B,KAAvB,CAAJ,EAA6C;AAC3C,iBAAO,aAAP;AACD;;AACD,eAAO,MAAP;AACD;AACF;;;EAlEuC+B,mB","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport BaseLayer from '../core/BaseLayer';\nimport { IPolygonLayerStyleOptions } from '../core/interface';\nimport PolygonModels, { PolygonModelType } from './models/';\n\nexport default class PolygonLayer extends BaseLayer<IPolygonLayerStyleOptions> {\n public type: string = 'PolygonLayer';\n public buildModels() {\n const shape = this.getModelType();\n this.layerModel = new PolygonModels[shape](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getModelType(): PolygonModelType {\n const shapeAttribute = this.styleAttributeService.getLayerStyleAttribute(\n 'shape',\n );\n const shape = shapeAttribute?.scale?.field as PolygonModelType;\n if (shape === 'fill') {\n return 'fill';\n } else if (shape === 'extrude') {\n return 'extrude';\n } else if (shape === 'water') {\n return 'water';\n } else if (shape === 'line') {\n return 'line';\n } else {\n return this.getPointModelType();\n }\n }\n protected getPointModelType(): PolygonModelType {\n // pointlayer\n // 2D、 3d、 shape、image、text、normal、\n const layerData = this.getEncodedData();\n const { shape2d, shape3d } = this.getLayerConfig();\n const iconMap = this.iconService.getIconMap();\n const item = layerData.find((fe: IEncodeFeature) => {\n return fe.hasOwnProperty('shape');\n });\n if (!item) {\n return 'fill';\n } else {\n const shape = item.shape;\n if (shape === 'dot') {\n return 'point_normal';\n }\n if (shape2d?.indexOf(shape as string) !== -1) {\n return 'point_fill';\n }\n if (shape3d?.indexOf(shape as string) !== -1) {\n return 'point_extrude';\n }\n if (iconMap.hasOwnProperty(shape as string)) {\n return 'point_image';\n }\n return 'text';\n }\n }\n}\n"],"file":"index.js"}
@@ -23,6 +23,8 @@ var _extrude2 = _interopRequireDefault(require("./extrude"));
23
23
 
24
24
  var _fill2 = _interopRequireDefault(require("./fill"));
25
25
 
26
+ var _water = _interopRequireDefault(require("./water"));
27
+
26
28
  var PolygonModels = {
27
29
  fill: _fill2.default,
28
30
  line: _line.default,
@@ -31,7 +33,8 @@ var PolygonModels = {
31
33
  point_fill: _fill.default,
32
34
  point_image: _image.default,
33
35
  point_normal: _normal.default,
34
- point_extrude: _extrude.default
36
+ point_extrude: _extrude.default,
37
+ water: _water.default
35
38
  };
36
39
  var _default = PolygonModels;
37
40
  exports.default = _default;