@antv/l7-layers 2.15.5 → 2.16.1
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/Geometry/index.js +31 -9
- package/es/Geometry/models/billboard.js +89 -51
- package/es/Geometry/models/plane.js +143 -81
- package/es/Geometry/models/sprite.js +118 -60
- package/es/canvas/index.js +33 -10
- package/es/canvas/models/canvas.js +97 -41
- package/es/citybuliding/building.js +27 -8
- package/es/citybuliding/models/build.js +82 -57
- package/es/core/BaseLayer.js +486 -321
- package/es/core/BaseModel.js +126 -97
- package/es/core/LayerPickService.js +32 -21
- package/es/core/TextureService.js +13 -0
- package/es/core/interface.js +24 -17
- package/es/core/shape/Path.js +20 -13
- package/es/core/shape/extrude.js +31 -10
- package/es/core/triangulation.js +114 -54
- package/es/earth/index.js +33 -9
- package/es/earth/models/atmosphere.js +54 -30
- package/es/earth/models/base.js +85 -47
- package/es/earth/models/bloomsphere.js +54 -30
- package/es/earth/utils.js +13 -9
- package/es/heatmap/index.js +40 -10
- package/es/heatmap/models/grid.js +52 -28
- package/es/heatmap/models/grid3d.js +52 -28
- package/es/heatmap/models/heatmap.js +146 -91
- package/es/heatmap/models/hexagon.js +52 -28
- package/es/heatmap/triangulation.js +4 -0
- package/es/image/index.js +28 -9
- package/es/image/models/image.js +100 -66
- package/es/index.js +17 -9
- package/es/line/index.js +34 -9
- package/es/line/models/arc.js +118 -66
- package/es/line/models/arc_3d.js +108 -60
- package/es/line/models/earthArc_3d.js +111 -63
- package/es/line/models/great_circle.js +100 -56
- package/es/line/models/half.js +77 -46
- package/es/line/models/line.js +148 -94
- package/es/line/models/linearline.js +80 -45
- package/es/line/models/simpleLine.js +74 -41
- package/es/line/models/wall.js +92 -52
- package/es/mask/index.js +28 -9
- package/es/mask/models/fill.js +54 -29
- package/es/plugins/DataMappingPlugin.js +117 -80
- package/es/plugins/DataSourcePlugin.js +68 -45
- package/es/plugins/FeatureScalePlugin.js +122 -67
- package/es/plugins/LayerAnimateStylePlugin.js +5 -0
- package/es/plugins/LayerMaskPlugin.js +11 -3
- package/es/plugins/LayerModelPlugin.js +104 -67
- package/es/plugins/LayerStylePlugin.js +9 -3
- package/es/plugins/LightingPlugin.js +18 -12
- package/es/plugins/MultiPassRendererPlugin.js +16 -11
- package/es/plugins/PixelPickingPlugin.js +21 -12
- package/es/plugins/RegisterStyleAttributePlugin.js +12 -5
- package/es/plugins/ShaderUniformPlugin.js +27 -13
- package/es/plugins/UpdateModelPlugin.js +5 -0
- package/es/plugins/UpdateStyleAttributePlugin.js +11 -5
- package/es/point/index.js +77 -26
- package/es/point/models/earthExtrude.js +102 -61
- package/es/point/models/earthFill.js +87 -57
- package/es/point/models/extrude.js +101 -60
- package/es/point/models/fill.js +100 -70
- package/es/point/models/fillmage.js +107 -63
- package/es/point/models/image.js +88 -48
- package/es/point/models/index.js +2 -2
- package/es/point/models/normal.js +54 -30
- package/es/point/models/radar.js +64 -40
- package/es/point/models/simplePoint.js +69 -41
- package/es/point/models/text.d.ts +2 -1
- package/es/point/models/text.js +305 -201
- package/es/point/shape/extrude.js +13 -4
- package/es/polygon/index.js +40 -11
- package/es/polygon/models/extrude.js +92 -48
- package/es/polygon/models/fill.js +88 -54
- package/es/polygon/models/index.js +2 -3
- package/es/polygon/models/ocean.js +76 -42
- package/es/polygon/models/water.js +71 -37
- package/es/raster/buffers/triangulation.js +4 -2
- package/es/raster/index.js +32 -9
- package/es/raster/models/raster.js +116 -80
- package/es/raster/models/rasterRgb.js +127 -84
- package/es/raster/models/rasterTerrainRgb.js +84 -56
- package/es/tile/interaction/getRasterData.js +20 -14
- package/es/tile/interaction/utils.js +9 -7
- package/es/tile/manager/base.js +96 -63
- package/es/tile/service/TileLayerService.js +55 -33
- package/es/tile/service/TilePickService.js +40 -26
- package/es/tile/service/TileSourceService.js +7 -3
- package/es/tile/tileFactory/DebugTile.js +46 -29
- package/es/tile/tileFactory/ImageTile.js +38 -20
- package/es/tile/tileFactory/MaskTile.js +43 -22
- package/es/tile/tileFactory/RasterRGBTile.js +42 -22
- package/es/tile/tileFactory/RasterTerrainRGBTile.js +38 -20
- package/es/tile/tileFactory/RasterTile.js +53 -30
- package/es/tile/tileFactory/Tile.js +97 -63
- package/es/tile/tileFactory/VectorTile.js +68 -41
- package/es/tile/tileFactory/index.js +11 -0
- package/es/tile/tileFactory/layers/TileDebugLayer.js +27 -6
- package/es/tile/tileFactory/util.js +3 -0
- package/es/tile/tileLayer/BaseLayer.js +146 -105
- package/es/tile/utils.js +1 -1
- package/es/utils/blend.js +2 -0
- package/es/utils/collision-index.js +16 -9
- package/es/utils/dataMappingStyle.js +18 -8
- package/es/utils/extrude_polyline.js +149 -101
- package/es/utils/grid-index.js +27 -2
- package/es/utils/identityScale.js +8 -0
- package/es/utils/layerData.js +44 -30
- package/es/utils/multiPassRender.js +13 -11
- package/es/utils/polylineNormal.js +37 -31
- package/es/utils/simpleLine.js +16 -2
- package/es/utils/stencil.js +3 -2
- package/es/utils/symbol-layout.js +53 -27
- package/es/wind/index.js +29 -9
- package/es/wind/models/utils.js +51 -26
- package/es/wind/models/wind.js +147 -101
- package/es/wind/models/windRender.js +66 -53
- package/lib/Geometry/index.js +38 -9
- package/lib/Geometry/models/billboard.js +97 -51
- package/lib/Geometry/models/index.js +5 -0
- package/lib/Geometry/models/plane.js +151 -79
- package/lib/Geometry/models/sprite.js +127 -60
- package/lib/canvas/index.js +40 -10
- package/lib/canvas/models/canvas.js +101 -41
- package/lib/canvas/models/index.js +3 -0
- package/lib/citybuliding/building.js +35 -8
- package/lib/citybuliding/models/build.js +92 -57
- package/lib/core/BaseLayer.js +480 -321
- package/lib/core/BaseModel.js +139 -97
- package/lib/core/LayerPickService.js +37 -21
- package/lib/core/TextureService.js +16 -0
- package/lib/core/interface.js +31 -21
- package/lib/core/schema.js +1 -0
- package/lib/core/shape/Path.js +31 -14
- package/lib/core/shape/extrude.js +54 -10
- package/lib/core/triangulation.js +153 -53
- package/lib/earth/index.js +43 -9
- package/lib/earth/models/atmosphere.js +63 -30
- package/lib/earth/models/base.js +90 -47
- package/lib/earth/models/bloomsphere.js +63 -30
- package/lib/earth/utils.js +31 -7
- package/lib/heatmap/index.js +48 -10
- package/lib/heatmap/models/grid.js +60 -28
- package/lib/heatmap/models/grid3d.js +60 -28
- package/lib/heatmap/models/heatmap.js +162 -91
- package/lib/heatmap/models/hexagon.js +60 -28
- package/lib/heatmap/models/index.js +6 -0
- package/lib/heatmap/triangulation.js +5 -0
- package/lib/image/index.js +36 -9
- package/lib/image/models/image.js +109 -66
- package/lib/image/models/index.js +3 -0
- package/lib/index.js +61 -7
- package/lib/line/index.js +40 -9
- package/lib/line/models/arc.js +128 -64
- package/lib/line/models/arc_3d.js +119 -58
- package/lib/line/models/earthArc_3d.js +122 -61
- package/lib/line/models/great_circle.js +111 -56
- package/lib/line/models/half.js +87 -46
- package/lib/line/models/index.js +11 -0
- package/lib/line/models/line.js +156 -92
- package/lib/line/models/linearline.js +92 -45
- package/lib/line/models/simpleLine.js +84 -41
- package/lib/line/models/wall.js +103 -52
- package/lib/mask/index.js +36 -9
- package/lib/mask/models/fill.js +63 -29
- package/lib/mask/models/index.js +3 -0
- package/lib/plugins/DataMappingPlugin.js +128 -80
- package/lib/plugins/DataSourcePlugin.js +76 -45
- package/lib/plugins/FeatureScalePlugin.js +138 -67
- package/lib/plugins/LayerAnimateStylePlugin.js +10 -0
- package/lib/plugins/LayerMaskPlugin.js +17 -4
- package/lib/plugins/LayerModelPlugin.js +113 -68
- package/lib/plugins/LayerStylePlugin.js +14 -4
- package/lib/plugins/LightingPlugin.js +25 -12
- package/lib/plugins/MultiPassRendererPlugin.js +22 -11
- package/lib/plugins/PixelPickingPlugin.js +27 -12
- package/lib/plugins/RegisterStyleAttributePlugin.js +19 -5
- package/lib/plugins/ShaderUniformPlugin.js +34 -13
- package/lib/plugins/UpdateModelPlugin.js +10 -1
- package/lib/plugins/UpdateStyleAttributePlugin.js +16 -5
- package/lib/point/index.js +83 -26
- package/lib/point/models/earthExtrude.js +113 -61
- package/lib/point/models/earthFill.js +117 -57
- package/lib/point/models/extrude.js +111 -60
- package/lib/point/models/fill.js +109 -68
- package/lib/point/models/fillmage.js +115 -61
- package/lib/point/models/image.js +98 -48
- package/lib/point/models/index.js +12 -1
- package/lib/point/models/normal.js +64 -30
- package/lib/point/models/radar.js +74 -40
- package/lib/point/models/simplePoint.js +79 -41
- package/lib/point/models/text.js +314 -202
- package/lib/point/shape/extrude.js +20 -4
- package/lib/polygon/index.js +48 -11
- package/lib/polygon/models/extrude.js +103 -48
- package/lib/polygon/models/fill.js +98 -54
- package/lib/polygon/models/index.js +14 -2
- package/lib/polygon/models/ocean.js +88 -42
- package/lib/polygon/models/water.js +82 -37
- package/lib/raster/buffers/triangulation.js +7 -3
- package/lib/raster/index.js +40 -9
- package/lib/raster/models/index.js +5 -0
- package/lib/raster/models/raster.js +125 -80
- package/lib/raster/models/rasterRgb.js +139 -84
- package/lib/raster/models/rasterTerrainRgb.js +93 -56
- package/lib/tile/interaction/getRasterData.js +25 -14
- package/lib/tile/interaction/utils.js +19 -7
- package/lib/tile/manager/base.js +104 -63
- package/lib/tile/service/TileLayerService.js +60 -33
- package/lib/tile/service/TilePickService.js +48 -26
- package/lib/tile/service/TileSourceService.js +16 -2
- package/lib/tile/style/utils.js +3 -0
- package/lib/tile/tileFactory/DebugTile.js +54 -29
- package/lib/tile/tileFactory/ImageTile.js +46 -20
- package/lib/tile/tileFactory/MaskTile.js +51 -22
- package/lib/tile/tileFactory/RasterRGBTile.js +50 -22
- package/lib/tile/tileFactory/RasterTerrainRGBTile.js +46 -20
- package/lib/tile/tileFactory/RasterTile.js +63 -30
- package/lib/tile/tileFactory/Tile.js +102 -63
- package/lib/tile/tileFactory/VectorTile.js +76 -41
- package/lib/tile/tileFactory/index.js +25 -0
- package/lib/tile/tileFactory/layers/TileDebugLayer.js +32 -6
- package/lib/tile/tileFactory/util.js +9 -0
- package/lib/tile/tileLayer/BaseLayer.js +153 -105
- package/lib/tile/utils.js +5 -1
- package/lib/utils/blend.js +5 -0
- package/lib/utils/collision-index.js +25 -9
- package/lib/utils/dataMappingStyle.js +19 -8
- package/lib/utils/extrude_polyline.js +181 -101
- package/lib/utils/grid-index.js +28 -2
- package/lib/utils/identityScale.js +9 -0
- package/lib/utils/layerData.js +49 -30
- package/lib/utils/multiPassRender.js +16 -11
- package/lib/utils/polylineNormal.js +66 -31
- package/lib/utils/simpleLine.js +21 -2
- package/lib/utils/stencil.js +4 -0
- package/lib/utils/symbol-layout.js +55 -27
- package/lib/wind/index.js +37 -9
- package/lib/wind/models/index.js +3 -0
- package/lib/wind/models/utils.js +62 -26
- package/lib/wind/models/wind.js +157 -101
- package/lib/wind/models/windRender.js +71 -53
- package/lib/wind/models/windShader.js +1 -0
- package/package.json +7 -7
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
2
|
import earcut from 'earcut';
|
|
3
|
+
|
|
3
4
|
/**
|
|
4
5
|
* 拉伸多边形顶点,返回拉伸后的顶点信息
|
|
5
6
|
* @param paths 路径数据组
|
|
@@ -8,37 +9,45 @@ import earcut from 'earcut';
|
|
|
8
9
|
export default function extrudePolygon(path) {
|
|
9
10
|
var p1 = path[0][0];
|
|
10
11
|
var p2 = path[0][path[0].length - 1];
|
|
12
|
+
|
|
11
13
|
if (p1[0] === p2[0] && p1[1] === p2[1]) {
|
|
12
14
|
path[0] = path[0].slice(0, path[0].length - 1);
|
|
13
15
|
}
|
|
16
|
+
|
|
14
17
|
var n = path[0].length;
|
|
15
18
|
var flattengeo = earcut.flatten(path);
|
|
16
19
|
var positions = [];
|
|
17
20
|
var indexArray = [];
|
|
18
|
-
var normals = [];
|
|
19
|
-
|
|
21
|
+
var normals = []; // 设置顶部z值
|
|
22
|
+
|
|
20
23
|
for (var j = 0; j < flattengeo.vertices.length / 3; j++) {
|
|
21
24
|
flattengeo.vertices[j * 3 + 2] = 1;
|
|
22
25
|
normals.push(0, 0, 1);
|
|
23
26
|
}
|
|
27
|
+
|
|
24
28
|
positions.push.apply(positions, _toConsumableArray(flattengeo.vertices));
|
|
25
29
|
var triangles = earcut(flattengeo.vertices, flattengeo.holes, flattengeo.dimensions);
|
|
26
30
|
indexArray.push.apply(indexArray, _toConsumableArray(triangles));
|
|
27
|
-
|
|
31
|
+
|
|
32
|
+
var _loop = function _loop(i) {
|
|
28
33
|
var prePoint = flattengeo.vertices.slice(i * 3, i * 3 + 3);
|
|
29
34
|
var nextPoint = flattengeo.vertices.slice(i * 3 + 3, i * 3 + 6);
|
|
35
|
+
|
|
30
36
|
if (nextPoint.length === 0) {
|
|
31
37
|
nextPoint = flattengeo.vertices.slice(0, 3);
|
|
32
38
|
}
|
|
39
|
+
|
|
33
40
|
var indexOffset = positions.length / 3;
|
|
34
41
|
positions.push(prePoint[0], prePoint[1], 1, nextPoint[0], nextPoint[1], 1, prePoint[0], prePoint[1], 0, nextPoint[0], nextPoint[1], 0);
|
|
35
42
|
indexArray.push.apply(indexArray, _toConsumableArray([1, 2, 0, 3, 2, 1].map(function (v) {
|
|
36
43
|
return v + indexOffset;
|
|
37
44
|
})));
|
|
38
45
|
};
|
|
46
|
+
|
|
39
47
|
for (var i = 0; i < n; i++) {
|
|
40
|
-
_loop();
|
|
48
|
+
_loop(i);
|
|
41
49
|
}
|
|
50
|
+
|
|
42
51
|
return {
|
|
43
52
|
positions: positions,
|
|
44
53
|
index: indexArray
|
package/es/polygon/index.js
CHANGED
|
@@ -7,52 +7,71 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConst
|
|
|
7
7
|
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
8
8
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
9
9
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
10
|
+
|
|
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
|
+
|
|
11
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
|
+
|
|
12
15
|
import BaseLayer from "../core/BaseLayer";
|
|
13
16
|
import PolygonModels from "./models/";
|
|
17
|
+
|
|
14
18
|
var PolygonLayer = /*#__PURE__*/function (_BaseLayer) {
|
|
15
19
|
_inherits(PolygonLayer, _BaseLayer);
|
|
20
|
+
|
|
16
21
|
var _super = _createSuper(PolygonLayer);
|
|
22
|
+
|
|
17
23
|
function PolygonLayer() {
|
|
18
24
|
var _this;
|
|
25
|
+
|
|
19
26
|
_classCallCheck(this, PolygonLayer);
|
|
27
|
+
|
|
20
28
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
21
29
|
args[_key] = arguments[_key];
|
|
22
30
|
}
|
|
31
|
+
|
|
23
32
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
33
|
+
|
|
24
34
|
_defineProperty(_assertThisInitialized(_this), "type", 'PolygonLayer');
|
|
35
|
+
|
|
25
36
|
return _this;
|
|
26
37
|
}
|
|
38
|
+
|
|
27
39
|
_createClass(PolygonLayer, [{
|
|
28
40
|
key: "buildModels",
|
|
29
41
|
value: function () {
|
|
30
42
|
var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
31
43
|
var shape;
|
|
32
44
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
33
|
-
while (1)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
45
|
+
while (1) {
|
|
46
|
+
switch (_context.prev = _context.next) {
|
|
47
|
+
case 0:
|
|
48
|
+
shape = this.getModelType();
|
|
49
|
+
this.layerModel = new PolygonModels[shape](this);
|
|
50
|
+
_context.next = 4;
|
|
51
|
+
return this.initLayerModels();
|
|
52
|
+
|
|
53
|
+
case 4:
|
|
54
|
+
case "end":
|
|
55
|
+
return _context.stop();
|
|
56
|
+
}
|
|
42
57
|
}
|
|
43
58
|
}, _callee, this);
|
|
44
59
|
}));
|
|
60
|
+
|
|
45
61
|
function buildModels() {
|
|
46
62
|
return _buildModels.apply(this, arguments);
|
|
47
63
|
}
|
|
64
|
+
|
|
48
65
|
return buildModels;
|
|
49
66
|
}()
|
|
50
67
|
}, {
|
|
51
68
|
key: "getModelType",
|
|
52
69
|
value: function getModelType() {
|
|
53
70
|
var _shapeAttribute$scale;
|
|
71
|
+
|
|
54
72
|
var shapeAttribute = this.styleAttributeService.getLayerStyleAttribute('shape');
|
|
55
73
|
var shape = shapeAttribute === null || shapeAttribute === void 0 ? void 0 : (_shapeAttribute$scale = shapeAttribute.scale) === null || _shapeAttribute$scale === void 0 ? void 0 : _shapeAttribute$scale.field;
|
|
74
|
+
|
|
56
75
|
if (shape === 'fill' || !shape) {
|
|
57
76
|
return 'fill';
|
|
58
77
|
} else if (shape === 'extrude') {
|
|
@@ -73,33 +92,43 @@ var PolygonLayer = /*#__PURE__*/function (_BaseLayer) {
|
|
|
73
92
|
// pointlayer
|
|
74
93
|
// 2D、 3d、 shape、image、text、normal、
|
|
75
94
|
var layerData = this.getEncodedData();
|
|
95
|
+
|
|
76
96
|
var _this$getLayerConfig = this.getLayerConfig(),
|
|
77
|
-
|
|
78
|
-
|
|
97
|
+
shape2d = _this$getLayerConfig.shape2d,
|
|
98
|
+
shape3d = _this$getLayerConfig.shape3d;
|
|
99
|
+
|
|
79
100
|
var iconMap = this.iconService.getIconMap();
|
|
80
101
|
var item = layerData.find(function (fe) {
|
|
81
102
|
return fe.hasOwnProperty('shape');
|
|
82
103
|
});
|
|
104
|
+
|
|
83
105
|
if (!item) {
|
|
84
106
|
return 'fill';
|
|
85
107
|
} else {
|
|
86
108
|
var shape = item.shape;
|
|
109
|
+
|
|
87
110
|
if (shape === 'dot') {
|
|
88
111
|
return 'point_normal';
|
|
89
112
|
}
|
|
113
|
+
|
|
90
114
|
if ((shape2d === null || shape2d === void 0 ? void 0 : shape2d.indexOf(shape)) !== -1) {
|
|
91
115
|
return 'point_fill';
|
|
92
116
|
}
|
|
117
|
+
|
|
93
118
|
if ((shape3d === null || shape3d === void 0 ? void 0 : shape3d.indexOf(shape)) !== -1) {
|
|
94
119
|
return 'point_extrude';
|
|
95
120
|
}
|
|
121
|
+
|
|
96
122
|
if (iconMap.hasOwnProperty(shape)) {
|
|
97
123
|
return 'point_image';
|
|
98
124
|
}
|
|
125
|
+
|
|
99
126
|
return 'text';
|
|
100
127
|
}
|
|
101
128
|
}
|
|
102
129
|
}]);
|
|
130
|
+
|
|
103
131
|
return PolygonLayer;
|
|
104
132
|
}(BaseLayer);
|
|
133
|
+
|
|
105
134
|
export { PolygonLayer as default };
|
|
@@ -6,48 +6,63 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
|
6
6
|
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
7
7
|
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
8
8
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
9
|
+
|
|
9
10
|
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); }; }
|
|
11
|
+
|
|
10
12
|
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; } }
|
|
13
|
+
|
|
11
14
|
import { AttributeType, gl } from '@antv/l7-core';
|
|
12
15
|
import { rgb2arr } from '@antv/l7-utils';
|
|
13
16
|
import { isNumber } from 'lodash';
|
|
14
17
|
import BaseModel from "../../core/BaseModel";
|
|
15
18
|
import { PolygonExtrudeTriangulation } from "../../core/triangulation";
|
|
19
|
+
|
|
16
20
|
/* babel-plugin-inline-import '../shaders/extrude/polygon_extrude_frag.glsl' */
|
|
17
21
|
var polygonExtrudeFrag = "uniform float u_opacity: 1.0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\nuniform float u_linearColor: 0;\n\nuniform float u_topsurface: 1.0;\nuniform float u_sidesurface: 1.0;\n\nvarying vec4 v_Color;\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n#pragma include \"picking\"\n\nvoid main() {\n float opacity = styleMappingMat[0][0]; \n float isSide = styleMappingMat[0][3];\n float sidey = styleMappingMat[3][0];\n float lightWeight = styleMappingMat[3][1];\n\n // Tip: \u90E8\u5206\u673A\u578B GPU \u8BA1\u7B97\u7CBE\u5EA6\u517C\u5BB9\n if(isSide < 0.999) {\n // side face\n if(u_sidesurface < 1.0) {\n discard;\n }\n\n if(u_linearColor == 1.0) {\n vec4 linearColor = mix(u_targetColor, u_sourceColor, sidey);\n linearColor.rgb *= lightWeight;\n gl_FragColor = linearColor;\n } else {\n gl_FragColor = v_Color;\n }\n\n } else {\n // top face\n if(u_topsurface < 1.0) {\n discard;\n }\n\n gl_FragColor = v_Color;\n }\n\n gl_FragColor.a *= opacity;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
22
|
+
|
|
18
23
|
/* babel-plugin-inline-import '../shaders/extrude/polygon_extrude_vert.glsl' */
|
|
19
24
|
var polygonExtrudeVert = "precision highp float;\n\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Normal;\nattribute float a_Size;\nattribute vec3 a_uvs;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nuniform float u_heightfixed: 0.0; // \u9ED8\u8BA4\u4E0D\u56FA\u5B9A\nuniform float u_raisingHeight: 0.0;\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - isSide\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0 // sidey\n );\n styleMappingMat[0][3] = a_Position.z;\n styleMappingMat[3][0] = a_uvs[2];\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n vec4 pos = vec4(a_Position.xy, a_Position.z * a_Size, 1.0);\n vec4 project_pos = project_position(pos);\n\n if(u_heightfixed > 0.0) { // \u5224\u65AD\u51E0\u4F55\u4F53\u662F\u5426\u56FA\u5B9A\u9AD8\u5EA6\n project_pos.z = a_Position.z * a_Size;\n project_pos.z += u_raisingHeight;\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n project_pos.z *= mapboxZoomScale;\n project_pos.z += u_raisingHeight * mapboxZoomScale;\n }\n }\n\n // project_pos.z += 500000.0; // amap1\n\n // project_pos.z += (500000.0 * 4.0)/pow(2.0, 21.0 - u_Zoom); // mapbox\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n // gl_Position = u_Mvp * (vec4(project_pos.xyz * vec3(1.0, 1.0, -1.0), 1.0));\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n float lightWeight = calc_lighting(pos);\n // v_Color = a_Color;\n v_Color = vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n styleMappingMat[3][1] = lightWeight;\n\n setPickingColor(a_PickingColor);\n}\n"; // extrude
|
|
25
|
+
|
|
20
26
|
/* babel-plugin-inline-import '../shaders/extrude/polygon_extrudetex_frag.glsl' */
|
|
21
27
|
var polygonExtrudeTexFrag = "uniform sampler2D u_texture;\nuniform float u_opacity: 1.0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\nuniform float u_linearColor: 0;\n\nuniform float u_topsurface: 1.0;\nuniform float u_sidesurface: 1.0;\n\nvarying vec4 v_Color;\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n#pragma include \"picking\"\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float isSide = styleMappingMat[0][3];\n float lightWeight = styleMappingMat[3][1];\n float topU = styleMappingMat[2][2];\n float topV = styleMappingMat[2][3];\n\n float sidey = styleMappingMat[3][0];\n // Tip: \u90E8\u5206\u673A\u578B GPU \u8BA1\u7B97\u7CBE\u5EA6\u517C\u5BB9\n if(isSide < 0.999) {\n // side face\n if(u_sidesurface < 1.0) {\n discard;\n }\n\n if(u_linearColor == 1.0) {\n vec4 linearColor = mix(u_targetColor, u_sourceColor, sidey);\n linearColor.rgb *= lightWeight;\n gl_FragColor = linearColor;\n } else {\n gl_FragColor = v_Color;\n }\n } else {\n\n // top face\n if(u_topsurface < 1.0) {\n discard;\n }\n\n gl_FragColor = texture2D(u_texture, vec2(topU, topV));\n }\n \n\n gl_FragColor.a *= opacity;\n gl_FragColor = filterColor(gl_FragColor);\n}\n"; // texture
|
|
28
|
+
|
|
22
29
|
/* babel-plugin-inline-import '../shaders/extrude/polygon_extrudetex_vert.glsl' */
|
|
23
30
|
var polygonExtrudeTexVert = "precision highp float;\n\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Normal;\nattribute float a_Size;\nattribute vec3 a_uvs;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nuniform float u_heightfixed: 0.0; // \u9ED8\u8BA4\u4E0D\u56FA\u5B9A\nuniform float u_raisingHeight: 0.0;\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nvoid main() {\n v_Color = a_Color;\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - a_Position.z(judge side by a_Position.z)\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1] - u - v\n 0.0, 0.0, 0.0, 0.0 // sidey\n );\n \n styleMappingMat[0][3] = a_Position.z;\n styleMappingMat[2][2] = a_uvs[0];\n styleMappingMat[2][3] = 1.0 - a_uvs[1];\n styleMappingMat[3][0] = a_uvs[2];\n\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n vec4 pos = vec4(a_Position.xy, a_Position.z * a_Size, 1.0);\n vec4 project_pos = project_position(pos);\n\n if(u_heightfixed > 0.0) { // \u5224\u65AD\u51E0\u4F55\u4F53\u662F\u5426\u56FA\u5B9A\u9AD8\u5EA6\n project_pos.z = a_Position.z * a_Size;\n project_pos.z += u_raisingHeight;\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n project_pos.z *= mapboxZoomScale;\n project_pos.z += u_raisingHeight * mapboxZoomScale;\n }\n }\n\n // project_pos.z += 500000.0; // amap1\n\n // project_pos.z += (500000.0 * 4.0)/pow(2.0, 21.0 - u_Zoom); // mapbox\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n // gl_Position = u_Mvp * (vec4(project_pos.xyz * vec3(1.0, 1.0, -1.0), 1.0));\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n float lightWeight = calc_lighting(pos);\n styleMappingMat[3][1] = lightWeight;\n\n setPickingColor(a_PickingColor);\n}\n"; // extrude picking
|
|
31
|
+
|
|
24
32
|
/* babel-plugin-inline-import '../shaders/extrude/polygon_extrude_picklight_frag.glsl' */
|
|
25
33
|
var polygonExtrudePickLightFrag = "uniform float u_opacity: 1.0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\nuniform float u_linearColor: 0;\n\nuniform float u_topsurface: 1.0;\nuniform float u_sidesurface: 1.0;\n\nvarying vec4 v_Color;\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n#pragma include \"picking\"\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float isSide = styleMappingMat[0][3];\n float sidey = styleMappingMat[3][0];\n float lightWeight = styleMappingMat[3][1];\n\n // Tip: \u90E8\u5206\u673A\u578B GPU \u8BA1\u7B97\u7CBE\u5EA6\u517C\u5BB9\n if(isSide < 0.999) {\n // side face\n if(u_sidesurface < 1.0) {\n discard;\n }\n \n if( u_linearColor == 1.0) {\n // side use linear\n vec4 linearColor = mix(u_targetColor, u_sourceColor, sidey);\n linearColor.rgb *= lightWeight;\n gl_FragColor = linearColor;\n } else {\n // side notuse linear\n gl_FragColor = v_Color;\n }\n } else {\n // top face\n if(u_topsurface < 1.0) {\n discard;\n }\n gl_FragColor = v_Color;\n }\n\n gl_FragColor.a *= opacity;\n gl_FragColor = filterColorAlpha(gl_FragColor, lightWeight);\n}\n";
|
|
34
|
+
|
|
26
35
|
/* babel-plugin-inline-import '../shaders/extrude/polygon_extrude_picklight_vert.glsl' */
|
|
27
36
|
var polygonExtrudePickLightVert = "precision highp float;\n\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Normal;\nattribute float a_Size;\nattribute vec3 a_uvs;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nuniform float u_heightfixed: 0.0; // \u9ED8\u8BA4\u4E0D\u56FA\u5B9A\nuniform float u_raisingHeight: 0.0;\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - isSide\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0 // sidey\n );\n styleMappingMat[0][3] = a_Position.z;\n styleMappingMat[3][0] = a_uvs[2];\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n vec4 pos = vec4(a_Position.xy, a_Position.z * a_Size, 1.0);\n vec4 project_pos = project_position(pos);\n\n if(u_heightfixed > 0.0) { // \u5224\u65AD\u51E0\u4F55\u4F53\u662F\u5426\u56FA\u5B9A\u9AD8\u5EA6\n project_pos.z = a_Position.z * a_Size;\n project_pos.z += u_raisingHeight;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n project_pos.z *= mapboxZoomScale;\n project_pos.z += u_raisingHeight * mapboxZoomScale;\n }\n }\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n // gl_Position = u_Mvp * (vec4(project_pos.xyz * vec3(1.0, 1.0, -1.0), 1.0));\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n float lightWeight = calc_lighting(pos);\n // v_Color = a_Color;\n v_Color = vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n styleMappingMat[3][1] = lightWeight;\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
37
|
+
|
|
28
38
|
var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
29
39
|
_inherits(ExtrudeModel, _BaseModel);
|
|
40
|
+
|
|
30
41
|
var _super = _createSuper(ExtrudeModel);
|
|
42
|
+
|
|
31
43
|
function ExtrudeModel() {
|
|
32
44
|
_classCallCheck(this, ExtrudeModel);
|
|
45
|
+
|
|
33
46
|
return _super.apply(this, arguments);
|
|
34
47
|
}
|
|
48
|
+
|
|
35
49
|
_createClass(ExtrudeModel, [{
|
|
36
50
|
key: "getUninforms",
|
|
37
51
|
value: function getUninforms() {
|
|
38
52
|
var _ref = this.layer.getLayerConfig(),
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
53
|
+
_ref$opacity = _ref.opacity,
|
|
54
|
+
opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
|
|
55
|
+
_ref$heightfixed = _ref.heightfixed,
|
|
56
|
+
heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed,
|
|
57
|
+
_ref$raisingHeight = _ref.raisingHeight,
|
|
58
|
+
raisingHeight = _ref$raisingHeight === void 0 ? 0 : _ref$raisingHeight,
|
|
59
|
+
_ref$topsurface = _ref.topsurface,
|
|
60
|
+
topsurface = _ref$topsurface === void 0 ? true : _ref$topsurface,
|
|
61
|
+
_ref$sidesurface = _ref.sidesurface,
|
|
62
|
+
sidesurface = _ref$sidesurface === void 0 ? true : _ref$sidesurface,
|
|
63
|
+
sourceColor = _ref.sourceColor,
|
|
64
|
+
targetColor = _ref.targetColor;
|
|
65
|
+
|
|
51
66
|
if (this.dataTextureTest && this.dataTextureNeedUpdate({
|
|
52
67
|
opacity: opacity
|
|
53
68
|
})) {
|
|
@@ -55,10 +70,12 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
55
70
|
opacity: opacity
|
|
56
71
|
});
|
|
57
72
|
var encodeData = this.layer.getEncodedData();
|
|
73
|
+
|
|
58
74
|
var _this$calDataFrame = this.calDataFrame(this.cellLength, encodeData, this.cellProperties),
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
75
|
+
data = _this$calDataFrame.data,
|
|
76
|
+
width = _this$calDataFrame.width,
|
|
77
|
+
height = _this$calDataFrame.height;
|
|
78
|
+
|
|
62
79
|
this.rowCount = height; // 当前数据纹理有多少行
|
|
63
80
|
|
|
64
81
|
this.dataTexture = this.cellLength > 0 && data.length > 0 ? this.createTexture2D({
|
|
@@ -76,17 +93,20 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
76
93
|
width: 1,
|
|
77
94
|
height: 1
|
|
78
95
|
});
|
|
79
|
-
}
|
|
96
|
+
} // 转化渐变色
|
|
97
|
+
|
|
80
98
|
|
|
81
|
-
// 转化渐变色
|
|
82
99
|
var useLinearColor = 0; // 默认不生效
|
|
100
|
+
|
|
83
101
|
var sourceColorArr = [1, 1, 1, 1];
|
|
84
102
|
var targetColorArr = [1, 1, 1, 1];
|
|
103
|
+
|
|
85
104
|
if (sourceColor && targetColor) {
|
|
86
105
|
sourceColorArr = rgb2arr(sourceColor);
|
|
87
106
|
targetColorArr = rgb2arr(targetColor);
|
|
88
107
|
useLinearColor = 1;
|
|
89
108
|
}
|
|
109
|
+
|
|
90
110
|
return {
|
|
91
111
|
// 控制侧面和顶面的显示隐藏
|
|
92
112
|
u_topsurface: Number(topsurface),
|
|
@@ -109,19 +129,24 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
109
129
|
value: function () {
|
|
110
130
|
var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
111
131
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
112
|
-
while (1)
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
132
|
+
while (1) {
|
|
133
|
+
switch (_context.prev = _context.next) {
|
|
134
|
+
case 0:
|
|
135
|
+
this.loadTexture();
|
|
136
|
+
return _context.abrupt("return", this.buildModels());
|
|
137
|
+
|
|
138
|
+
case 2:
|
|
139
|
+
case "end":
|
|
140
|
+
return _context.stop();
|
|
141
|
+
}
|
|
119
142
|
}
|
|
120
143
|
}, _callee, this);
|
|
121
144
|
}));
|
|
145
|
+
|
|
122
146
|
function initModels() {
|
|
123
147
|
return _initModels.apply(this, arguments);
|
|
124
148
|
}
|
|
149
|
+
|
|
125
150
|
return initModels;
|
|
126
151
|
}()
|
|
127
152
|
}, {
|
|
@@ -129,37 +154,45 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
129
154
|
value: function () {
|
|
130
155
|
var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
131
156
|
var _this$getShaders, frag, vert, type, model;
|
|
157
|
+
|
|
132
158
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
133
|
-
while (1)
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
159
|
+
while (1) {
|
|
160
|
+
switch (_context2.prev = _context2.next) {
|
|
161
|
+
case 0:
|
|
162
|
+
_this$getShaders = this.getShaders(), frag = _this$getShaders.frag, vert = _this$getShaders.vert, type = _this$getShaders.type;
|
|
163
|
+
_context2.next = 3;
|
|
164
|
+
return this.layer.buildLayerModel({
|
|
165
|
+
moduleName: type,
|
|
166
|
+
vertexShader: vert,
|
|
167
|
+
fragmentShader: frag,
|
|
168
|
+
triangulation: PolygonExtrudeTriangulation
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
case 3:
|
|
172
|
+
model = _context2.sent;
|
|
173
|
+
return _context2.abrupt("return", [model]);
|
|
174
|
+
|
|
175
|
+
case 5:
|
|
176
|
+
case "end":
|
|
177
|
+
return _context2.stop();
|
|
178
|
+
}
|
|
149
179
|
}
|
|
150
180
|
}, _callee2, this);
|
|
151
181
|
}));
|
|
182
|
+
|
|
152
183
|
function buildModels() {
|
|
153
184
|
return _buildModels.apply(this, arguments);
|
|
154
185
|
}
|
|
186
|
+
|
|
155
187
|
return buildModels;
|
|
156
188
|
}()
|
|
157
189
|
}, {
|
|
158
190
|
key: "getShaders",
|
|
159
191
|
value: function getShaders() {
|
|
160
192
|
var _ref2 = this.layer.getLayerConfig(),
|
|
161
|
-
|
|
162
|
-
|
|
193
|
+
pickLight = _ref2.pickLight,
|
|
194
|
+
mapTexture = _ref2.mapTexture;
|
|
195
|
+
|
|
163
196
|
if (mapTexture) {
|
|
164
197
|
return {
|
|
165
198
|
frag: polygonExtrudeTexFrag,
|
|
@@ -167,6 +200,7 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
167
200
|
type: 'polygonExtrudeTexture'
|
|
168
201
|
};
|
|
169
202
|
}
|
|
203
|
+
|
|
170
204
|
if (pickLight) {
|
|
171
205
|
return {
|
|
172
206
|
frag: polygonExtrudePickLightFrag,
|
|
@@ -185,6 +219,7 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
185
219
|
key: "clearModels",
|
|
186
220
|
value: function clearModels() {
|
|
187
221
|
var _this$dataTexture, _this$texture;
|
|
222
|
+
|
|
188
223
|
(_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
|
|
189
224
|
(_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
|
|
190
225
|
}
|
|
@@ -192,11 +227,13 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
192
227
|
key: "registerBuiltinAttributes",
|
|
193
228
|
value: function registerBuiltinAttributes() {
|
|
194
229
|
var bbox = this.layer.getSource().extent;
|
|
230
|
+
|
|
195
231
|
var _bbox = _slicedToArray(bbox, 4),
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
232
|
+
minLng = _bbox[0],
|
|
233
|
+
minLat = _bbox[1],
|
|
234
|
+
maxLng = _bbox[2],
|
|
235
|
+
maxLat = _bbox[3];
|
|
236
|
+
|
|
200
237
|
var lngLen = maxLng - minLng;
|
|
201
238
|
var latLen = maxLat - minLat;
|
|
202
239
|
this.styleAttributeService.registerStyleAttribute({
|
|
@@ -248,7 +285,7 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
248
285
|
size: 1,
|
|
249
286
|
update: function update(feature) {
|
|
250
287
|
var _feature$size = feature.size,
|
|
251
|
-
|
|
288
|
+
size = _feature$size === void 0 ? 10 : _feature$size;
|
|
252
289
|
return Array.isArray(size) ? [size[0]] : [size];
|
|
253
290
|
}
|
|
254
291
|
}
|
|
@@ -258,17 +295,21 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
258
295
|
key: "loadTexture",
|
|
259
296
|
value: function loadTexture() {
|
|
260
297
|
var _this = this;
|
|
298
|
+
|
|
261
299
|
var _ref3 = this.layer.getLayerConfig(),
|
|
262
|
-
|
|
300
|
+
mapTexture = _ref3.mapTexture;
|
|
301
|
+
|
|
263
302
|
var createTexture2D = this.rendererService.createTexture2D;
|
|
264
303
|
this.texture = createTexture2D({
|
|
265
304
|
height: 0,
|
|
266
305
|
width: 0
|
|
267
306
|
});
|
|
307
|
+
|
|
268
308
|
if (mapTexture) {
|
|
269
309
|
var image = new Image();
|
|
270
310
|
image.crossOrigin = '';
|
|
271
311
|
image.src = mapTexture;
|
|
312
|
+
|
|
272
313
|
image.onload = function () {
|
|
273
314
|
_this.texture = createTexture2D({
|
|
274
315
|
data: image,
|
|
@@ -279,11 +320,14 @@ var ExtrudeModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
279
320
|
min: gl.LINEAR,
|
|
280
321
|
mag: gl.LINEAR
|
|
281
322
|
});
|
|
323
|
+
|
|
282
324
|
_this.layerService.reRender();
|
|
283
325
|
};
|
|
284
326
|
}
|
|
285
327
|
}
|
|
286
328
|
}]);
|
|
329
|
+
|
|
287
330
|
return ExtrudeModel;
|
|
288
331
|
}(BaseModel);
|
|
332
|
+
|
|
289
333
|
export { ExtrudeModel as default };
|