@antv/l7-layers 2.7.29 → 2.7.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/core/BaseLayer.js +28 -17
- package/es/core/BaseLayer.js.map +1 -1
- package/es/point/index.d.ts +1 -1
- package/es/point/index.js +6 -1
- package/es/point/index.js.map +1 -1
- package/es/point/models/fillmage.d.ts +29 -0
- package/es/point/models/fillmage.js +319 -0
- package/es/point/models/fillmage.js.map +1 -0
- package/es/point/models/index.d.ts +1 -1
- package/es/point/models/index.js +2 -0
- package/es/point/models/index.js.map +1 -1
- package/lib/core/BaseLayer.js +28 -17
- package/lib/core/BaseLayer.js.map +1 -1
- package/lib/point/index.js +6 -1
- package/lib/point/index.js.map +1 -1
- package/lib/point/models/fillmage.js +335 -0
- package/lib/point/models/fillmage.js.map +1 -0
- package/lib/point/models/index.js +3 -0
- package/lib/point/models/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -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;;
|
|
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.
|
|
3
|
+
"version": "2.7.32",
|
|
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.
|
|
28
|
-
"@antv/l7-source": "^2.7.
|
|
29
|
-
"@antv/l7-utils": "^2.7.
|
|
27
|
+
"@antv/l7-core": "^2.7.32",
|
|
28
|
+
"@antv/l7-source": "^2.7.32",
|
|
29
|
+
"@antv/l7-utils": "^2.7.32",
|
|
30
30
|
"@babel/runtime": "^7.7.7",
|
|
31
31
|
"@mapbox/martini": "^0.2.0",
|
|
32
32
|
"@turf/meta": "^6.0.2",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@types/gl-matrix": "^2.4.5",
|
|
53
53
|
"@types/lodash": "^4.14.138"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "cfbd3941b860d02497d42530396e318cea68f7ae",
|
|
56
56
|
"publishConfig": {
|
|
57
57
|
"access": "public"
|
|
58
58
|
}
|