@loaders.gl/mvt 3.1.0-alpha.4 → 3.1.0-beta.3
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/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +2277 -0
- package/dist/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/helpers/binary-util-functions.js +18 -18
- package/dist/es5/helpers/binary-util-functions.js.map +1 -1
- package/dist/es5/helpers/mapbox-util-functions.js +11 -11
- package/dist/es5/helpers/mapbox-util-functions.js.map +1 -1
- package/dist/es5/index.js +2 -2
- package/dist/es5/lib/binary-vector-tile/features-to-binary.js +130 -177
- package/dist/es5/lib/binary-vector-tile/features-to-binary.js.map +1 -1
- package/dist/es5/lib/binary-vector-tile/vector-tile-feature.js +104 -131
- package/dist/es5/lib/binary-vector-tile/vector-tile-feature.js.map +1 -1
- package/dist/es5/lib/binary-vector-tile/vector-tile-layer.js +15 -23
- package/dist/es5/lib/binary-vector-tile/vector-tile-layer.js.map +1 -1
- package/dist/es5/lib/binary-vector-tile/vector-tile.js +8 -8
- package/dist/es5/lib/binary-vector-tile/vector-tile.js.map +1 -1
- package/dist/es5/lib/mapbox-vector-tile/vector-tile-feature.js +147 -157
- package/dist/es5/lib/mapbox-vector-tile/vector-tile-feature.js.map +1 -1
- package/dist/es5/lib/mapbox-vector-tile/vector-tile-layer.js +15 -23
- package/dist/es5/lib/mapbox-vector-tile/vector-tile-layer.js.map +1 -1
- package/dist/es5/lib/mapbox-vector-tile/vector-tile.js +8 -8
- package/dist/es5/lib/mapbox-vector-tile/vector-tile.js.map +1 -1
- package/dist/es5/lib/parse-mvt.js +33 -35
- package/dist/es5/lib/parse-mvt.js.map +1 -1
- package/dist/es5/mvt-loader.js +5 -38
- package/dist/es5/mvt-loader.js.map +1 -1
- package/dist/esm/lib/binary-vector-tile/vector-tile-feature.js +2 -2
- package/dist/esm/lib/binary-vector-tile/vector-tile-feature.js.map +1 -1
- package/dist/esm/lib/mapbox-vector-tile/vector-tile-feature.js +3 -3
- package/dist/esm/lib/mapbox-vector-tile/vector-tile-feature.js.map +1 -1
- package/dist/esm/lib/parse-mvt.js.map +1 -1
- package/dist/esm/mvt-loader.js +1 -1
- package/dist/esm/mvt-loader.js.map +1 -1
- package/dist/helpers/binary-util-functions.d.ts +39 -0
- package/dist/helpers/binary-util-functions.d.ts.map +1 -0
- package/dist/helpers/binary-util-functions.js +116 -0
- package/dist/helpers/mapbox-util-functions.d.ts +29 -0
- package/dist/helpers/mapbox-util-functions.d.ts.map +1 -0
- package/dist/helpers/mapbox-util-functions.js +82 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/lib/binary-vector-tile/features-to-binary.d.ts +185 -0
- package/dist/lib/binary-vector-tile/features-to-binary.d.ts.map +1 -0
- package/dist/lib/binary-vector-tile/features-to-binary.js +353 -0
- package/dist/lib/binary-vector-tile/vector-tile-feature.d.ts +36 -0
- package/dist/lib/binary-vector-tile/vector-tile-feature.d.ts.map +1 -0
- package/dist/lib/binary-vector-tile/vector-tile-feature.js +159 -0
- package/dist/lib/binary-vector-tile/vector-tile-layer.d.ts +23 -0
- package/dist/lib/binary-vector-tile/vector-tile-layer.d.ts.map +1 -0
- package/dist/lib/binary-vector-tile/vector-tile-layer.js +91 -0
- package/dist/lib/binary-vector-tile/vector-tile.d.ts +9 -0
- package/dist/lib/binary-vector-tile/vector-tile.d.ts.map +1 -0
- package/dist/lib/binary-vector-tile/vector-tile.js +29 -0
- package/dist/lib/mapbox-vector-tile/vector-tile-feature.d.ts +27 -0
- package/dist/lib/mapbox-vector-tile/vector-tile-feature.d.ts.map +1 -0
- package/dist/lib/mapbox-vector-tile/vector-tile-feature.js +170 -0
- package/dist/lib/mapbox-vector-tile/vector-tile-layer.d.ts +20 -0
- package/dist/lib/mapbox-vector-tile/vector-tile-layer.d.ts.map +1 -0
- package/dist/lib/mapbox-vector-tile/vector-tile-layer.js +89 -0
- package/dist/lib/mapbox-vector-tile/vector-tile.d.ts +9 -0
- package/dist/lib/mapbox-vector-tile/vector-tile.d.ts.map +1 -0
- package/dist/lib/mapbox-vector-tile/vector-tile.js +29 -0
- package/dist/lib/parse-mvt.d.ts +85 -0
- package/dist/lib/parse-mvt.d.ts.map +1 -0
- package/dist/lib/parse-mvt.js +142 -0
- package/dist/lib/types.d.ts +92 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/mvt-loader.d.ts +10 -0
- package/dist/mvt-loader.d.ts.map +1 -0
- package/dist/mvt-loader.js +45 -0
- package/dist/mvt-worker.js +2286 -3
- package/dist/workers/mvt-worker.d.ts +2 -0
- package/dist/workers/mvt-worker.d.ts.map +1 -0
- package/dist/workers/mvt-worker.js +5 -0
- package/package.json +7 -7
- package/src/lib/parse-mvt.ts +1 -1
- package/dist/dist.min.js +0 -4
- package/dist/dist.min.js.map +0 -1
- package/dist/mvt-worker.js.map +0 -1
|
@@ -7,17 +7,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
11
|
|
|
16
12
|
var _mapboxUtilFunctions = require("../../helpers/mapbox-util-functions");
|
|
17
13
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
class VectorTileFeature {
|
|
15
|
+
static get types() {
|
|
16
|
+
return ['Unknown', 'Point', 'LineString', 'Polygon'];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
constructor(pbf, end, extent, keys, values) {
|
|
21
20
|
(0, _defineProperty2.default)(this, "properties", void 0);
|
|
22
21
|
(0, _defineProperty2.default)(this, "extent", void 0);
|
|
23
22
|
(0, _defineProperty2.default)(this, "type", void 0);
|
|
@@ -37,181 +36,172 @@ var VectorTileFeature = function () {
|
|
|
37
36
|
pbf.readFields(_mapboxUtilFunctions.readFeature, this, end);
|
|
38
37
|
}
|
|
39
38
|
|
|
40
|
-
(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
length = cmdLen >> 3;
|
|
58
|
-
}
|
|
39
|
+
loadGeometry() {
|
|
40
|
+
const pbf = this._pbf;
|
|
41
|
+
pbf.pos = this._geometry;
|
|
42
|
+
const end = pbf.readVarint() + pbf.pos;
|
|
43
|
+
let cmd = 1;
|
|
44
|
+
let length = 0;
|
|
45
|
+
let x = 0;
|
|
46
|
+
let y = 0;
|
|
47
|
+
const lines = [];
|
|
48
|
+
let line;
|
|
49
|
+
|
|
50
|
+
while (pbf.pos < end) {
|
|
51
|
+
if (length <= 0) {
|
|
52
|
+
const cmdLen = pbf.readVarint();
|
|
53
|
+
cmd = cmdLen & 0x7;
|
|
54
|
+
length = cmdLen >> 3;
|
|
55
|
+
}
|
|
59
56
|
|
|
60
|
-
|
|
57
|
+
length--;
|
|
61
58
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
if (cmd === 1 || cmd === 2) {
|
|
60
|
+
x += pbf.readSVarint();
|
|
61
|
+
y += pbf.readSVarint();
|
|
65
62
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
63
|
+
if (cmd === 1) {
|
|
64
|
+
if (line) lines.push(line);
|
|
65
|
+
line = [];
|
|
66
|
+
}
|
|
70
67
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
} else {
|
|
77
|
-
throw new Error("unknown command ".concat(cmd));
|
|
68
|
+
if (line) line.push([x, y]);
|
|
69
|
+
} else if (cmd === 7) {
|
|
70
|
+
if (line) {
|
|
71
|
+
line.push(line[0].slice());
|
|
78
72
|
}
|
|
73
|
+
} else {
|
|
74
|
+
throw new Error("unknown command ".concat(cmd));
|
|
79
75
|
}
|
|
80
|
-
|
|
81
|
-
if (line) lines.push(line);
|
|
82
|
-
return lines;
|
|
83
76
|
}
|
|
84
|
-
}, {
|
|
85
|
-
key: "bbox",
|
|
86
|
-
value: function bbox() {
|
|
87
|
-
var pbf = this._pbf;
|
|
88
|
-
pbf.pos = this._geometry;
|
|
89
|
-
var end = pbf.readVarint() + pbf.pos;
|
|
90
|
-
var cmd = 1;
|
|
91
|
-
var length = 0;
|
|
92
|
-
var x = 0;
|
|
93
|
-
var y = 0;
|
|
94
|
-
var x1 = Infinity;
|
|
95
|
-
var x2 = -Infinity;
|
|
96
|
-
var y1 = Infinity;
|
|
97
|
-
var y2 = -Infinity;
|
|
98
|
-
|
|
99
|
-
while (pbf.pos < end) {
|
|
100
|
-
if (length <= 0) {
|
|
101
|
-
var cmdLen = pbf.readVarint();
|
|
102
|
-
cmd = cmdLen & 0x7;
|
|
103
|
-
length = cmdLen >> 3;
|
|
104
|
-
}
|
|
105
77
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
78
|
+
if (line) lines.push(line);
|
|
79
|
+
return lines;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
bbox() {
|
|
83
|
+
const pbf = this._pbf;
|
|
84
|
+
pbf.pos = this._geometry;
|
|
85
|
+
const end = pbf.readVarint() + pbf.pos;
|
|
86
|
+
let cmd = 1;
|
|
87
|
+
let length = 0;
|
|
88
|
+
let x = 0;
|
|
89
|
+
let y = 0;
|
|
90
|
+
let x1 = Infinity;
|
|
91
|
+
let x2 = -Infinity;
|
|
92
|
+
let y1 = Infinity;
|
|
93
|
+
let y2 = -Infinity;
|
|
94
|
+
|
|
95
|
+
while (pbf.pos < end) {
|
|
96
|
+
if (length <= 0) {
|
|
97
|
+
const cmdLen = pbf.readVarint();
|
|
98
|
+
cmd = cmdLen & 0x7;
|
|
99
|
+
length = cmdLen >> 3;
|
|
118
100
|
}
|
|
119
101
|
|
|
120
|
-
|
|
102
|
+
length--;
|
|
103
|
+
|
|
104
|
+
if (cmd === 1 || cmd === 2) {
|
|
105
|
+
x += pbf.readSVarint();
|
|
106
|
+
y += pbf.readSVarint();
|
|
107
|
+
if (x < x1) x1 = x;
|
|
108
|
+
if (x > x2) x2 = x;
|
|
109
|
+
if (y < y1) y1 = y;
|
|
110
|
+
if (y > y2) y2 = y;
|
|
111
|
+
} else if (cmd !== 7) {
|
|
112
|
+
throw new Error("unknown command ".concat(cmd));
|
|
113
|
+
}
|
|
121
114
|
}
|
|
122
|
-
}, {
|
|
123
|
-
key: "_toGeoJSON",
|
|
124
|
-
value: function _toGeoJSON(transform) {
|
|
125
|
-
var coords = this.loadGeometry();
|
|
126
|
-
var type = VectorTileFeature.types[this.type];
|
|
127
|
-
var i;
|
|
128
|
-
var j;
|
|
129
|
-
|
|
130
|
-
switch (this.type) {
|
|
131
|
-
case 1:
|
|
132
|
-
var points = [];
|
|
133
|
-
|
|
134
|
-
for (i = 0; i < coords.length; i++) {
|
|
135
|
-
points[i] = coords[i][0];
|
|
136
|
-
}
|
|
137
115
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
break;
|
|
116
|
+
return [x1, y1, x2, y2];
|
|
117
|
+
}
|
|
141
118
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
119
|
+
_toGeoJSON(transform) {
|
|
120
|
+
let coords = this.loadGeometry();
|
|
121
|
+
let type = VectorTileFeature.types[this.type];
|
|
122
|
+
let i;
|
|
123
|
+
let j;
|
|
146
124
|
|
|
147
|
-
|
|
125
|
+
switch (this.type) {
|
|
126
|
+
case 1:
|
|
127
|
+
const points = [];
|
|
148
128
|
|
|
149
|
-
|
|
150
|
-
|
|
129
|
+
for (i = 0; i < coords.length; i++) {
|
|
130
|
+
points[i] = coords[i][0];
|
|
131
|
+
}
|
|
151
132
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
}
|
|
156
|
-
}
|
|
133
|
+
coords = points;
|
|
134
|
+
transform(coords, this);
|
|
135
|
+
break;
|
|
157
136
|
|
|
158
|
-
|
|
159
|
-
|
|
137
|
+
case 2:
|
|
138
|
+
for (i = 0; i < coords.length; i++) {
|
|
139
|
+
transform(coords[i], this);
|
|
140
|
+
}
|
|
160
141
|
|
|
161
|
-
|
|
162
|
-
coords = coords[0];
|
|
163
|
-
} else {
|
|
164
|
-
type = "Multi".concat(type);
|
|
165
|
-
}
|
|
142
|
+
break;
|
|
166
143
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
geometry: {
|
|
170
|
-
type: type,
|
|
171
|
-
coordinates: coords
|
|
172
|
-
},
|
|
173
|
-
properties: this.properties
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
if (this.id !== null) {
|
|
177
|
-
result.id = this.id;
|
|
178
|
-
}
|
|
144
|
+
case 3:
|
|
145
|
+
coords = (0, _mapboxUtilFunctions.classifyRings)(coords);
|
|
179
146
|
|
|
180
|
-
|
|
147
|
+
for (i = 0; i < coords.length; i++) {
|
|
148
|
+
for (j = 0; j < coords[i].length; j++) {
|
|
149
|
+
transform(coords[i][j], this);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
break;
|
|
181
154
|
}
|
|
182
|
-
}, {
|
|
183
|
-
key: "toGeoJSON",
|
|
184
|
-
value: function toGeoJSON(options) {
|
|
185
|
-
if (typeof options === 'function') {
|
|
186
|
-
return this._toGeoJSON(options);
|
|
187
|
-
}
|
|
188
155
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
156
|
+
if (coords.length === 1) {
|
|
157
|
+
coords = coords[0];
|
|
158
|
+
} else {
|
|
159
|
+
type = "Multi".concat(type);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const result = {
|
|
163
|
+
type: 'Feature',
|
|
164
|
+
geometry: {
|
|
165
|
+
type,
|
|
166
|
+
coordinates: coords
|
|
167
|
+
},
|
|
168
|
+
properties: this.properties
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
if (this.id !== null) {
|
|
172
|
+
result.id = this.id;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return result;
|
|
176
|
+
}
|
|
204
177
|
|
|
205
|
-
|
|
178
|
+
toGeoJSON(options) {
|
|
179
|
+
if (typeof options === 'function') {
|
|
180
|
+
return this._toGeoJSON(options);
|
|
206
181
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
182
|
+
|
|
183
|
+
const {
|
|
184
|
+
x,
|
|
185
|
+
y,
|
|
186
|
+
z
|
|
187
|
+
} = options;
|
|
188
|
+
const size = this.extent * Math.pow(2, z);
|
|
189
|
+
const x0 = this.extent * x;
|
|
190
|
+
const y0 = this.extent * y;
|
|
191
|
+
|
|
192
|
+
function project(line) {
|
|
193
|
+
for (let j = 0; j < line.length; j++) {
|
|
194
|
+
const p = line[j];
|
|
195
|
+
p[0] = (p[0] + x0) * 360 / size - 180;
|
|
196
|
+
const y2 = 180 - (p[1] + y0) * 360 / size;
|
|
197
|
+
p[1] = 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90;
|
|
198
|
+
}
|
|
211
199
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
}
|
|
200
|
+
|
|
201
|
+
return this._toGeoJSON(project);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
}
|
|
215
205
|
|
|
216
206
|
exports.default = VectorTileFeature;
|
|
217
207
|
//# sourceMappingURL=vector-tile-feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/mapbox-vector-tile/vector-tile-feature.ts"],"names":["VectorTileFeature","pbf","end","extent","keys","values","properties","type","id","_pbf","_geometry","_keys","_values","readFields","readFeature","pos","readVarint","cmd","length","x","y","lines","line","cmdLen","readSVarint","push","slice","Error","x1","Infinity","x2","y1","y2","transform","coords","loadGeometry","types","i","j","points","result","geometry","coordinates","options","_toGeoJSON","z","size","Math","pow","x0","y0","project","p","PI","atan","exp"],"mappings":"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","sourcesContent":["// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\nimport Protobuf from 'pbf';\nimport {MvtMapboxCoordinates, MvtMapboxGeometry} from '../types';\nimport {readFeature, classifyRings} from '../../helpers/mapbox-util-functions';\n\nexport default class VectorTileFeature {\n properties: {[x: string]: string | number | boolean | null};\n extent: any;\n type: number;\n id: number | null;\n _pbf: Protobuf;\n _geometry: number;\n _keys: string[];\n _values: (string | number | boolean | null)[];\n static get types() {\n return ['Unknown', 'Point', 'LineString', 'Polygon'];\n }\n\n constructor(\n pbf: Protobuf,\n end: number,\n extent: any,\n keys: string[],\n values: (string | number | boolean | null)[]\n ) {\n // Public\n this.properties = {};\n this.extent = extent;\n this.type = 0;\n this.id = null;\n\n // Private\n this._pbf = pbf;\n this._geometry = -1;\n this._keys = keys;\n this._values = values;\n\n pbf.readFields(readFeature, this, end);\n }\n\n // eslint-disable-next-line complexity, max-statements\n loadGeometry(): MvtMapboxGeometry {\n const pbf = this._pbf;\n pbf.pos = this._geometry;\n\n const end = pbf.readVarint() + pbf.pos;\n let cmd = 1;\n let length = 0;\n let x = 0;\n let y = 0;\n const lines: number[][][] = [];\n let line: number[][] | undefined;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n const cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n\n if (cmd === 1) {\n // moveTo\n if (line) lines.push(line);\n line = [];\n }\n if (line) line.push([x, y]);\n } else if (cmd === 7) {\n // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90\n if (line) {\n line.push(line[0].slice()); // closePolygon\n }\n } else {\n throw new Error(`unknown command ${cmd}`);\n }\n }\n\n if (line) lines.push(line);\n\n return lines;\n }\n\n // eslint-disable-next-line max-statements\n bbox() {\n const pbf = this._pbf;\n pbf.pos = this._geometry;\n\n const end = pbf.readVarint() + pbf.pos;\n let cmd = 1;\n let length = 0;\n let x = 0;\n let y = 0;\n let x1 = Infinity;\n let x2 = -Infinity;\n let y1 = Infinity;\n let y2 = -Infinity;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n const cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n if (x < x1) x1 = x;\n if (x > x2) x2 = x;\n if (y < y1) y1 = y;\n if (y > y2) y2 = y;\n } else if (cmd !== 7) {\n throw new Error(`unknown command ${cmd}`);\n }\n }\n\n return [x1, y1, x2, y2];\n }\n\n _toGeoJSON(transform) {\n let coords = this.loadGeometry();\n let type = VectorTileFeature.types[this.type];\n let i: number;\n let j: number;\n\n // eslint-disable-next-line default-case\n switch (this.type) {\n case 1:\n const points: number[] = [];\n for (i = 0; i < coords.length; i++) {\n points[i] = coords[i][0];\n }\n coords = points;\n transform(coords, this);\n break;\n\n case 2:\n for (i = 0; i < coords.length; i++) {\n transform(coords[i], this);\n }\n break;\n\n case 3:\n coords = classifyRings(coords);\n for (i = 0; i < coords.length; i++) {\n for (j = 0; j < coords[i].length; j++) {\n transform(coords[i][j], this);\n }\n }\n break;\n }\n\n if (coords.length === 1) {\n coords = coords[0];\n } else {\n type = `Multi${type}`;\n }\n\n const result: MvtMapboxCoordinates = {\n type: 'Feature',\n geometry: {\n type,\n coordinates: coords\n },\n properties: this.properties\n };\n\n if (this.id !== null) {\n result.id = this.id;\n }\n\n return result;\n }\n\n toGeoJSON(\n options: {x: number; y: number; z: number} | ((data: number[], feature: {extent: any}) => void)\n ): MvtMapboxCoordinates {\n if (typeof options === 'function') {\n return this._toGeoJSON(options);\n }\n const {x, y, z} = options;\n const size = this.extent * Math.pow(2, z);\n const x0 = this.extent * x;\n const y0 = this.extent * y;\n\n function project(line: number[]) {\n for (let j = 0; j < line.length; j++) {\n const p = line[j];\n p[0] = ((p[0] + x0) * 360) / size - 180;\n const y2 = 180 - ((p[1] + y0) * 360) / size;\n p[1] = (360 / Math.PI) * Math.atan(Math.exp((y2 * Math.PI) / 180)) - 90;\n }\n }\n return this._toGeoJSON(project);\n }\n}\n"],"file":"vector-tile-feature.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/mapbox-vector-tile/vector-tile-feature.ts"],"names":["VectorTileFeature","types","constructor","pbf","end","extent","keys","values","properties","type","id","_pbf","_geometry","_keys","_values","readFields","readFeature","loadGeometry","pos","readVarint","cmd","length","x","y","lines","line","cmdLen","readSVarint","push","slice","Error","bbox","x1","Infinity","x2","y1","y2","_toGeoJSON","transform","coords","i","j","points","result","geometry","coordinates","toGeoJSON","options","z","size","Math","pow","x0","y0","project","p","PI","atan","exp"],"mappings":"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","sourcesContent":["// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\nimport Protobuf from 'pbf';\nimport {MvtMapboxCoordinates, MvtMapboxGeometry} from '../types';\nimport {readFeature, classifyRings} from '../../helpers/mapbox-util-functions';\n\nexport default class VectorTileFeature {\n properties: {[x: string]: string | number | boolean | null};\n extent: any;\n type: number;\n id: number | null;\n _pbf: Protobuf;\n _geometry: number;\n _keys: string[];\n _values: (string | number | boolean | null)[];\n static get types() {\n return ['Unknown', 'Point', 'LineString', 'Polygon'];\n }\n\n constructor(\n pbf: Protobuf,\n end: number,\n extent: any,\n keys: string[],\n values: (string | number | boolean | null)[]\n ) {\n // Public\n this.properties = {};\n this.extent = extent;\n this.type = 0;\n this.id = null;\n\n // Private\n this._pbf = pbf;\n this._geometry = -1;\n this._keys = keys;\n this._values = values;\n\n pbf.readFields(readFeature, this, end);\n }\n\n // eslint-disable-next-line complexity, max-statements\n loadGeometry(): MvtMapboxGeometry {\n const pbf = this._pbf;\n pbf.pos = this._geometry;\n\n const end = pbf.readVarint() + pbf.pos;\n let cmd = 1;\n let length = 0;\n let x = 0;\n let y = 0;\n const lines: number[][][] = [];\n let line: number[][] | undefined;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n const cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n\n if (cmd === 1) {\n // moveTo\n if (line) lines.push(line);\n line = [];\n }\n if (line) line.push([x, y]);\n } else if (cmd === 7) {\n // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90\n if (line) {\n line.push(line[0].slice()); // closePolygon\n }\n } else {\n throw new Error(`unknown command ${cmd}`);\n }\n }\n\n if (line) lines.push(line);\n\n return lines;\n }\n\n // eslint-disable-next-line max-statements\n bbox() {\n const pbf = this._pbf;\n pbf.pos = this._geometry;\n\n const end = pbf.readVarint() + pbf.pos;\n let cmd = 1;\n let length = 0;\n let x = 0;\n let y = 0;\n let x1 = Infinity;\n let x2 = -Infinity;\n let y1 = Infinity;\n let y2 = -Infinity;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n const cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n if (x < x1) x1 = x;\n if (x > x2) x2 = x;\n if (y < y1) y1 = y;\n if (y > y2) y2 = y;\n } else if (cmd !== 7) {\n throw new Error(`unknown command ${cmd}`);\n }\n }\n\n return [x1, y1, x2, y2];\n }\n\n _toGeoJSON(transform) {\n let coords = this.loadGeometry();\n let type = VectorTileFeature.types[this.type];\n let i: number;\n let j: number;\n\n // eslint-disable-next-line default-case\n switch (this.type) {\n case 1:\n const points: number[] = [];\n for (i = 0; i < coords.length; i++) {\n points[i] = coords[i][0];\n }\n coords = points;\n transform(coords, this);\n break;\n\n case 2:\n for (i = 0; i < coords.length; i++) {\n transform(coords[i], this);\n }\n break;\n\n case 3:\n coords = classifyRings(coords);\n for (i = 0; i < coords.length; i++) {\n for (j = 0; j < coords[i].length; j++) {\n transform(coords[i][j], this);\n }\n }\n break;\n }\n\n if (coords.length === 1) {\n coords = coords[0];\n } else {\n type = `Multi${type}`;\n }\n\n const result: MvtMapboxCoordinates = {\n type: 'Feature',\n geometry: {\n type,\n coordinates: coords\n },\n properties: this.properties\n };\n\n if (this.id !== null) {\n result.id = this.id;\n }\n\n return result;\n }\n\n toGeoJSON(\n options: {x: number; y: number; z: number} | ((data: number[], feature: {extent: any}) => void)\n ): MvtMapboxCoordinates {\n if (typeof options === 'function') {\n return this._toGeoJSON(options);\n }\n const {x, y, z} = options;\n const size = this.extent * Math.pow(2, z);\n const x0 = this.extent * x;\n const y0 = this.extent * y;\n\n function project(line: number[]) {\n for (let j = 0; j < line.length; j++) {\n const p = line[j];\n p[0] = ((p[0] + x0) * 360) / size - 180;\n const y2 = 180 - ((p[1] + y0) * 360) / size;\n p[1] = (360 / Math.PI) * Math.atan(Math.exp((y2 * Math.PI) / 180)) - 90;\n }\n }\n return this._toGeoJSON(project);\n }\n}\n"],"file":"vector-tile-feature.js"}
|
|
@@ -7,17 +7,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
11
|
|
|
16
12
|
var _vectorTileFeature = _interopRequireDefault(require("./vector-tile-feature"));
|
|
17
13
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
(0, _classCallCheck2.default)(this, VectorTileLayer);
|
|
14
|
+
class VectorTileLayer {
|
|
15
|
+
constructor(pbf, end) {
|
|
21
16
|
(0, _defineProperty2.default)(this, "version", void 0);
|
|
22
17
|
(0, _defineProperty2.default)(this, "name", void 0);
|
|
23
18
|
(0, _defineProperty2.default)(this, "extent", void 0);
|
|
@@ -38,22 +33,19 @@ var VectorTileLayer = function () {
|
|
|
38
33
|
this.length = this._features.length;
|
|
39
34
|
}
|
|
40
35
|
|
|
41
|
-
(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
throw new Error('feature index out of bounds');
|
|
46
|
-
}
|
|
36
|
+
feature(i) {
|
|
37
|
+
if (i < 0 || i >= this._features.length) {
|
|
38
|
+
throw new Error('feature index out of bounds');
|
|
39
|
+
}
|
|
47
40
|
|
|
48
|
-
|
|
41
|
+
this._pbf.pos = this._features[i];
|
|
49
42
|
|
|
50
|
-
|
|
43
|
+
const end = this._pbf.readVarint() + this._pbf.pos;
|
|
51
44
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}();
|
|
45
|
+
return new _vectorTileFeature.default(this._pbf, end, this.extent, this._keys, this._values);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
}
|
|
57
49
|
|
|
58
50
|
exports.default = VectorTileLayer;
|
|
59
51
|
|
|
@@ -64,11 +56,11 @@ function readLayer(tag, layer, pbf) {
|
|
|
64
56
|
}
|
|
65
57
|
|
|
66
58
|
function readValueMessage(pbf) {
|
|
67
|
-
|
|
68
|
-
|
|
59
|
+
let value = null;
|
|
60
|
+
const end = pbf.readVarint() + pbf.pos;
|
|
69
61
|
|
|
70
62
|
while (pbf.pos < end) {
|
|
71
|
-
|
|
63
|
+
const tag = pbf.readVarint() >> 3;
|
|
72
64
|
value = tag === 1 ? pbf.readString() : tag === 2 ? pbf.readFloat() : tag === 3 ? pbf.readDouble() : tag === 4 ? pbf.readVarint64() : tag === 5 ? pbf.readVarint() : tag === 6 ? pbf.readSVarint() : tag === 7 ? pbf.readBoolean() : null;
|
|
73
65
|
}
|
|
74
66
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/mapbox-vector-tile/vector-tile-layer.ts"],"names":["VectorTileLayer","pbf","end","version","name","extent","length","_pbf","_keys","_values","_features","readFields","readLayer","i","Error","pos","readVarint","VectorTileFeature","tag","layer","readString","push","readValueMessage","value","readFloat","readDouble","readVarint64","readSVarint","readBoolean"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/mapbox-vector-tile/vector-tile-layer.ts"],"names":["VectorTileLayer","constructor","pbf","end","version","name","extent","length","_pbf","_keys","_values","_features","readFields","readLayer","feature","i","Error","pos","readVarint","VectorTileFeature","tag","layer","readString","push","readValueMessage","value","readFloat","readDouble","readVarint64","readSVarint","readBoolean"],"mappings":"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","sourcesContent":["/* eslint-disable indent */\n// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport Protobuf from 'pbf';\nimport VectorTileFeature from './vector-tile-feature';\n\nexport default class VectorTileLayer {\n version: number;\n name: string;\n extent: number;\n length: number;\n _pbf: Protobuf;\n _keys: string[];\n _values: (string | number | boolean | null)[];\n _features: number[];\n constructor(pbf: Protobuf, end: number) {\n // Public\n this.version = 1;\n this.name = '';\n this.extent = 4096;\n this.length = 0;\n\n // Private\n this._pbf = pbf;\n this._keys = [];\n this._values = [];\n this._features = [];\n\n pbf.readFields(readLayer, this, end);\n\n this.length = this._features.length;\n }\n\n /**\n * return feature `i` from this layer as a `VectorTileFeature`\n * @param index\n * @returns feature\n */\n\n feature(i: number): VectorTileFeature {\n if (i < 0 || i >= this._features.length) {\n throw new Error('feature index out of bounds');\n }\n\n this._pbf.pos = this._features[i];\n\n const end = this._pbf.readVarint() + this._pbf.pos;\n return new VectorTileFeature(this._pbf, end, this.extent, this._keys, this._values);\n }\n}\n\n/**\n *\n * @param tag\n * @param layer\n * @param pbf\n */\nfunction readLayer(tag: number, layer?: VectorTileLayer, pbf?: Protobuf): void {\n if (layer && pbf) {\n if (tag === 15) layer.version = pbf.readVarint();\n else if (tag === 1) layer.name = pbf.readString();\n else if (tag === 5) layer.extent = pbf.readVarint();\n else if (tag === 2) layer._features.push(pbf.pos);\n else if (tag === 3) layer._keys.push(pbf.readString());\n else if (tag === 4) layer._values.push(readValueMessage(pbf));\n }\n}\n\n/**\n *\n * @param pbf\n * @returns value\n */\nfunction readValueMessage(pbf: Protobuf) {\n let value: string | number | boolean | null = null;\n const end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n const tag = pbf.readVarint() >> 3;\n\n value =\n tag === 1\n ? pbf.readString()\n : tag === 2\n ? pbf.readFloat()\n : tag === 3\n ? pbf.readDouble()\n : tag === 4\n ? pbf.readVarint64()\n : tag === 5\n ? pbf.readVarint()\n : tag === 6\n ? pbf.readSVarint()\n : tag === 7\n ? pbf.readBoolean()\n : null;\n }\n\n return value;\n}\n"],"file":"vector-tile-layer.js"}
|
|
@@ -7,24 +7,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
11
|
|
|
14
12
|
var _vectorTileLayer = _interopRequireDefault(require("./vector-tile-layer"));
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
14
|
+
class VectorTile {
|
|
15
|
+
constructor(pbf, end) {
|
|
16
|
+
(0, _defineProperty2.default)(this, "layers", void 0);
|
|
17
|
+
this.layers = pbf.readFields(readTile, {}, end);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
}
|
|
21
21
|
|
|
22
22
|
exports.default = VectorTile;
|
|
23
23
|
|
|
24
24
|
function readTile(tag, layers, pbf) {
|
|
25
25
|
if (tag === 3) {
|
|
26
26
|
if (pbf) {
|
|
27
|
-
|
|
27
|
+
const layer = new _vectorTileLayer.default(pbf, pbf.readVarint() + pbf.pos);
|
|
28
28
|
|
|
29
29
|
if (layer.length && layers) {
|
|
30
30
|
layers[layer.name] = layer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/mapbox-vector-tile/vector-tile.ts"],"names":["VectorTile","pbf","end","layers","readFields","readTile","tag","layer","VectorTileLayer","readVarint","pos","length","name"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/mapbox-vector-tile/vector-tile.ts"],"names":["VectorTile","constructor","pbf","end","layers","readFields","readTile","tag","layer","VectorTileLayer","readVarint","pos","length","name"],"mappings":";;;;;;;;;;;AAEA;;AAGe,MAAMA,UAAN,CAAiB;AAE9BC,EAAAA,WAAW,CAACC,GAAD,EAAgBC,GAAhB,EAA8B;AAAA;AACvC,SAAKC,MAAL,GAAcF,GAAG,CAACG,UAAJ,CAAeC,QAAf,EAAyB,EAAzB,EAA6BH,GAA7B,CAAd;AACD;;AAJ6B;;;;AAahC,SAASG,QAAT,CAAkBC,GAAlB,EAA+BH,MAA/B,EAAwEF,GAAxE,EAA8F;AAC5F,MAAIK,GAAG,KAAK,CAAZ,EAAe;AACb,QAAIL,GAAJ,EAAS;AACP,YAAMM,KAAK,GAAG,IAAIC,wBAAJ,CAAoBP,GAApB,EAAyBA,GAAG,CAACQ,UAAJ,KAAmBR,GAAG,CAACS,GAAhD,CAAd;;AACA,UAAIH,KAAK,CAACI,MAAN,IAAgBR,MAApB,EAA4B;AAC1BA,QAAAA,MAAM,CAACI,KAAK,CAACK,IAAP,CAAN,GAAqBL,KAArB;AACD;AACF;AACF;AACF","sourcesContent":["// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport VectorTileLayer from './vector-tile-layer';\nimport Protobuf from 'pbf';\n\nexport default class VectorTile {\n layers: {[x: string]: VectorTileLayer};\n constructor(pbf: Protobuf, end?: number) {\n this.layers = pbf.readFields(readTile, {}, end);\n }\n}\n\n/**\n *\n * @param tag\n * @param layers\n * @param pbf\n */\nfunction readTile(tag: number, layers?: {[x: string]: VectorTileLayer}, pbf?: Protobuf): void {\n if (tag === 3) {\n if (pbf) {\n const layer = new VectorTileLayer(pbf, pbf.readVarint() + pbf.pos);\n if (layer.length && layers) {\n layers[layer.name] = layer;\n }\n }\n }\n}\n"],"file":"vector-tile.js"}
|