@antv/l7-layers 2.7.29 → 2.7.30

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.
@@ -19,7 +19,7 @@ export default class PointLayer extends BaseLayer<IPointLayerStyleOptions> {
19
19
  };
20
20
  };
21
21
  };
22
- protected getDefaultConfig(): {
22
+ protected getDefaultConfig(): {} | {
23
23
  blend: string;
24
24
  } | {} | {
25
25
  blend: string;
package/es/point/index.js CHANGED
@@ -110,6 +110,7 @@ var PointLayer = function (_BaseLayer) {
110
110
  value: function getDefaultConfig() {
111
111
  var type = this.getModelType();
112
112
  var defaultConfig = {
113
+ fillImage: {},
113
114
  normal: {
114
115
  blend: 'additive'
115
116
  },
@@ -129,7 +130,7 @@ var PointLayer = function (_BaseLayer) {
129
130
  }, {
130
131
  key: "getModelType",
131
132
  value: function getModelType() {
132
- var PointTypes = ['fill', 'image', 'normal', 'simplePoint', 'extrude', 'text', 'icon'];
133
+ var PointTypes = ['fillImage', 'fill', 'image', 'normal', 'simplePoint', 'extrude', 'text', 'icon'];
133
134
 
134
135
  if (this.layerType && PointTypes.includes(this.layerType)) {
135
136
  return this.layerType;
@@ -159,6 +160,10 @@ var PointLayer = function (_BaseLayer) {
159
160
  return 'simplePoint';
160
161
  }
161
162
 
163
+ if (shape === 'fillImage') {
164
+ return 'fillImage';
165
+ }
166
+
162
167
  if ((shape2d === null || shape2d === void 0 ? void 0 : shape2d.indexOf(shape)) !== -1) {
163
168
  return 'fill';
164
169
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/point/index.ts"],"names":["BaseLayer","PointModels","PointLayer","modelType","getModelType","layerModel","models","initModels","buildModels","shapeOption","field","values","getLayerConfig","shape2d","shape3d","iconMap","iconService","getIconMap","indexOf","Array","v","hasOwnProperty","properties","opacity","type","minimum","maximum","defaultConfig","normal","blend","simplePoint","fill","extrude","image","icon","text","PointTypes","layerType","includes","layerData","getEncodedData","item","find","fe","getModelTypeWillEmptyData","shape","fontService","getGlyph"],"mappings":"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","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport BaseLayer from '../core/BaseLayer';\nimport { IPointLayerStyleOptions } from '../core/interface';\nimport PointModels, { PointType } from './models/index';\n\nexport default class PointLayer extends BaseLayer<IPointLayerStyleOptions> {\n public type: string = 'PointLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new PointModels[modelType](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n /**\n * 在未传入数据的时候判断点图层的 shape 类型\n * @returns\n */\n public getModelTypeWillEmptyData(): PointType {\n if (this.shapeOption) {\n const { field, values } = this.shapeOption;\n const { shape2d, shape3d } = this.getLayerConfig();\n\n const iconMap = this.iconService.getIconMap();\n\n if (field && shape2d?.indexOf(field as string) !== -1) {\n return 'fill';\n }\n\n if (values && values instanceof Array) {\n for (const v of values) {\n if (typeof v === 'string' && iconMap.hasOwnProperty(v as string)) {\n return 'image';\n }\n }\n }\n }\n return 'normal';\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n normal: {\n blend: 'additive',\n },\n simplePoint: {},\n fill: { blend: 'normal' },\n extrude: {},\n image: {},\n icon: {},\n text: {\n blend: 'normal',\n },\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): PointType {\n const PointTypes = [\n 'fill',\n 'image',\n 'normal',\n 'simplePoint',\n 'extrude',\n 'text',\n 'icon',\n ];\n if (this.layerType && PointTypes.includes(this.layerType)) {\n return this.layerType as PointType;\n }\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 'normal';\n return this.getModelTypeWillEmptyData();\n } else {\n const shape = item.shape;\n if (shape === 'dot') {\n return 'normal';\n }\n if (shape === 'simple') {\n return 'simplePoint';\n }\n if (shape2d?.indexOf(shape as string) !== -1) {\n return 'fill';\n }\n if (shape3d?.indexOf(shape as string) !== -1) {\n return 'extrude';\n }\n if (iconMap.hasOwnProperty(shape as string)) {\n return 'image';\n }\n if (this.fontService.getGlyph(shape as string) !== '') {\n return 'icon';\n }\n return 'text';\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/point/index.ts"],"names":["BaseLayer","PointModels","PointLayer","modelType","getModelType","layerModel","models","initModels","buildModels","shapeOption","field","values","getLayerConfig","shape2d","shape3d","iconMap","iconService","getIconMap","indexOf","Array","v","hasOwnProperty","properties","opacity","type","minimum","maximum","defaultConfig","fillImage","normal","blend","simplePoint","fill","extrude","image","icon","text","PointTypes","layerType","includes","layerData","getEncodedData","item","find","fe","getModelTypeWillEmptyData","shape","fontService","getGlyph"],"mappings":"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","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport BaseLayer from '../core/BaseLayer';\nimport { IPointLayerStyleOptions } from '../core/interface';\nimport PointModels, { PointType } from './models/index';\n\nexport default class PointLayer extends BaseLayer<IPointLayerStyleOptions> {\n public type: string = 'PointLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new PointModels[modelType](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n /**\n * 在未传入数据的时候判断点图层的 shape 类型\n * @returns\n */\n public getModelTypeWillEmptyData(): PointType {\n if (this.shapeOption) {\n const { field, values } = this.shapeOption;\n const { shape2d, shape3d } = this.getLayerConfig();\n\n const iconMap = this.iconService.getIconMap();\n\n if (field && shape2d?.indexOf(field as string) !== -1) {\n return 'fill';\n }\n\n if (values && values instanceof Array) {\n for (const v of values) {\n if (typeof v === 'string' && iconMap.hasOwnProperty(v as string)) {\n return 'image';\n }\n }\n }\n }\n return 'normal';\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n fillImage: {},\n normal: {\n blend: 'additive',\n },\n simplePoint: {},\n fill: { blend: 'normal' },\n extrude: {},\n image: {},\n icon: {},\n text: {\n blend: 'normal',\n },\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): PointType {\n const PointTypes = [\n 'fillImage',\n 'fill',\n 'image',\n 'normal',\n 'simplePoint',\n 'extrude',\n 'text',\n 'icon',\n ];\n if (this.layerType && PointTypes.includes(this.layerType)) {\n return this.layerType as PointType;\n }\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 'normal';\n return this.getModelTypeWillEmptyData();\n } else {\n const shape = item.shape;\n if (shape === 'dot') {\n return 'normal';\n }\n if (shape === 'simple') {\n return 'simplePoint';\n }\n if (shape === 'fillImage') {\n return 'fillImage';\n }\n if (shape2d?.indexOf(shape as string) !== -1) {\n return 'fill';\n }\n if (shape3d?.indexOf(shape as string) !== -1) {\n return 'extrude';\n }\n if (iconMap.hasOwnProperty(shape as string)) {\n return 'image';\n }\n if (this.fontService.getGlyph(shape as string) !== '') {\n return 'icon';\n }\n return 'text';\n }\n }\n}\n"],"file":"index.js"}
@@ -0,0 +1,29 @@
1
+ import { IAttribute, IElements, IModel, IModelUniform } from '@antv/l7-core';
2
+ import BaseModel from '../../core/BaseModel';
3
+ export default class FillImageModel extends BaseModel {
4
+ meter2coord: number;
5
+ private texture;
6
+ private isMeter;
7
+ getUninforms(): IModelUniform;
8
+ getAttribute(): {
9
+ attributes: {
10
+ [attributeName: string]: IAttribute;
11
+ };
12
+ elements: IElements;
13
+ };
14
+ initModels(): IModel[];
15
+ /**
16
+ * 计算等面积点图层(unit meter)笛卡尔坐标标度与世界坐标标度的比例
17
+ * @returns
18
+ */
19
+ calMeter2Coord(): void;
20
+ buildModels(): IModel[];
21
+ getShaders(): {
22
+ frag: string;
23
+ vert: string;
24
+ type: string;
25
+ };
26
+ clearModels(): void;
27
+ protected registerBuiltinAttributes(): void;
28
+ private updateTexture;
29
+ }
@@ -0,0 +1,319 @@
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 { PointFillTriangulation } from '../../core/triangulation';
19
+ var pointFillFrag = "uniform sampler2D u_texture;\nuniform vec2 u_textSize;\n\nuniform float u_additive;\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\nvarying float v_radius;\n\n#pragma include \"sdf_2d\"\n#pragma include \"picking\"\nvarying vec2 v_uv; // \u672C\u8EAB\u7684 uv \u5750\u6807\nvarying vec2 v_Iconuv;\n\nvoid main() {\n\n float opacity = styleMappingMat[0][0];\n\n vec2 pos = v_Iconuv / u_textSize + v_uv / u_textSize * 64.;\n gl_FragColor = texture2D(u_texture, pos);\n gl_FragColor.a *= opacity;\n\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
20
+ var pointFillVert = "attribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Extrude;\nattribute float a_Size;\nattribute vec2 a_Uv;\n\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float u_isMeter;\n\nvarying float v_radius;\nvarying vec2 v_uv; // \u672C\u8EAB\u7684 uv \u5750\u6807\nvarying vec2 v_Iconuv; // icon \u8D34\u56FE\u7684 uv \u5750\u6807\n\nuniform float u_opacity : 1;\nuniform vec2 u_offsets;\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\n\nvoid main() {\n vec3 extrude = a_Extrude;\n\n v_uv = (a_Extrude.xy + 1.0)/2.0;\n v_uv.y = 1.0 - v_uv.y;\n v_Iconuv = a_Uv;\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - empty - empty - empty\n 0.0, 0.0, 0.0, 0.0, // empty - empty - empty - empty\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n\n vec2 textrueOffsets = vec2(0.0, 0.0);\n if(hasOffsets()) {\n vec2 valueXPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.r = pos2value(valueXPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n\n vec2 valueYPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.g = pos2value(valueYPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n } else {\n textrueOffsets = u_offsets;\n }\n\n // cal style mapping\n\n // radius(16-bit)\n v_radius = a_Size;\n\n // TODO: billboard\n // anti-alias\n \n\n vec2 offset = (extrude.xy * (a_Size) + textrueOffsets);\n vec3 aPosition = a_Position;\n if(u_isMeter < 1.0) {\n // \u4E0D\u4EE5\u7C73\u4E3A\u5B9E\u9645\u5355\u4F4D\n offset = project_pixel(offset);\n } else {\n // \u4EE5\u7C73\u4E3A\u5B9E\u9645\u5355\u4F4D\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n aPosition.xy += offset;\n offset.x = 0.0;\n offset.y = 0.0;\n }\n }\n\n\n // vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));\n vec4 project_pos = project_position(vec4(aPosition.xy, 0.0, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * vec4(project_pos.xy + offset, 0.0, 1.0);\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n }\n \n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, 0.0, 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
21
+ import { Version } from '@antv/l7-maps';
22
+
23
+ var FillImageModel = function (_BaseModel) {
24
+ _inherits(FillImageModel, _BaseModel);
25
+
26
+ var _super = _createSuper(FillImageModel);
27
+
28
+ function FillImageModel() {
29
+ var _this;
30
+
31
+ _classCallCheck(this, FillImageModel);
32
+
33
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
34
+ args[_key] = arguments[_key];
35
+ }
36
+
37
+ _this = _super.call.apply(_super, [this].concat(args));
38
+
39
+ _defineProperty(_assertThisInitialized(_this), "meter2coord", 1);
40
+
41
+ _defineProperty(_assertThisInitialized(_this), "texture", void 0);
42
+
43
+ _defineProperty(_assertThisInitialized(_this), "isMeter", false);
44
+
45
+ _defineProperty(_assertThisInitialized(_this), "updateTexture", function () {
46
+ var createTexture2D = _this.rendererService.createTexture2D;
47
+
48
+ if (_this.texture) {
49
+ _this.texture.update({
50
+ data: _this.iconService.getCanvas(),
51
+ mag: 'linear',
52
+ min: 'linear mipmap nearest',
53
+ mipmap: true
54
+ });
55
+
56
+ _this.layer.renderLayers();
57
+
58
+ return;
59
+ }
60
+
61
+ _this.texture = createTexture2D({
62
+ data: _this.iconService.getCanvas(),
63
+ mag: gl.LINEAR,
64
+ min: gl.LINEAR_MIPMAP_LINEAR,
65
+ premultiplyAlpha: false,
66
+ width: 1024,
67
+ height: _this.iconService.canvasHeight || 128,
68
+ mipmap: true
69
+ });
70
+ });
71
+
72
+ return _this;
73
+ }
74
+
75
+ _createClass(FillImageModel, [{
76
+ key: "getUninforms",
77
+ value: function getUninforms() {
78
+ var _ref = this.layer.getLayerConfig(),
79
+ _ref$opacity = _ref.opacity,
80
+ opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
81
+ _ref$strokeOpacity = _ref.strokeOpacity,
82
+ strokeOpacity = _ref$strokeOpacity === void 0 ? 1 : _ref$strokeOpacity,
83
+ _ref$strokeWidth = _ref.strokeWidth,
84
+ strokeWidth = _ref$strokeWidth === void 0 ? 0 : _ref$strokeWidth,
85
+ _ref$stroke = _ref.stroke,
86
+ stroke = _ref$stroke === void 0 ? 'rgba(0,0,0,0)' : _ref$stroke,
87
+ _ref$offsets = _ref.offsets,
88
+ offsets = _ref$offsets === void 0 ? [0, 0] : _ref$offsets,
89
+ blend = _ref.blend;
90
+
91
+ if (this.rendererService.getDirty()) {
92
+ this.texture.bind();
93
+ }
94
+
95
+ if (this.dataTextureTest && this.dataTextureNeedUpdate({
96
+ opacity: opacity,
97
+ strokeOpacity: strokeOpacity,
98
+ strokeWidth: strokeWidth,
99
+ stroke: stroke,
100
+ offsets: offsets
101
+ })) {
102
+ this.judgeStyleAttributes({
103
+ opacity: opacity,
104
+ strokeOpacity: strokeOpacity,
105
+ strokeWidth: strokeWidth,
106
+ stroke: stroke,
107
+ offsets: offsets
108
+ });
109
+ var encodeData = this.layer.getEncodedData();
110
+
111
+ var _this$calDataFrame = this.calDataFrame(this.cellLength, encodeData, this.cellProperties),
112
+ data = _this$calDataFrame.data,
113
+ width = _this$calDataFrame.width,
114
+ height = _this$calDataFrame.height;
115
+
116
+ this.rowCount = height;
117
+ this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
118
+ flipY: true,
119
+ data: data,
120
+ format: gl.LUMINANCE,
121
+ type: gl.FLOAT,
122
+ width: width,
123
+ height: height
124
+ }) : this.createTexture2D({
125
+ flipY: true,
126
+ data: [1],
127
+ format: gl.LUMINANCE,
128
+ type: gl.FLOAT,
129
+ width: 1,
130
+ height: 1
131
+ });
132
+ }
133
+
134
+ return {
135
+ u_isMeter: Number(this.isMeter),
136
+ u_additive: blend === 'additive' ? 1.0 : 0.0,
137
+ u_dataTexture: this.dataTexture,
138
+ u_cellTypeLayout: this.getCellTypeLayout(),
139
+ u_texture: this.texture,
140
+ u_textSize: [1024, this.iconService.canvasHeight || 128],
141
+ u_opacity: _isNumber(opacity) ? opacity : 1.0,
142
+ u_offsets: this.isOffsetStatic(offsets) ? offsets : [0, 0]
143
+ };
144
+ }
145
+ }, {
146
+ key: "getAttribute",
147
+ value: function getAttribute() {
148
+ return this.styleAttributeService.createAttributesAndIndices(this.layer.getEncodedData(), PointFillTriangulation);
149
+ }
150
+ }, {
151
+ key: "initModels",
152
+ value: function initModels() {
153
+ this.updateTexture();
154
+ this.iconService.on('imageUpdate', this.updateTexture);
155
+
156
+ var _ref2 = this.layer.getLayerConfig(),
157
+ _ref2$unit = _ref2.unit,
158
+ unit = _ref2$unit === void 0 ? 'l7size' : _ref2$unit;
159
+
160
+ var version = this.mapService.version;
161
+
162
+ if (unit === 'meter' && version !== Version.L7MAP && version !== Version.GLOBEL) {
163
+ this.isMeter = true;
164
+ this.calMeter2Coord();
165
+ }
166
+
167
+ return this.buildModels();
168
+ }
169
+ }, {
170
+ key: "calMeter2Coord",
171
+ value: function calMeter2Coord() {
172
+ var _this$layer$getSource = _slicedToArray(this.layer.getSource().extent, 4),
173
+ minLng = _this$layer$getSource[0],
174
+ minLat = _this$layer$getSource[1],
175
+ maxLng = _this$layer$getSource[2],
176
+ maxLat = _this$layer$getSource[3];
177
+
178
+ var center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];
179
+ var version = this.mapService.version;
180
+
181
+ if (version === Version.MAPBOX && window.mapboxgl.MercatorCoordinate) {
182
+ var coord = window.mapboxgl.MercatorCoordinate.fromLngLat({
183
+ lng: center[0],
184
+ lat: center[1]
185
+ }, 0);
186
+ var offsetInMeters = 1;
187
+ var offsetInMercatorCoordinateUnits = offsetInMeters * coord.meterInMercatorCoordinateUnits();
188
+ var westCoord = new window.mapboxgl.MercatorCoordinate(coord.x - offsetInMercatorCoordinateUnits, coord.y, coord.z);
189
+ var westLnglat = westCoord.toLngLat();
190
+ this.meter2coord = center[0] - westLnglat.lng;
191
+ return;
192
+ }
193
+
194
+ var m1 = this.mapService.meterToCoord(center, [minLng, minLat]);
195
+ var m2 = this.mapService.meterToCoord(center, [maxLng === minLng ? maxLng + 0.1 : maxLng, maxLat === minLat ? minLat + 0.1 : maxLat]);
196
+ this.meter2coord = (m1 + m2) / 2;
197
+
198
+ if (!Boolean(this.meter2coord)) {
199
+ this.meter2coord = 7.70681090738883;
200
+ }
201
+ }
202
+ }, {
203
+ key: "buildModels",
204
+ value: function buildModels() {
205
+ var _ref3 = this.layer.getLayerConfig(),
206
+ _ref3$mask = _ref3.mask,
207
+ mask = _ref3$mask === void 0 ? false : _ref3$mask,
208
+ _ref3$maskInside = _ref3.maskInside,
209
+ maskInside = _ref3$maskInside === void 0 ? true : _ref3$maskInside;
210
+
211
+ var _this$getShaders = this.getShaders(),
212
+ frag = _this$getShaders.frag,
213
+ vert = _this$getShaders.vert,
214
+ type = _this$getShaders.type;
215
+
216
+ return [this.layer.buildLayerModel({
217
+ moduleName: 'pointfill-' + type,
218
+ vertexShader: vert,
219
+ fragmentShader: frag,
220
+ triangulation: PointFillTriangulation,
221
+ depth: {
222
+ enable: false
223
+ },
224
+ blend: this.getBlend(),
225
+ stencil: getMask(mask, maskInside)
226
+ })];
227
+ }
228
+ }, {
229
+ key: "getShaders",
230
+ value: function getShaders() {
231
+ return {
232
+ frag: pointFillFrag,
233
+ vert: pointFillVert,
234
+ type: 'normal'
235
+ };
236
+ }
237
+ }, {
238
+ key: "clearModels",
239
+ value: function clearModels() {
240
+ var _this$dataTexture;
241
+
242
+ (_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
243
+ }
244
+ }, {
245
+ key: "registerBuiltinAttributes",
246
+ value: function registerBuiltinAttributes() {
247
+ var _this2 = this;
248
+
249
+ this.styleAttributeService.registerStyleAttribute({
250
+ name: 'uv',
251
+ type: AttributeType.Attribute,
252
+ descriptor: {
253
+ name: 'a_Uv',
254
+ buffer: {
255
+ usage: gl.DYNAMIC_DRAW,
256
+ data: [],
257
+ type: gl.FLOAT
258
+ },
259
+ size: 2,
260
+ update: function update(feature, featureIdx, vertex, attributeIdx) {
261
+ var iconMap = _this2.iconService.getIconMap();
262
+
263
+ var shape = feature.shape;
264
+
265
+ var _ref4 = iconMap[shape] || {
266
+ x: 0,
267
+ y: 0
268
+ },
269
+ x = _ref4.x,
270
+ y = _ref4.y;
271
+
272
+ return [x, y];
273
+ }
274
+ }
275
+ });
276
+ this.styleAttributeService.registerStyleAttribute({
277
+ name: 'extrude',
278
+ type: AttributeType.Attribute,
279
+ descriptor: {
280
+ name: 'a_Extrude',
281
+ buffer: {
282
+ usage: gl.DYNAMIC_DRAW,
283
+ data: [],
284
+ type: gl.FLOAT
285
+ },
286
+ size: 3,
287
+ update: function update(feature, featureIdx, vertex, attributeIdx) {
288
+ var extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];
289
+ var extrudeIndex = attributeIdx % 4 * 3;
290
+ return [extrude[extrudeIndex], extrude[extrudeIndex + 1], extrude[extrudeIndex + 2]];
291
+ }
292
+ }
293
+ });
294
+ this.styleAttributeService.registerStyleAttribute({
295
+ name: 'size',
296
+ type: AttributeType.Attribute,
297
+ descriptor: {
298
+ name: 'a_Size',
299
+ buffer: {
300
+ usage: gl.DYNAMIC_DRAW,
301
+ data: [],
302
+ type: gl.FLOAT
303
+ },
304
+ size: 1,
305
+ update: function update(feature, featureIdx, vertex, attributeIdx) {
306
+ var _feature$size = feature.size,
307
+ size = _feature$size === void 0 ? 5 : _feature$size;
308
+ return Array.isArray(size) ? [size[0] * _this2.meter2coord] : [size * _this2.meter2coord];
309
+ }
310
+ }
311
+ });
312
+ }
313
+ }]);
314
+
315
+ return FillImageModel;
316
+ }(BaseModel);
317
+
318
+ export { FillImageModel as default };
319
+ //# sourceMappingURL=fillmage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/point/models/fillmage.ts"],"names":["AttributeType","gl","getMask","BaseModel","PointFillTriangulation","Version","FillImageModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","mag","min","mipmap","layer","renderLayers","LINEAR","LINEAR_MIPMAP_LINEAR","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","strokeOpacity","strokeWidth","stroke","offsets","blend","getDirty","bind","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","u_isMeter","Number","isMeter","u_additive","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_texture","u_textSize","u_opacity","u_offsets","isOffsetStatic","styleAttributeService","createAttributesAndIndices","updateTexture","on","unit","version","mapService","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","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","iconMap","getIconMap","shape","extrude","extrudeIndex","Array","isArray"],"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 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 } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\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\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,4 +1,4 @@
1
- export declare type PointType = 'fill' | 'image' | 'normal' | 'simplePoint' | 'extrude' | 'text' | 'icon';
1
+ export declare type PointType = 'fillImage' | 'fill' | 'image' | 'normal' | 'simplePoint' | 'extrude' | 'text' | 'icon';
2
2
  declare const PointModels: {
3
3
  [key in PointType]: any;
4
4
  };
@@ -1,11 +1,13 @@
1
1
  import ExtrudeModel from './extrude';
2
2
  import FillModel from './fill';
3
+ import FillImageModel from './fillmage';
3
4
  import IconModel from './icon-font';
4
5
  import IMageModel from './image';
5
6
  import NormalModel from './normal';
6
7
  import SimplePopint from './simplePoint';
7
8
  import TextModel from './text';
8
9
  var PointModels = {
10
+ fillImage: FillImageModel,
9
11
  fill: FillModel,
10
12
  image: IMageModel,
11
13
  normal: NormalModel,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/point/models/index.ts"],"names":["ExtrudeModel","FillModel","IconModel","IMageModel","NormalModel","SimplePopint","TextModel","PointModels","fill","image","normal","simplePoint","extrude","text","icon"],"mappings":"AAAA,OAAOA,YAAP,MAAyB,WAAzB;AACA,OAAOC,SAAP,MAAsB,QAAtB;AACA,OAAOC,SAAP,MAAsB,aAAtB;AACA,OAAOC,UAAP,MAAuB,SAAvB;AACA,OAAOC,WAAP,MAAwB,UAAxB;AACA,OAAOC,YAAP,MAAyB,eAAzB;AACA,OAAOC,SAAP,MAAsB,QAAtB;AAWA,IAAMC,WAAwC,GAAG;AAC/CC,EAAAA,IAAI,EAAEP,SADyC;AAE/CQ,EAAAA,KAAK,EAAEN,UAFwC;AAG/CO,EAAAA,MAAM,EAAEN,WAHuC;AAI/CO,EAAAA,WAAW,EAAEN,YAJkC;AAK/CO,EAAAA,OAAO,EAAEZ,YALsC;AAM/Ca,EAAAA,IAAI,EAAEP,SANyC;AAO/CQ,EAAAA,IAAI,EAAEZ;AAPyC,CAAjD;AAUA,eAAeK,WAAf","sourcesContent":["import ExtrudeModel from './extrude';\nimport FillModel from './fill';\nimport IconModel from './icon-font';\nimport IMageModel from './image';\nimport NormalModel from './normal';\nimport SimplePopint from './simplePoint';\nimport TextModel from './text';\n\nexport type PointType =\n | 'fill'\n | 'image'\n | 'normal'\n | 'simplePoint'\n | 'extrude'\n | 'text'\n | 'icon';\n\nconst PointModels: { [key in PointType]: any } = {\n fill: FillModel,\n image: IMageModel,\n normal: NormalModel,\n simplePoint: SimplePopint,\n extrude: ExtrudeModel,\n text: TextModel,\n icon: IconModel,\n};\n\nexport default PointModels;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/point/models/index.ts"],"names":["ExtrudeModel","FillModel","FillImageModel","IconModel","IMageModel","NormalModel","SimplePopint","TextModel","PointModels","fillImage","fill","image","normal","simplePoint","extrude","text","icon"],"mappings":"AAAA,OAAOA,YAAP,MAAyB,WAAzB;AACA,OAAOC,SAAP,MAAsB,QAAtB;AACA,OAAOC,cAAP,MAA2B,YAA3B;AACA,OAAOC,SAAP,MAAsB,aAAtB;AACA,OAAOC,UAAP,MAAuB,SAAvB;AACA,OAAOC,WAAP,MAAwB,UAAxB;AACA,OAAOC,YAAP,MAAyB,eAAzB;AACA,OAAOC,SAAP,MAAsB,QAAtB;AAYA,IAAMC,WAAwC,GAAG;AAC/CC,EAAAA,SAAS,EAAEP,cADoC;AAE/CQ,EAAAA,IAAI,EAAET,SAFyC;AAG/CU,EAAAA,KAAK,EAAEP,UAHwC;AAI/CQ,EAAAA,MAAM,EAAEP,WAJuC;AAK/CQ,EAAAA,WAAW,EAAEP,YALkC;AAM/CQ,EAAAA,OAAO,EAAEd,YANsC;AAO/Ce,EAAAA,IAAI,EAAER,SAPyC;AAQ/CS,EAAAA,IAAI,EAAEb;AARyC,CAAjD;AAWA,eAAeK,WAAf","sourcesContent":["import ExtrudeModel from './extrude';\nimport FillModel from './fill';\nimport FillImageModel from './fillmage';\nimport IconModel from './icon-font';\nimport IMageModel from './image';\nimport NormalModel from './normal';\nimport SimplePopint from './simplePoint';\nimport TextModel from './text';\n\nexport type PointType =\n | 'fillImage'\n | 'fill'\n | 'image'\n | 'normal'\n | 'simplePoint'\n | 'extrude'\n | 'text'\n | 'icon';\n\nconst PointModels: { [key in PointType]: any } = {\n fillImage: FillImageModel,\n fill: FillModel,\n image: IMageModel,\n normal: NormalModel,\n simplePoint: SimplePopint,\n extrude: ExtrudeModel,\n text: TextModel,\n icon: IconModel,\n};\n\nexport default PointModels;\n"],"file":"index.js"}
@@ -124,6 +124,7 @@ var PointLayer = function (_BaseLayer) {
124
124
  value: function getDefaultConfig() {
125
125
  var type = this.getModelType();
126
126
  var defaultConfig = {
127
+ fillImage: {},
127
128
  normal: {
128
129
  blend: 'additive'
129
130
  },
@@ -143,7 +144,7 @@ var PointLayer = function (_BaseLayer) {
143
144
  }, {
144
145
  key: "getModelType",
145
146
  value: function getModelType() {
146
- var PointTypes = ['fill', 'image', 'normal', 'simplePoint', 'extrude', 'text', 'icon'];
147
+ var PointTypes = ['fillImage', 'fill', 'image', 'normal', 'simplePoint', 'extrude', 'text', 'icon'];
147
148
 
148
149
  if (this.layerType && PointTypes.includes(this.layerType)) {
149
150
  return this.layerType;
@@ -173,6 +174,10 @@ var PointLayer = function (_BaseLayer) {
173
174
  return 'simplePoint';
174
175
  }
175
176
 
177
+ if (shape === 'fillImage') {
178
+ return 'fillImage';
179
+ }
180
+
176
181
  if ((shape2d === null || shape2d === void 0 ? void 0 : shape2d.indexOf(shape)) !== -1) {
177
182
  return 'fill';
178
183
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/point/index.ts"],"names":["PointLayer","modelType","getModelType","layerModel","PointModels","models","initModels","buildModels","shapeOption","field","values","getLayerConfig","shape2d","shape3d","iconMap","iconService","getIconMap","indexOf","Array","v","hasOwnProperty","properties","opacity","type","minimum","maximum","defaultConfig","normal","blend","simplePoint","fill","extrude","image","icon","text","PointTypes","layerType","includes","layerData","getEncodedData","item","find","fe","getModelTypeWillEmptyData","shape","fontService","getGlyph","BaseLayer"],"mappings":"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","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport BaseLayer from '../core/BaseLayer';\nimport { IPointLayerStyleOptions } from '../core/interface';\nimport PointModels, { PointType } from './models/index';\n\nexport default class PointLayer extends BaseLayer<IPointLayerStyleOptions> {\n public type: string = 'PointLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new PointModels[modelType](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n /**\n * 在未传入数据的时候判断点图层的 shape 类型\n * @returns\n */\n public getModelTypeWillEmptyData(): PointType {\n if (this.shapeOption) {\n const { field, values } = this.shapeOption;\n const { shape2d, shape3d } = this.getLayerConfig();\n\n const iconMap = this.iconService.getIconMap();\n\n if (field && shape2d?.indexOf(field as string) !== -1) {\n return 'fill';\n }\n\n if (values && values instanceof Array) {\n for (const v of values) {\n if (typeof v === 'string' && iconMap.hasOwnProperty(v as string)) {\n return 'image';\n }\n }\n }\n }\n return 'normal';\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n normal: {\n blend: 'additive',\n },\n simplePoint: {},\n fill: { blend: 'normal' },\n extrude: {},\n image: {},\n icon: {},\n text: {\n blend: 'normal',\n },\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): PointType {\n const PointTypes = [\n 'fill',\n 'image',\n 'normal',\n 'simplePoint',\n 'extrude',\n 'text',\n 'icon',\n ];\n if (this.layerType && PointTypes.includes(this.layerType)) {\n return this.layerType as PointType;\n }\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 'normal';\n return this.getModelTypeWillEmptyData();\n } else {\n const shape = item.shape;\n if (shape === 'dot') {\n return 'normal';\n }\n if (shape === 'simple') {\n return 'simplePoint';\n }\n if (shape2d?.indexOf(shape as string) !== -1) {\n return 'fill';\n }\n if (shape3d?.indexOf(shape as string) !== -1) {\n return 'extrude';\n }\n if (iconMap.hasOwnProperty(shape as string)) {\n return 'image';\n }\n if (this.fontService.getGlyph(shape as string) !== '') {\n return 'icon';\n }\n return 'text';\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/point/index.ts"],"names":["PointLayer","modelType","getModelType","layerModel","PointModels","models","initModels","buildModels","shapeOption","field","values","getLayerConfig","shape2d","shape3d","iconMap","iconService","getIconMap","indexOf","Array","v","hasOwnProperty","properties","opacity","type","minimum","maximum","defaultConfig","fillImage","normal","blend","simplePoint","fill","extrude","image","icon","text","PointTypes","layerType","includes","layerData","getEncodedData","item","find","fe","getModelTypeWillEmptyData","shape","fontService","getGlyph","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;;;;;;;;;;;IAEqBA,U;;;;;;;;;;;;;;;uFACG,Y;;;;;;WACtB,uBAAqB;AACnB,UAAMC,SAAS,GAAG,KAAKC,YAAL,EAAlB;AACA,WAAKC,UAAL,GAAkB,IAAIC,eAAYH,SAAZ,CAAJ,CAA2B,IAA3B,CAAlB;AACA,WAAKI,MAAL,GAAc,KAAKF,UAAL,CAAgBG,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKF,UAAL,CAAgBI,WAAhB,EAAd;AACD;;;WAMD,qCAA8C;AAC5C,UAAI,KAAKC,WAAT,EAAsB;AACpB,gCAA0B,KAAKA,WAA/B;AAAA,YAAQC,KAAR,qBAAQA,KAAR;AAAA,YAAeC,MAAf,qBAAeA,MAAf;;AACA,mCAA6B,KAAKC,cAAL,EAA7B;AAAA,YAAQC,OAAR,wBAAQA,OAAR;AAAA,YAAiBC,OAAjB,wBAAiBA,OAAjB;;AAEA,YAAMC,OAAO,GAAG,KAAKC,WAAL,CAAiBC,UAAjB,EAAhB;;AAEA,YAAIP,KAAK,IAAI,CAAAG,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEK,OAAT,CAAiBR,KAAjB,OAAsC,CAAC,CAApD,EAAuD;AACrD,iBAAO,MAAP;AACD;;AAED,YAAIC,MAAM,IAAIA,MAAM,YAAYQ,KAAhC,EAAuC;AAAA,qDACrBR,MADqB;AAAA;;AAAA;AACrC,gEAAwB;AAAA,kBAAbS,CAAa;;AACtB,kBAAI,OAAOA,CAAP,KAAa,QAAb,IAAyBL,OAAO,CAACM,cAAR,CAAuBD,CAAvB,CAA7B,EAAkE;AAChE,uBAAO,OAAP;AACD;AACF;AALoC;AAAA;AAAA;AAAA;AAAA;AAMtC;AACF;;AACD,aAAO,QAAP;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLE,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;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKrB,YAAL,EAAb;AACA,UAAMwB,aAAa,GAAG;AACpBC,QAAAA,SAAS,EAAE,EADS;AAEpBC,QAAAA,MAAM,EAAE;AACNC,UAAAA,KAAK,EAAE;AADD,SAFY;AAKpBC,QAAAA,WAAW,EAAE,EALO;AAMpBC,QAAAA,IAAI,EAAE;AAAEF,UAAAA,KAAK,EAAE;AAAT,SANc;AAOpBG,QAAAA,OAAO,EAAE,EAPW;AAQpBC,QAAAA,KAAK,EAAE,EARa;AASpBC,QAAAA,IAAI,EAAE,EATc;AAUpBC,QAAAA,IAAI,EAAE;AACJN,UAAAA,KAAK,EAAE;AADH;AAVc,OAAtB;AAcA,aAAOH,aAAa,CAACH,IAAD,CAApB;AACD;;;WAED,wBAAoC;AAClC,UAAMa,UAAU,GAAG,CACjB,WADiB,EAEjB,MAFiB,EAGjB,OAHiB,EAIjB,QAJiB,EAKjB,aALiB,EAMjB,SANiB,EAOjB,MAPiB,EAQjB,MARiB,CAAnB;;AAUA,UAAI,KAAKC,SAAL,IAAkBD,UAAU,CAACE,QAAX,CAAoB,KAAKD,SAAzB,CAAtB,EAA2D;AACzD,eAAO,KAAKA,SAAZ;AACD;;AAGD,UAAME,SAAS,GAAG,KAAKC,cAAL,EAAlB;;AACA,kCAA6B,KAAK7B,cAAL,EAA7B;AAAA,UAAQC,OAAR,yBAAQA,OAAR;AAAA,UAAiBC,OAAjB,yBAAiBA,OAAjB;;AACA,UAAMC,OAAO,GAAG,KAAKC,WAAL,CAAiBC,UAAjB,EAAhB;AACA,UAAMyB,IAAI,GAAGF,SAAS,CAACG,IAAV,CAAe,UAACC,EAAD,EAAwB;AAClD,eAAOA,EAAE,CAACvB,cAAH,CAAkB,OAAlB,CAAP;AACD,OAFY,CAAb;;AAGA,UAAI,CAACqB,IAAL,EAAW;AAET,eAAO,KAAKG,yBAAL,EAAP;AACD,OAHD,MAGO;AACL,YAAMC,KAAK,GAAGJ,IAAI,CAACI,KAAnB;;AACA,YAAIA,KAAK,KAAK,KAAd,EAAqB;AACnB,iBAAO,QAAP;AACD;;AACD,YAAIA,KAAK,KAAK,QAAd,EAAwB;AACtB,iBAAO,aAAP;AACD;;AACD,YAAIA,KAAK,KAAK,WAAd,EAA2B;AACzB,iBAAO,WAAP;AACD;;AACD,YAAI,CAAAjC,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEK,OAAT,CAAiB4B,KAAjB,OAAsC,CAAC,CAA3C,EAA8C;AAC5C,iBAAO,MAAP;AACD;;AACD,YAAI,CAAAhC,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEI,OAAT,CAAiB4B,KAAjB,OAAsC,CAAC,CAA3C,EAA8C;AAC5C,iBAAO,SAAP;AACD;;AACD,YAAI/B,OAAO,CAACM,cAAR,CAAuByB,KAAvB,CAAJ,EAA6C;AAC3C,iBAAO,OAAP;AACD;;AACD,YAAI,KAAKC,WAAL,CAAiBC,QAAjB,CAA0BF,KAA1B,MAA+C,EAAnD,EAAuD;AACrD,iBAAO,MAAP;AACD;;AACD,eAAO,MAAP;AACD;AACF;;;EApHqCG,mB","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport BaseLayer from '../core/BaseLayer';\nimport { IPointLayerStyleOptions } from '../core/interface';\nimport PointModels, { PointType } from './models/index';\n\nexport default class PointLayer extends BaseLayer<IPointLayerStyleOptions> {\n public type: string = 'PointLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new PointModels[modelType](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n /**\n * 在未传入数据的时候判断点图层的 shape 类型\n * @returns\n */\n public getModelTypeWillEmptyData(): PointType {\n if (this.shapeOption) {\n const { field, values } = this.shapeOption;\n const { shape2d, shape3d } = this.getLayerConfig();\n\n const iconMap = this.iconService.getIconMap();\n\n if (field && shape2d?.indexOf(field as string) !== -1) {\n return 'fill';\n }\n\n if (values && values instanceof Array) {\n for (const v of values) {\n if (typeof v === 'string' && iconMap.hasOwnProperty(v as string)) {\n return 'image';\n }\n }\n }\n }\n return 'normal';\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n fillImage: {},\n normal: {\n blend: 'additive',\n },\n simplePoint: {},\n fill: { blend: 'normal' },\n extrude: {},\n image: {},\n icon: {},\n text: {\n blend: 'normal',\n },\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): PointType {\n const PointTypes = [\n 'fillImage',\n 'fill',\n 'image',\n 'normal',\n 'simplePoint',\n 'extrude',\n 'text',\n 'icon',\n ];\n if (this.layerType && PointTypes.includes(this.layerType)) {\n return this.layerType as PointType;\n }\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 'normal';\n return this.getModelTypeWillEmptyData();\n } else {\n const shape = item.shape;\n if (shape === 'dot') {\n return 'normal';\n }\n if (shape === 'simple') {\n return 'simplePoint';\n }\n if (shape === 'fillImage') {\n return 'fillImage';\n }\n if (shape2d?.indexOf(shape as string) !== -1) {\n return 'fill';\n }\n if (shape3d?.indexOf(shape as string) !== -1) {\n return 'extrude';\n }\n if (iconMap.hasOwnProperty(shape as string)) {\n return 'image';\n }\n if (this.fontService.getGlyph(shape as string) !== '') {\n return 'icon';\n }\n return 'text';\n }\n }\n}\n"],"file":"index.js"}
@@ -0,0 +1,335 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
27
+
28
+ var _l7Core = require("@antv/l7-core");
29
+
30
+ var _l7Utils = require("@antv/l7-utils");
31
+
32
+ var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
33
+
34
+ var _triangulation = require("../../core/triangulation");
35
+
36
+ var _l7Maps = require("@antv/l7-maps");
37
+
38
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
39
+
40
+ 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; } }
41
+
42
+ var pointFillFrag = "uniform sampler2D u_texture;\nuniform vec2 u_textSize;\n\nuniform float u_additive;\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\nvarying float v_radius;\n\n#pragma include \"sdf_2d\"\n#pragma include \"picking\"\nvarying vec2 v_uv; // \u672C\u8EAB\u7684 uv \u5750\u6807\nvarying vec2 v_Iconuv;\n\nvoid main() {\n\n float opacity = styleMappingMat[0][0];\n\n vec2 pos = v_Iconuv / u_textSize + v_uv / u_textSize * 64.;\n gl_FragColor = texture2D(u_texture, pos);\n gl_FragColor.a *= opacity;\n\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
43
+ var pointFillVert = "attribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Extrude;\nattribute float a_Size;\nattribute vec2 a_Uv;\n\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float u_isMeter;\n\nvarying float v_radius;\nvarying vec2 v_uv; // \u672C\u8EAB\u7684 uv \u5750\u6807\nvarying vec2 v_Iconuv; // icon \u8D34\u56FE\u7684 uv \u5750\u6807\n\nuniform float u_opacity : 1;\nuniform vec2 u_offsets;\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\n\nvoid main() {\n vec3 extrude = a_Extrude;\n\n v_uv = (a_Extrude.xy + 1.0)/2.0;\n v_uv.y = 1.0 - v_uv.y;\n v_Iconuv = a_Uv;\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - empty - empty - empty\n 0.0, 0.0, 0.0, 0.0, // empty - empty - empty - empty\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n\n vec2 textrueOffsets = vec2(0.0, 0.0);\n if(hasOffsets()) {\n vec2 valueXPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.r = pos2value(valueXPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n\n vec2 valueYPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.g = pos2value(valueYPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n } else {\n textrueOffsets = u_offsets;\n }\n\n // cal style mapping\n\n // radius(16-bit)\n v_radius = a_Size;\n\n // TODO: billboard\n // anti-alias\n \n\n vec2 offset = (extrude.xy * (a_Size) + textrueOffsets);\n vec3 aPosition = a_Position;\n if(u_isMeter < 1.0) {\n // \u4E0D\u4EE5\u7C73\u4E3A\u5B9E\u9645\u5355\u4F4D\n offset = project_pixel(offset);\n } else {\n // \u4EE5\u7C73\u4E3A\u5B9E\u9645\u5355\u4F4D\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n aPosition.xy += offset;\n offset.x = 0.0;\n offset.y = 0.0;\n }\n }\n\n\n // vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));\n vec4 project_pos = project_position(vec4(aPosition.xy, 0.0, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * vec4(project_pos.xy + offset, 0.0, 1.0);\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n }\n \n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, 0.0, 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
44
+
45
+ var FillImageModel = function (_BaseModel) {
46
+ (0, _inherits2.default)(FillImageModel, _BaseModel);
47
+
48
+ var _super = _createSuper(FillImageModel);
49
+
50
+ function FillImageModel() {
51
+ var _this;
52
+
53
+ (0, _classCallCheck2.default)(this, FillImageModel);
54
+
55
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
56
+ args[_key] = arguments[_key];
57
+ }
58
+
59
+ _this = _super.call.apply(_super, [this].concat(args));
60
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meter2coord", 1);
61
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "texture", void 0);
62
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isMeter", false);
63
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateTexture", function () {
64
+ var createTexture2D = _this.rendererService.createTexture2D;
65
+
66
+ if (_this.texture) {
67
+ _this.texture.update({
68
+ data: _this.iconService.getCanvas(),
69
+ mag: 'linear',
70
+ min: 'linear mipmap nearest',
71
+ mipmap: true
72
+ });
73
+
74
+ _this.layer.renderLayers();
75
+
76
+ return;
77
+ }
78
+
79
+ _this.texture = createTexture2D({
80
+ data: _this.iconService.getCanvas(),
81
+ mag: _l7Core.gl.LINEAR,
82
+ min: _l7Core.gl.LINEAR_MIPMAP_LINEAR,
83
+ premultiplyAlpha: false,
84
+ width: 1024,
85
+ height: _this.iconService.canvasHeight || 128,
86
+ mipmap: true
87
+ });
88
+ });
89
+ return _this;
90
+ }
91
+
92
+ (0, _createClass2.default)(FillImageModel, [{
93
+ key: "getUninforms",
94
+ value: function getUninforms() {
95
+ var _ref = this.layer.getLayerConfig(),
96
+ _ref$opacity = _ref.opacity,
97
+ opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
98
+ _ref$strokeOpacity = _ref.strokeOpacity,
99
+ strokeOpacity = _ref$strokeOpacity === void 0 ? 1 : _ref$strokeOpacity,
100
+ _ref$strokeWidth = _ref.strokeWidth,
101
+ strokeWidth = _ref$strokeWidth === void 0 ? 0 : _ref$strokeWidth,
102
+ _ref$stroke = _ref.stroke,
103
+ stroke = _ref$stroke === void 0 ? 'rgba(0,0,0,0)' : _ref$stroke,
104
+ _ref$offsets = _ref.offsets,
105
+ offsets = _ref$offsets === void 0 ? [0, 0] : _ref$offsets,
106
+ blend = _ref.blend;
107
+
108
+ if (this.rendererService.getDirty()) {
109
+ this.texture.bind();
110
+ }
111
+
112
+ if (this.dataTextureTest && this.dataTextureNeedUpdate({
113
+ opacity: opacity,
114
+ strokeOpacity: strokeOpacity,
115
+ strokeWidth: strokeWidth,
116
+ stroke: stroke,
117
+ offsets: offsets
118
+ })) {
119
+ this.judgeStyleAttributes({
120
+ opacity: opacity,
121
+ strokeOpacity: strokeOpacity,
122
+ strokeWidth: strokeWidth,
123
+ stroke: stroke,
124
+ offsets: offsets
125
+ });
126
+ var encodeData = this.layer.getEncodedData();
127
+
128
+ var _this$calDataFrame = this.calDataFrame(this.cellLength, encodeData, this.cellProperties),
129
+ data = _this$calDataFrame.data,
130
+ width = _this$calDataFrame.width,
131
+ height = _this$calDataFrame.height;
132
+
133
+ this.rowCount = height;
134
+ this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
135
+ flipY: true,
136
+ data: data,
137
+ format: _l7Core.gl.LUMINANCE,
138
+ type: _l7Core.gl.FLOAT,
139
+ width: width,
140
+ height: height
141
+ }) : this.createTexture2D({
142
+ flipY: true,
143
+ data: [1],
144
+ format: _l7Core.gl.LUMINANCE,
145
+ type: _l7Core.gl.FLOAT,
146
+ width: 1,
147
+ height: 1
148
+ });
149
+ }
150
+
151
+ return {
152
+ u_isMeter: Number(this.isMeter),
153
+ u_additive: blend === 'additive' ? 1.0 : 0.0,
154
+ u_dataTexture: this.dataTexture,
155
+ u_cellTypeLayout: this.getCellTypeLayout(),
156
+ u_texture: this.texture,
157
+ u_textSize: [1024, this.iconService.canvasHeight || 128],
158
+ u_opacity: (0, _isNumber2.default)(opacity) ? opacity : 1.0,
159
+ u_offsets: this.isOffsetStatic(offsets) ? offsets : [0, 0]
160
+ };
161
+ }
162
+ }, {
163
+ key: "getAttribute",
164
+ value: function getAttribute() {
165
+ return this.styleAttributeService.createAttributesAndIndices(this.layer.getEncodedData(), _triangulation.PointFillTriangulation);
166
+ }
167
+ }, {
168
+ key: "initModels",
169
+ value: function initModels() {
170
+ this.updateTexture();
171
+ this.iconService.on('imageUpdate', this.updateTexture);
172
+
173
+ var _ref2 = this.layer.getLayerConfig(),
174
+ _ref2$unit = _ref2.unit,
175
+ unit = _ref2$unit === void 0 ? 'l7size' : _ref2$unit;
176
+
177
+ var version = this.mapService.version;
178
+
179
+ if (unit === 'meter' && version !== _l7Maps.Version.L7MAP && version !== _l7Maps.Version.GLOBEL) {
180
+ this.isMeter = true;
181
+ this.calMeter2Coord();
182
+ }
183
+
184
+ return this.buildModels();
185
+ }
186
+ }, {
187
+ key: "calMeter2Coord",
188
+ value: function calMeter2Coord() {
189
+ var _this$layer$getSource = (0, _slicedToArray2.default)(this.layer.getSource().extent, 4),
190
+ minLng = _this$layer$getSource[0],
191
+ minLat = _this$layer$getSource[1],
192
+ maxLng = _this$layer$getSource[2],
193
+ maxLat = _this$layer$getSource[3];
194
+
195
+ var center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];
196
+ var version = this.mapService.version;
197
+
198
+ if (version === _l7Maps.Version.MAPBOX && window.mapboxgl.MercatorCoordinate) {
199
+ var coord = window.mapboxgl.MercatorCoordinate.fromLngLat({
200
+ lng: center[0],
201
+ lat: center[1]
202
+ }, 0);
203
+ var offsetInMeters = 1;
204
+ var offsetInMercatorCoordinateUnits = offsetInMeters * coord.meterInMercatorCoordinateUnits();
205
+ var westCoord = new window.mapboxgl.MercatorCoordinate(coord.x - offsetInMercatorCoordinateUnits, coord.y, coord.z);
206
+ var westLnglat = westCoord.toLngLat();
207
+ this.meter2coord = center[0] - westLnglat.lng;
208
+ return;
209
+ }
210
+
211
+ var m1 = this.mapService.meterToCoord(center, [minLng, minLat]);
212
+ var m2 = this.mapService.meterToCoord(center, [maxLng === minLng ? maxLng + 0.1 : maxLng, maxLat === minLat ? minLat + 0.1 : maxLat]);
213
+ this.meter2coord = (m1 + m2) / 2;
214
+
215
+ if (!Boolean(this.meter2coord)) {
216
+ this.meter2coord = 7.70681090738883;
217
+ }
218
+ }
219
+ }, {
220
+ key: "buildModels",
221
+ value: function buildModels() {
222
+ var _ref3 = this.layer.getLayerConfig(),
223
+ _ref3$mask = _ref3.mask,
224
+ mask = _ref3$mask === void 0 ? false : _ref3$mask,
225
+ _ref3$maskInside = _ref3.maskInside,
226
+ maskInside = _ref3$maskInside === void 0 ? true : _ref3$maskInside;
227
+
228
+ var _this$getShaders = this.getShaders(),
229
+ frag = _this$getShaders.frag,
230
+ vert = _this$getShaders.vert,
231
+ type = _this$getShaders.type;
232
+
233
+ return [this.layer.buildLayerModel({
234
+ moduleName: 'pointfill-' + type,
235
+ vertexShader: vert,
236
+ fragmentShader: frag,
237
+ triangulation: _triangulation.PointFillTriangulation,
238
+ depth: {
239
+ enable: false
240
+ },
241
+ blend: this.getBlend(),
242
+ stencil: (0, _l7Utils.getMask)(mask, maskInside)
243
+ })];
244
+ }
245
+ }, {
246
+ key: "getShaders",
247
+ value: function getShaders() {
248
+ return {
249
+ frag: pointFillFrag,
250
+ vert: pointFillVert,
251
+ type: 'normal'
252
+ };
253
+ }
254
+ }, {
255
+ key: "clearModels",
256
+ value: function clearModels() {
257
+ var _this$dataTexture;
258
+
259
+ (_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
260
+ }
261
+ }, {
262
+ key: "registerBuiltinAttributes",
263
+ value: function registerBuiltinAttributes() {
264
+ var _this2 = this;
265
+
266
+ this.styleAttributeService.registerStyleAttribute({
267
+ name: 'uv',
268
+ type: _l7Core.AttributeType.Attribute,
269
+ descriptor: {
270
+ name: 'a_Uv',
271
+ buffer: {
272
+ usage: _l7Core.gl.DYNAMIC_DRAW,
273
+ data: [],
274
+ type: _l7Core.gl.FLOAT
275
+ },
276
+ size: 2,
277
+ update: function update(feature, featureIdx, vertex, attributeIdx) {
278
+ var iconMap = _this2.iconService.getIconMap();
279
+
280
+ var shape = feature.shape;
281
+
282
+ var _ref4 = iconMap[shape] || {
283
+ x: 0,
284
+ y: 0
285
+ },
286
+ x = _ref4.x,
287
+ y = _ref4.y;
288
+
289
+ return [x, y];
290
+ }
291
+ }
292
+ });
293
+ this.styleAttributeService.registerStyleAttribute({
294
+ name: 'extrude',
295
+ type: _l7Core.AttributeType.Attribute,
296
+ descriptor: {
297
+ name: 'a_Extrude',
298
+ buffer: {
299
+ usage: _l7Core.gl.DYNAMIC_DRAW,
300
+ data: [],
301
+ type: _l7Core.gl.FLOAT
302
+ },
303
+ size: 3,
304
+ update: function update(feature, featureIdx, vertex, attributeIdx) {
305
+ var extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];
306
+ var extrudeIndex = attributeIdx % 4 * 3;
307
+ return [extrude[extrudeIndex], extrude[extrudeIndex + 1], extrude[extrudeIndex + 2]];
308
+ }
309
+ }
310
+ });
311
+ this.styleAttributeService.registerStyleAttribute({
312
+ name: 'size',
313
+ type: _l7Core.AttributeType.Attribute,
314
+ descriptor: {
315
+ name: 'a_Size',
316
+ buffer: {
317
+ usage: _l7Core.gl.DYNAMIC_DRAW,
318
+ data: [],
319
+ type: _l7Core.gl.FLOAT
320
+ },
321
+ size: 1,
322
+ update: function update(feature, featureIdx, vertex, attributeIdx) {
323
+ var _feature$size = feature.size,
324
+ size = _feature$size === void 0 ? 5 : _feature$size;
325
+ return Array.isArray(size) ? [size[0] * _this2.meter2coord] : [size * _this2.meter2coord];
326
+ }
327
+ }
328
+ });
329
+ }
330
+ }]);
331
+ return FillImageModel;
332
+ }(_BaseModel2.default);
333
+
334
+ exports.default = FillImageModel;
335
+ //# sourceMappingURL=fillmage.js.map
@@ -0,0 +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","getDirty","bind","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","u_isMeter","Number","isMeter","u_additive","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_texture","u_textSize","u_opacity","u_offsets","isOffsetStatic","styleAttributeService","createAttributesAndIndices","PointFillTriangulation","updateTexture","on","unit","version","mapService","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 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 } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\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\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"}
@@ -11,6 +11,8 @@ var _extrude = _interopRequireDefault(require("./extrude"));
11
11
 
12
12
  var _fill = _interopRequireDefault(require("./fill"));
13
13
 
14
+ var _fillmage = _interopRequireDefault(require("./fillmage"));
15
+
14
16
  var _iconFont = _interopRequireDefault(require("./icon-font"));
15
17
 
16
18
  var _image = _interopRequireDefault(require("./image"));
@@ -22,6 +24,7 @@ var _simplePoint = _interopRequireDefault(require("./simplePoint"));
22
24
  var _text = _interopRequireDefault(require("./text"));
23
25
 
24
26
  var PointModels = {
27
+ fillImage: _fillmage.default,
25
28
  fill: _fill.default,
26
29
  image: _image.default,
27
30
  normal: _normal.default,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/point/models/index.ts"],"names":["PointModels","fill","FillModel","image","IMageModel","normal","NormalModel","simplePoint","SimplePopint","extrude","ExtrudeModel","text","TextModel","icon","IconModel"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAWA,IAAMA,WAAwC,GAAG;AAC/CC,EAAAA,IAAI,EAAEC,aADyC;AAE/CC,EAAAA,KAAK,EAAEC,cAFwC;AAG/CC,EAAAA,MAAM,EAAEC,eAHuC;AAI/CC,EAAAA,WAAW,EAAEC,oBAJkC;AAK/CC,EAAAA,OAAO,EAAEC,gBALsC;AAM/CC,EAAAA,IAAI,EAAEC,aANyC;AAO/CC,EAAAA,IAAI,EAAEC;AAPyC,CAAjD;eAUed,W","sourcesContent":["import ExtrudeModel from './extrude';\nimport FillModel from './fill';\nimport IconModel from './icon-font';\nimport IMageModel from './image';\nimport NormalModel from './normal';\nimport SimplePopint from './simplePoint';\nimport TextModel from './text';\n\nexport type PointType =\n | 'fill'\n | 'image'\n | 'normal'\n | 'simplePoint'\n | 'extrude'\n | 'text'\n | 'icon';\n\nconst PointModels: { [key in PointType]: any } = {\n fill: FillModel,\n image: IMageModel,\n normal: NormalModel,\n simplePoint: SimplePopint,\n extrude: ExtrudeModel,\n text: TextModel,\n icon: IconModel,\n};\n\nexport default PointModels;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/point/models/index.ts"],"names":["PointModels","fillImage","FillImageModel","fill","FillModel","image","IMageModel","normal","NormalModel","simplePoint","SimplePopint","extrude","ExtrudeModel","text","TextModel","icon","IconModel"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAYA,IAAMA,WAAwC,GAAG;AAC/CC,EAAAA,SAAS,EAAEC,iBADoC;AAE/CC,EAAAA,IAAI,EAAEC,aAFyC;AAG/CC,EAAAA,KAAK,EAAEC,cAHwC;AAI/CC,EAAAA,MAAM,EAAEC,eAJuC;AAK/CC,EAAAA,WAAW,EAAEC,oBALkC;AAM/CC,EAAAA,OAAO,EAAEC,gBANsC;AAO/CC,EAAAA,IAAI,EAAEC,aAPyC;AAQ/CC,EAAAA,IAAI,EAAEC;AARyC,CAAjD;eAWehB,W","sourcesContent":["import ExtrudeModel from './extrude';\nimport FillModel from './fill';\nimport FillImageModel from './fillmage';\nimport IconModel from './icon-font';\nimport IMageModel from './image';\nimport NormalModel from './normal';\nimport SimplePopint from './simplePoint';\nimport TextModel from './text';\n\nexport type PointType =\n | 'fillImage'\n | 'fill'\n | 'image'\n | 'normal'\n | 'simplePoint'\n | 'extrude'\n | 'text'\n | 'icon';\n\nconst PointModels: { [key in PointType]: any } = {\n fillImage: FillImageModel,\n fill: FillModel,\n image: IMageModel,\n normal: NormalModel,\n simplePoint: SimplePopint,\n extrude: ExtrudeModel,\n text: TextModel,\n icon: IconModel,\n};\n\nexport default PointModels;\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antv/l7-layers",
3
- "version": "2.7.29",
3
+ "version": "2.7.30",
4
4
  "description": "L7's collection of built-in layers",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -24,9 +24,9 @@
24
24
  "license": "ISC",
25
25
  "dependencies": {
26
26
  "@antv/geo-coord": "^1.0.8",
27
- "@antv/l7-core": "^2.7.29",
28
- "@antv/l7-source": "^2.7.29",
29
- "@antv/l7-utils": "^2.7.29",
27
+ "@antv/l7-core": "^2.7.30",
28
+ "@antv/l7-source": "^2.7.30",
29
+ "@antv/l7-utils": "^2.7.30",
30
30
  "@babel/runtime": "^7.7.7",
31
31
  "@mapbox/martini": "^0.2.0",
32
32
  "@turf/meta": "^6.0.2",
@@ -52,7 +52,7 @@
52
52
  "@types/gl-matrix": "^2.4.5",
53
53
  "@types/lodash": "^4.14.138"
54
54
  },
55
- "gitHead": "a10d0b6aad65c9ad052365bd625d168648e4d7c0",
55
+ "gitHead": "9e6777a25e16f7b6ee730b606d5538437f9113e9",
56
56
  "publishConfig": {
57
57
  "access": "public"
58
58
  }