@loaders.gl/mvt 3.1.3 → 4.0.0-alpha.5
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.js +2 -2
- package/dist/bundle.js.map +1 -0
- package/dist/helpers/binary-util-functions.js +77 -111
- package/dist/helpers/binary-util-functions.js.map +1 -0
- package/dist/helpers/mapbox-util-functions.js +45 -78
- package/dist/helpers/mapbox-util-functions.js.map +1 -0
- package/dist/index.js +2 -6
- package/dist/index.js.map +1 -0
- package/dist/{es5/lib → lib}/binary-vector-tile/LICENSE.txt +0 -0
- package/dist/lib/binary-vector-tile/vector-tile-feature.js +143 -138
- package/dist/lib/binary-vector-tile/vector-tile-feature.js.map +1 -0
- package/dist/lib/binary-vector-tile/vector-tile-layer.js +58 -85
- package/dist/lib/binary-vector-tile/vector-tile-layer.js.map +1 -0
- package/dist/lib/binary-vector-tile/vector-tile.js +19 -25
- package/dist/lib/binary-vector-tile/vector-tile.js.map +1 -0
- package/dist/{es5/lib → lib}/mapbox-vector-tile/LICENSE.txt +0 -0
- package/dist/lib/mapbox-vector-tile/vector-tile-feature.js +193 -161
- package/dist/lib/mapbox-vector-tile/vector-tile-feature.js.map +1 -0
- package/dist/lib/mapbox-vector-tile/vector-tile-layer.js +58 -83
- package/dist/lib/mapbox-vector-tile/vector-tile-layer.js.map +1 -0
- package/dist/lib/mapbox-vector-tile/vector-tile.js +19 -25
- package/dist/lib/mapbox-vector-tile/vector-tile.js.map +1 -0
- package/dist/lib/parse-mvt.js +101 -127
- package/dist/lib/parse-mvt.js.map +1 -0
- package/dist/lib/types.js +2 -2
- package/dist/{es5/lib → lib}/types.js.map +0 -0
- package/dist/mvt-loader.js +23 -42
- package/dist/mvt-loader.js.map +1 -0
- package/dist/mvt-worker.js +1 -1
- package/dist/workers/mvt-worker.js +4 -5
- package/dist/workers/mvt-worker.js.map +1 -0
- package/package.json +8 -8
- package/dist/es5/bundle.js +0 -7
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/helpers/binary-util-functions.js +0 -98
- package/dist/es5/helpers/binary-util-functions.js.map +0 -1
- package/dist/es5/helpers/mapbox-util-functions.js +0 -62
- package/dist/es5/helpers/mapbox-util-functions.js.map +0 -1
- package/dist/es5/index.js +0 -20
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/lib/binary-vector-tile/vector-tile-feature.js +0 -191
- package/dist/es5/lib/binary-vector-tile/vector-tile-feature.js.map +0 -1
- package/dist/es5/lib/binary-vector-tile/vector-tile-layer.js +0 -77
- package/dist/es5/lib/binary-vector-tile/vector-tile-layer.js.map +0 -1
- package/dist/es5/lib/binary-vector-tile/vector-tile.js +0 -35
- package/dist/es5/lib/binary-vector-tile/vector-tile.js.map +0 -1
- package/dist/es5/lib/mapbox-vector-tile/vector-tile-feature.js +0 -217
- package/dist/es5/lib/mapbox-vector-tile/vector-tile-feature.js.map +0 -1
- package/dist/es5/lib/mapbox-vector-tile/vector-tile-layer.js +0 -77
- package/dist/es5/lib/mapbox-vector-tile/vector-tile-layer.js.map +0 -1
- package/dist/es5/lib/mapbox-vector-tile/vector-tile.js +0 -35
- package/dist/es5/lib/mapbox-vector-tile/vector-tile.js.map +0 -1
- package/dist/es5/lib/parse-mvt.js +0 -132
- package/dist/es5/lib/parse-mvt.js.map +0 -1
- package/dist/es5/lib/types.js +0 -2
- package/dist/es5/mvt-loader.js +0 -71
- package/dist/es5/mvt-loader.js.map +0 -1
- package/dist/es5/workers/mvt-worker.js +0 -8
- package/dist/es5/workers/mvt-worker.js.map +0 -1
- package/dist/esm/bundle.js +0 -5
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/helpers/binary-util-functions.js +0 -84
- package/dist/esm/helpers/binary-util-functions.js.map +0 -1
- package/dist/esm/helpers/mapbox-util-functions.js +0 -49
- package/dist/esm/helpers/mapbox-util-functions.js.map +0 -1
- package/dist/esm/index.js +0 -2
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/lib/binary-vector-tile/LICENSE.txt +0 -31
- package/dist/esm/lib/binary-vector-tile/vector-tile-feature.js +0 -157
- package/dist/esm/lib/binary-vector-tile/vector-tile-feature.js.map +0 -1
- package/dist/esm/lib/binary-vector-tile/vector-tile-layer.js +0 -64
- package/dist/esm/lib/binary-vector-tile/vector-tile-layer.js.map +0 -1
- package/dist/esm/lib/binary-vector-tile/vector-tile.js +0 -23
- package/dist/esm/lib/binary-vector-tile/vector-tile.js.map +0 -1
- package/dist/esm/lib/mapbox-vector-tile/LICENSE.txt +0 -31
- package/dist/esm/lib/mapbox-vector-tile/vector-tile-feature.js +0 -202
- package/dist/esm/lib/mapbox-vector-tile/vector-tile-feature.js.map +0 -1
- package/dist/esm/lib/mapbox-vector-tile/vector-tile-layer.js +0 -64
- package/dist/esm/lib/mapbox-vector-tile/vector-tile-layer.js.map +0 -1
- package/dist/esm/lib/mapbox-vector-tile/vector-tile.js +0 -23
- package/dist/esm/lib/mapbox-vector-tile/vector-tile.js.map +0 -1
- package/dist/esm/lib/parse-mvt.js +0 -117
- package/dist/esm/lib/parse-mvt.js.map +0 -1
- package/dist/esm/lib/types.js +0 -2
- package/dist/esm/lib/types.js.map +0 -1
- package/dist/esm/mvt-loader.js +0 -26
- package/dist/esm/mvt-loader.js.map +0 -1
- package/dist/esm/workers/mvt-worker.js +0 -4
- package/dist/esm/workers/mvt-worker.js.map +0 -1
|
@@ -1,170 +1,202 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import { readFeature, classifyRings } from '../../helpers/mapbox-util-functions';
|
|
3
|
+
export default class VectorTileFeature {
|
|
4
|
+
static get types() {
|
|
5
|
+
return ['Unknown', 'Point', 'LineString', 'Polygon'];
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
constructor(pbf, end, extent, keys, values) {
|
|
9
|
+
_defineProperty(this, "properties", void 0);
|
|
10
|
+
|
|
11
|
+
_defineProperty(this, "extent", void 0);
|
|
12
|
+
|
|
13
|
+
_defineProperty(this, "type", void 0);
|
|
14
|
+
|
|
15
|
+
_defineProperty(this, "id", void 0);
|
|
16
|
+
|
|
17
|
+
_defineProperty(this, "_pbf", void 0);
|
|
18
|
+
|
|
19
|
+
_defineProperty(this, "_geometry", void 0);
|
|
20
|
+
|
|
21
|
+
_defineProperty(this, "_keys", void 0);
|
|
22
|
+
|
|
23
|
+
_defineProperty(this, "_values", void 0);
|
|
24
|
+
|
|
25
|
+
this.properties = {};
|
|
26
|
+
this.extent = extent;
|
|
27
|
+
this.type = 0;
|
|
28
|
+
this.id = null;
|
|
29
|
+
this._pbf = pbf;
|
|
30
|
+
this._geometry = -1;
|
|
31
|
+
this._keys = keys;
|
|
32
|
+
this._values = values;
|
|
33
|
+
pbf.readFields(readFeature, this, end);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
loadGeometry() {
|
|
37
|
+
const pbf = this._pbf;
|
|
38
|
+
pbf.pos = this._geometry;
|
|
39
|
+
const end = pbf.readVarint() + pbf.pos;
|
|
40
|
+
let cmd = 1;
|
|
41
|
+
let length = 0;
|
|
42
|
+
let x = 0;
|
|
43
|
+
let y = 0;
|
|
44
|
+
const lines = [];
|
|
45
|
+
let line;
|
|
46
|
+
|
|
47
|
+
while (pbf.pos < end) {
|
|
48
|
+
if (length <= 0) {
|
|
49
|
+
const cmdLen = pbf.readVarint();
|
|
50
|
+
cmd = cmdLen & 0x7;
|
|
51
|
+
length = cmdLen >> 3;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
length--;
|
|
55
|
+
|
|
56
|
+
if (cmd === 1 || cmd === 2) {
|
|
57
|
+
x += pbf.readSVarint();
|
|
58
|
+
y += pbf.readSVarint();
|
|
59
|
+
|
|
60
|
+
if (cmd === 1) {
|
|
61
|
+
if (line) lines.push(line);
|
|
62
|
+
line = [];
|
|
60
63
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
bbox() {
|
|
67
|
-
const pbf = this._pbf;
|
|
68
|
-
pbf.pos = this._geometry;
|
|
69
|
-
const end = pbf.readVarint() + pbf.pos;
|
|
70
|
-
let cmd = 1;
|
|
71
|
-
let length = 0;
|
|
72
|
-
let x = 0;
|
|
73
|
-
let y = 0;
|
|
74
|
-
let x1 = Infinity;
|
|
75
|
-
let x2 = -Infinity;
|
|
76
|
-
let y1 = Infinity;
|
|
77
|
-
let y2 = -Infinity;
|
|
78
|
-
while (pbf.pos < end) {
|
|
79
|
-
if (length <= 0) {
|
|
80
|
-
const cmdLen = pbf.readVarint();
|
|
81
|
-
cmd = cmdLen & 0x7;
|
|
82
|
-
length = cmdLen >> 3;
|
|
83
|
-
}
|
|
84
|
-
length--;
|
|
85
|
-
if (cmd === 1 || cmd === 2) {
|
|
86
|
-
x += pbf.readSVarint();
|
|
87
|
-
y += pbf.readSVarint();
|
|
88
|
-
if (x < x1)
|
|
89
|
-
x1 = x;
|
|
90
|
-
if (x > x2)
|
|
91
|
-
x2 = x;
|
|
92
|
-
if (y < y1)
|
|
93
|
-
y1 = y;
|
|
94
|
-
if (y > y2)
|
|
95
|
-
y2 = y;
|
|
96
|
-
}
|
|
97
|
-
else if (cmd !== 7) {
|
|
98
|
-
throw new Error(`unknown command ${cmd}`);
|
|
99
|
-
}
|
|
64
|
+
|
|
65
|
+
if (line) line.push([x, y]);
|
|
66
|
+
} else if (cmd === 7) {
|
|
67
|
+
if (line) {
|
|
68
|
+
line.push(line[0].slice());
|
|
100
69
|
}
|
|
101
|
-
|
|
70
|
+
} else {
|
|
71
|
+
throw new Error("unknown command ".concat(cmd));
|
|
72
|
+
}
|
|
102
73
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
74
|
+
|
|
75
|
+
if (line) lines.push(line);
|
|
76
|
+
return lines;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
bbox() {
|
|
80
|
+
const pbf = this._pbf;
|
|
81
|
+
pbf.pos = this._geometry;
|
|
82
|
+
const end = pbf.readVarint() + pbf.pos;
|
|
83
|
+
let cmd = 1;
|
|
84
|
+
let length = 0;
|
|
85
|
+
let x = 0;
|
|
86
|
+
let y = 0;
|
|
87
|
+
let x1 = Infinity;
|
|
88
|
+
let x2 = -Infinity;
|
|
89
|
+
let y1 = Infinity;
|
|
90
|
+
let y2 = -Infinity;
|
|
91
|
+
|
|
92
|
+
while (pbf.pos < end) {
|
|
93
|
+
if (length <= 0) {
|
|
94
|
+
const cmdLen = pbf.readVarint();
|
|
95
|
+
cmd = cmdLen & 0x7;
|
|
96
|
+
length = cmdLen >> 3;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
length--;
|
|
100
|
+
|
|
101
|
+
if (cmd === 1 || cmd === 2) {
|
|
102
|
+
x += pbf.readSVarint();
|
|
103
|
+
y += pbf.readSVarint();
|
|
104
|
+
if (x < x1) x1 = x;
|
|
105
|
+
if (x > x2) x2 = x;
|
|
106
|
+
if (y < y1) y1 = y;
|
|
107
|
+
if (y > y2) y2 = y;
|
|
108
|
+
} else if (cmd !== 7) {
|
|
109
|
+
throw new Error("unknown command ".concat(cmd));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return [x1, y1, x2, y2];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
_toGeoJSON(transform) {
|
|
117
|
+
let coords = this.loadGeometry();
|
|
118
|
+
let type = VectorTileFeature.types[this.type];
|
|
119
|
+
let i;
|
|
120
|
+
let j;
|
|
121
|
+
|
|
122
|
+
switch (this.type) {
|
|
123
|
+
case 1:
|
|
124
|
+
const points = [];
|
|
125
|
+
|
|
126
|
+
for (i = 0; i < coords.length; i++) {
|
|
127
|
+
points[i] = coords[i][0];
|
|
134
128
|
}
|
|
135
|
-
|
|
136
|
-
|
|
129
|
+
|
|
130
|
+
coords = points;
|
|
131
|
+
transform(coords, this);
|
|
132
|
+
break;
|
|
133
|
+
|
|
134
|
+
case 2:
|
|
135
|
+
for (i = 0; i < coords.length; i++) {
|
|
136
|
+
transform(coords[i], this);
|
|
137
137
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
138
|
+
|
|
139
|
+
break;
|
|
140
|
+
|
|
141
|
+
case 3:
|
|
142
|
+
coords = classifyRings(coords);
|
|
143
|
+
|
|
144
|
+
for (i = 0; i < coords.length; i++) {
|
|
145
|
+
for (j = 0; j < coords[i].length; j++) {
|
|
146
|
+
transform(coords[i][j], this);
|
|
147
|
+
}
|
|
148
148
|
}
|
|
149
|
-
|
|
149
|
+
|
|
150
|
+
break;
|
|
150
151
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
152
|
+
|
|
153
|
+
if (coords.length === 1) {
|
|
154
|
+
coords = coords[0];
|
|
155
|
+
} else {
|
|
156
|
+
type = "Multi".concat(type);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const result = {
|
|
160
|
+
type: 'Feature',
|
|
161
|
+
geometry: {
|
|
162
|
+
type,
|
|
163
|
+
coordinates: coords
|
|
164
|
+
},
|
|
165
|
+
properties: this.properties
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
if (this.id !== null) {
|
|
169
|
+
result.id = this.id;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return result;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
toGeoJSON(options) {
|
|
176
|
+
if (typeof options === 'function') {
|
|
177
|
+
return this._toGeoJSON(options);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
const {
|
|
181
|
+
x,
|
|
182
|
+
y,
|
|
183
|
+
z
|
|
184
|
+
} = options;
|
|
185
|
+
const size = this.extent * Math.pow(2, z);
|
|
186
|
+
const x0 = this.extent * x;
|
|
187
|
+
const y0 = this.extent * y;
|
|
188
|
+
|
|
189
|
+
function project(line) {
|
|
190
|
+
for (let j = 0; j < line.length; j++) {
|
|
191
|
+
const p = line[j];
|
|
192
|
+
p[0] = (p[0] + x0) * 360 / size - 180;
|
|
193
|
+
const y2 = 180 - (p[1] + y0) * 360 / size;
|
|
194
|
+
p[1] = 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90;
|
|
195
|
+
}
|
|
168
196
|
}
|
|
197
|
+
|
|
198
|
+
return this._toGeoJSON(project);
|
|
199
|
+
}
|
|
200
|
+
|
|
169
201
|
}
|
|
170
|
-
|
|
202
|
+
//# sourceMappingURL=vector-tile-feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/mapbox-vector-tile/vector-tile-feature.ts"],"names":["readFeature","classifyRings","VectorTileFeature","types","constructor","pbf","end","extent","keys","values","properties","type","id","_pbf","_geometry","_keys","_values","readFields","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":";AAGA,SAAQA,WAAR,EAAqBC,aAArB,QAAyC,qCAAzC;AAEA,eAAe,MAAMC,iBAAN,CAAwB;AASrB,aAALC,KAAK,GAAG;AACjB,WAAO,CAAC,SAAD,EAAY,OAAZ,EAAqB,YAArB,EAAmC,SAAnC,CAAP;AACD;;AAEDC,EAAAA,WAAW,CACTC,GADS,EAETC,GAFS,EAGTC,MAHS,EAITC,IAJS,EAKTC,MALS,EAMT;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAEA,SAAKC,UAAL,GAAkB,EAAlB;AACA,SAAKH,MAAL,GAAcA,MAAd;AACA,SAAKI,IAAL,GAAY,CAAZ;AACA,SAAKC,EAAL,GAAU,IAAV;AAGA,SAAKC,IAAL,GAAYR,GAAZ;AACA,SAAKS,SAAL,GAAiB,CAAC,CAAlB;AACA,SAAKC,KAAL,GAAaP,IAAb;AACA,SAAKQ,OAAL,GAAeP,MAAf;AAEAJ,IAAAA,GAAG,CAACY,UAAJ,CAAejB,WAAf,EAA4B,IAA5B,EAAkCM,GAAlC;AACD;;AAGDY,EAAAA,YAAY,GAAsB;AAChC,UAAMb,GAAG,GAAG,KAAKQ,IAAjB;AACAR,IAAAA,GAAG,CAACc,GAAJ,GAAU,KAAKL,SAAf;AAEA,UAAMR,GAAG,GAAGD,GAAG,CAACe,UAAJ,KAAmBf,GAAG,CAACc,GAAnC;AACA,QAAIE,GAAG,GAAG,CAAV;AACA,QAAIC,MAAM,GAAG,CAAb;AACA,QAAIC,CAAC,GAAG,CAAR;AACA,QAAIC,CAAC,GAAG,CAAR;AACA,UAAMC,KAAmB,GAAG,EAA5B;AACA,QAAIC,IAAJ;;AAEA,WAAOrB,GAAG,CAACc,GAAJ,GAAUb,GAAjB,EAAsB;AACpB,UAAIgB,MAAM,IAAI,CAAd,EAAiB;AACf,cAAMK,MAAM,GAAGtB,GAAG,CAACe,UAAJ,EAAf;AACAC,QAAAA,GAAG,GAAGM,MAAM,GAAG,GAAf;AACAL,QAAAA,MAAM,GAAGK,MAAM,IAAI,CAAnB;AACD;;AAEDL,MAAAA,MAAM;;AAEN,UAAID,GAAG,KAAK,CAAR,IAAaA,GAAG,KAAK,CAAzB,EAA4B;AAC1BE,QAAAA,CAAC,IAAIlB,GAAG,CAACuB,WAAJ,EAAL;AACAJ,QAAAA,CAAC,IAAInB,GAAG,CAACuB,WAAJ,EAAL;;AAEA,YAAIP,GAAG,KAAK,CAAZ,EAAe;AAEb,cAAIK,IAAJ,EAAUD,KAAK,CAACI,IAAN,CAAWH,IAAX;AACVA,UAAAA,IAAI,GAAG,EAAP;AACD;;AACD,YAAIA,IAAJ,EAAUA,IAAI,CAACG,IAAL,CAAU,CAACN,CAAD,EAAIC,CAAJ,CAAV;AACX,OAVD,MAUO,IAAIH,GAAG,KAAK,CAAZ,EAAe;AAEpB,YAAIK,IAAJ,EAAU;AACRA,UAAAA,IAAI,CAACG,IAAL,CAAUH,IAAI,CAAC,CAAD,CAAJ,CAAQI,KAAR,EAAV;AACD;AACF,OALM,MAKA;AACL,cAAM,IAAIC,KAAJ,2BAA6BV,GAA7B,EAAN;AACD;AACF;;AAED,QAAIK,IAAJ,EAAUD,KAAK,CAACI,IAAN,CAAWH,IAAX;AAEV,WAAOD,KAAP;AACD;;AAGDO,EAAAA,IAAI,GAAG;AACL,UAAM3B,GAAG,GAAG,KAAKQ,IAAjB;AACAR,IAAAA,GAAG,CAACc,GAAJ,GAAU,KAAKL,SAAf;AAEA,UAAMR,GAAG,GAAGD,GAAG,CAACe,UAAJ,KAAmBf,GAAG,CAACc,GAAnC;AACA,QAAIE,GAAG,GAAG,CAAV;AACA,QAAIC,MAAM,GAAG,CAAb;AACA,QAAIC,CAAC,GAAG,CAAR;AACA,QAAIC,CAAC,GAAG,CAAR;AACA,QAAIS,EAAE,GAAGC,QAAT;AACA,QAAIC,EAAE,GAAG,CAACD,QAAV;AACA,QAAIE,EAAE,GAAGF,QAAT;AACA,QAAIG,EAAE,GAAG,CAACH,QAAV;;AAEA,WAAO7B,GAAG,CAACc,GAAJ,GAAUb,GAAjB,EAAsB;AACpB,UAAIgB,MAAM,IAAI,CAAd,EAAiB;AACf,cAAMK,MAAM,GAAGtB,GAAG,CAACe,UAAJ,EAAf;AACAC,QAAAA,GAAG,GAAGM,MAAM,GAAG,GAAf;AACAL,QAAAA,MAAM,GAAGK,MAAM,IAAI,CAAnB;AACD;;AAEDL,MAAAA,MAAM;;AAEN,UAAID,GAAG,KAAK,CAAR,IAAaA,GAAG,KAAK,CAAzB,EAA4B;AAC1BE,QAAAA,CAAC,IAAIlB,GAAG,CAACuB,WAAJ,EAAL;AACAJ,QAAAA,CAAC,IAAInB,GAAG,CAACuB,WAAJ,EAAL;AACA,YAAIL,CAAC,GAAGU,EAAR,EAAYA,EAAE,GAAGV,CAAL;AACZ,YAAIA,CAAC,GAAGY,EAAR,EAAYA,EAAE,GAAGZ,CAAL;AACZ,YAAIC,CAAC,GAAGY,EAAR,EAAYA,EAAE,GAAGZ,CAAL;AACZ,YAAIA,CAAC,GAAGa,EAAR,EAAYA,EAAE,GAAGb,CAAL;AACb,OAPD,MAOO,IAAIH,GAAG,KAAK,CAAZ,EAAe;AACpB,cAAM,IAAIU,KAAJ,2BAA6BV,GAA7B,EAAN;AACD;AACF;;AAED,WAAO,CAACY,EAAD,EAAKG,EAAL,EAASD,EAAT,EAAaE,EAAb,CAAP;AACD;;AAEDC,EAAAA,UAAU,CAACC,SAAD,EAAY;AACpB,QAAIC,MAAM,GAAG,KAAKtB,YAAL,EAAb;AACA,QAAIP,IAAI,GAAGT,iBAAiB,CAACC,KAAlB,CAAwB,KAAKQ,IAA7B,CAAX;AACA,QAAI8B,CAAJ;AACA,QAAIC,CAAJ;;AAGA,YAAQ,KAAK/B,IAAb;AACE,WAAK,CAAL;AACE,cAAMgC,MAAgB,GAAG,EAAzB;;AACA,aAAKF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGD,MAAM,CAAClB,MAAvB,EAA+BmB,CAAC,EAAhC,EAAoC;AAClCE,UAAAA,MAAM,CAACF,CAAD,CAAN,GAAYD,MAAM,CAACC,CAAD,CAAN,CAAU,CAAV,CAAZ;AACD;;AACDD,QAAAA,MAAM,GAAGG,MAAT;AACAJ,QAAAA,SAAS,CAACC,MAAD,EAAS,IAAT,CAAT;AACA;;AAEF,WAAK,CAAL;AACE,aAAKC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGD,MAAM,CAAClB,MAAvB,EAA+BmB,CAAC,EAAhC,EAAoC;AAClCF,UAAAA,SAAS,CAACC,MAAM,CAACC,CAAD,CAAP,EAAY,IAAZ,CAAT;AACD;;AACD;;AAEF,WAAK,CAAL;AACED,QAAAA,MAAM,GAAGvC,aAAa,CAACuC,MAAD,CAAtB;;AACA,aAAKC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGD,MAAM,CAAClB,MAAvB,EAA+BmB,CAAC,EAAhC,EAAoC;AAClC,eAAKC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGF,MAAM,CAACC,CAAD,CAAN,CAAUnB,MAA1B,EAAkCoB,CAAC,EAAnC,EAAuC;AACrCH,YAAAA,SAAS,CAACC,MAAM,CAACC,CAAD,CAAN,CAAUC,CAAV,CAAD,EAAe,IAAf,CAAT;AACD;AACF;;AACD;AAvBJ;;AA0BA,QAAIF,MAAM,CAAClB,MAAP,KAAkB,CAAtB,EAAyB;AACvBkB,MAAAA,MAAM,GAAGA,MAAM,CAAC,CAAD,CAAf;AACD,KAFD,MAEO;AACL7B,MAAAA,IAAI,kBAAWA,IAAX,CAAJ;AACD;;AAED,UAAMiC,MAA4B,GAAG;AACnCjC,MAAAA,IAAI,EAAE,SAD6B;AAEnCkC,MAAAA,QAAQ,EAAE;AACRlC,QAAAA,IADQ;AAERmC,QAAAA,WAAW,EAAEN;AAFL,OAFyB;AAMnC9B,MAAAA,UAAU,EAAE,KAAKA;AANkB,KAArC;;AASA,QAAI,KAAKE,EAAL,KAAY,IAAhB,EAAsB;AACpBgC,MAAAA,MAAM,CAAChC,EAAP,GAAY,KAAKA,EAAjB;AACD;;AAED,WAAOgC,MAAP;AACD;;AAEDG,EAAAA,SAAS,CACPC,OADO,EAEe;AACtB,QAAI,OAAOA,OAAP,KAAmB,UAAvB,EAAmC;AACjC,aAAO,KAAKV,UAAL,CAAgBU,OAAhB,CAAP;AACD;;AACD,UAAM;AAACzB,MAAAA,CAAD;AAAIC,MAAAA,CAAJ;AAAOyB,MAAAA;AAAP,QAAYD,OAAlB;AACA,UAAME,IAAI,GAAG,KAAK3C,MAAL,GAAc4C,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYH,CAAZ,CAA3B;AACA,UAAMI,EAAE,GAAG,KAAK9C,MAAL,GAAcgB,CAAzB;AACA,UAAM+B,EAAE,GAAG,KAAK/C,MAAL,GAAciB,CAAzB;;AAEA,aAAS+B,OAAT,CAAiB7B,IAAjB,EAAiC;AAC/B,WAAK,IAAIgB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGhB,IAAI,CAACJ,MAAzB,EAAiCoB,CAAC,EAAlC,EAAsC;AACpC,cAAMc,CAAC,GAAG9B,IAAI,CAACgB,CAAD,CAAd;AACAc,QAAAA,CAAC,CAAC,CAAD,CAAD,GAAQ,CAACA,CAAC,CAAC,CAAD,CAAD,GAAOH,EAAR,IAAc,GAAf,GAAsBH,IAAtB,GAA6B,GAApC;AACA,cAAMb,EAAE,GAAG,MAAO,CAACmB,CAAC,CAAC,CAAD,CAAD,GAAOF,EAAR,IAAc,GAAf,GAAsBJ,IAAvC;AACAM,QAAAA,CAAC,CAAC,CAAD,CAAD,GAAQ,MAAML,IAAI,CAACM,EAAZ,GAAkBN,IAAI,CAACO,IAAL,CAAUP,IAAI,CAACQ,GAAL,CAAUtB,EAAE,GAAGc,IAAI,CAACM,EAAX,GAAiB,GAA1B,CAAV,CAAlB,GAA8D,EAArE;AACD;AACF;;AACD,WAAO,KAAKnB,UAAL,CAAgBiB,OAAhB,CAAP;AACD;;AApMoC","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,89 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import VectorTileFeature from './vector-tile-feature';
|
|
3
|
+
export default class VectorTileLayer {
|
|
4
|
+
constructor(pbf, end) {
|
|
5
|
+
_defineProperty(this, "version", void 0);
|
|
6
|
+
|
|
7
|
+
_defineProperty(this, "name", void 0);
|
|
8
|
+
|
|
9
|
+
_defineProperty(this, "extent", void 0);
|
|
10
|
+
|
|
11
|
+
_defineProperty(this, "length", void 0);
|
|
12
|
+
|
|
13
|
+
_defineProperty(this, "_pbf", void 0);
|
|
14
|
+
|
|
15
|
+
_defineProperty(this, "_keys", void 0);
|
|
16
|
+
|
|
17
|
+
_defineProperty(this, "_values", void 0);
|
|
18
|
+
|
|
19
|
+
_defineProperty(this, "_features", void 0);
|
|
20
|
+
|
|
21
|
+
this.version = 1;
|
|
22
|
+
this.name = '';
|
|
23
|
+
this.extent = 4096;
|
|
24
|
+
this.length = 0;
|
|
25
|
+
this._pbf = pbf;
|
|
26
|
+
this._keys = [];
|
|
27
|
+
this._values = [];
|
|
28
|
+
this._features = [];
|
|
29
|
+
pbf.readFields(readLayer, this, end);
|
|
30
|
+
this.length = this._features.length;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
feature(i) {
|
|
34
|
+
if (i < 0 || i >= this._features.length) {
|
|
35
|
+
throw new Error('feature index out of bounds');
|
|
36
36
|
}
|
|
37
|
+
|
|
38
|
+
this._pbf.pos = this._features[i];
|
|
39
|
+
|
|
40
|
+
const end = this._pbf.readVarint() + this._pbf.pos;
|
|
41
|
+
|
|
42
|
+
return new VectorTileFeature(this._pbf, end, this.extent, this._keys, this._values);
|
|
43
|
+
}
|
|
44
|
+
|
|
37
45
|
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
*
|
|
41
|
-
* @param tag
|
|
42
|
-
* @param layer
|
|
43
|
-
* @param pbf
|
|
44
|
-
*/
|
|
46
|
+
|
|
45
47
|
function readLayer(tag, layer, pbf) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
else if (tag === 1)
|
|
50
|
-
layer.name = pbf.readString();
|
|
51
|
-
else if (tag === 5)
|
|
52
|
-
layer.extent = pbf.readVarint();
|
|
53
|
-
else if (tag === 2)
|
|
54
|
-
layer._features.push(pbf.pos);
|
|
55
|
-
else if (tag === 3)
|
|
56
|
-
layer._keys.push(pbf.readString());
|
|
57
|
-
else if (tag === 4)
|
|
58
|
-
layer._values.push(readValueMessage(pbf));
|
|
59
|
-
}
|
|
48
|
+
if (layer && pbf) {
|
|
49
|
+
if (tag === 15) layer.version = pbf.readVarint();else if (tag === 1) layer.name = pbf.readString();else if (tag === 5) layer.extent = pbf.readVarint();else if (tag === 2) layer._features.push(pbf.pos);else if (tag === 3) layer._keys.push(pbf.readString());else if (tag === 4) layer._values.push(readValueMessage(pbf));
|
|
50
|
+
}
|
|
60
51
|
}
|
|
61
|
-
|
|
62
|
-
*
|
|
63
|
-
* @param pbf
|
|
64
|
-
* @returns value
|
|
65
|
-
*/
|
|
52
|
+
|
|
66
53
|
function readValueMessage(pbf) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
: tag === 3
|
|
77
|
-
? pbf.readDouble()
|
|
78
|
-
: tag === 4
|
|
79
|
-
? pbf.readVarint64()
|
|
80
|
-
: tag === 5
|
|
81
|
-
? pbf.readVarint()
|
|
82
|
-
: tag === 6
|
|
83
|
-
? pbf.readSVarint()
|
|
84
|
-
: tag === 7
|
|
85
|
-
? pbf.readBoolean()
|
|
86
|
-
: null;
|
|
87
|
-
}
|
|
88
|
-
return value;
|
|
54
|
+
let value = null;
|
|
55
|
+
const end = pbf.readVarint() + pbf.pos;
|
|
56
|
+
|
|
57
|
+
while (pbf.pos < end) {
|
|
58
|
+
const tag = pbf.readVarint() >> 3;
|
|
59
|
+
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;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return value;
|
|
89
63
|
}
|
|
64
|
+
//# sourceMappingURL=vector-tile-layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/mapbox-vector-tile/vector-tile-layer.ts"],"names":["VectorTileFeature","VectorTileLayer","constructor","pbf","end","version","name","extent","length","_pbf","_keys","_values","_features","readFields","readLayer","feature","i","Error","pos","readVarint","tag","layer","readString","push","readValueMessage","value","readFloat","readDouble","readVarint64","readSVarint","readBoolean"],"mappings":";AAIA,OAAOA,iBAAP,MAA8B,uBAA9B;AAEA,eAAe,MAAMC,eAAN,CAAsB;AASnCC,EAAAA,WAAW,CAACC,GAAD,EAAgBC,GAAhB,EAA6B;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAEtC,SAAKC,OAAL,GAAe,CAAf;AACA,SAAKC,IAAL,GAAY,EAAZ;AACA,SAAKC,MAAL,GAAc,IAAd;AACA,SAAKC,MAAL,GAAc,CAAd;AAGA,SAAKC,IAAL,GAAYN,GAAZ;AACA,SAAKO,KAAL,GAAa,EAAb;AACA,SAAKC,OAAL,GAAe,EAAf;AACA,SAAKC,SAAL,GAAiB,EAAjB;AAEAT,IAAAA,GAAG,CAACU,UAAJ,CAAeC,SAAf,EAA0B,IAA1B,EAAgCV,GAAhC;AAEA,SAAKI,MAAL,GAAc,KAAKI,SAAL,CAAeJ,MAA7B;AACD;;AAQDO,EAAAA,OAAO,CAACC,CAAD,EAA+B;AACpC,QAAIA,CAAC,GAAG,CAAJ,IAASA,CAAC,IAAI,KAAKJ,SAAL,CAAeJ,MAAjC,EAAyC;AACvC,YAAM,IAAIS,KAAJ,CAAU,6BAAV,CAAN;AACD;;AAED,SAAKR,IAAL,CAAUS,GAAV,GAAgB,KAAKN,SAAL,CAAeI,CAAf,CAAhB;;AAEA,UAAMZ,GAAG,GAAG,KAAKK,IAAL,CAAUU,UAAV,KAAyB,KAAKV,IAAL,CAAUS,GAA/C;;AACA,WAAO,IAAIlB,iBAAJ,CAAsB,KAAKS,IAA3B,EAAiCL,GAAjC,EAAsC,KAAKG,MAA3C,EAAmD,KAAKG,KAAxD,EAA+D,KAAKC,OAApE,CAAP;AACD;;AA1CkC;;AAmDrC,SAASG,SAAT,CAAmBM,GAAnB,EAAgCC,KAAhC,EAAyDlB,GAAzD,EAA+E;AAC7E,MAAIkB,KAAK,IAAIlB,GAAb,EAAkB;AAChB,QAAIiB,GAAG,KAAK,EAAZ,EAAgBC,KAAK,CAAChB,OAAN,GAAgBF,GAAG,CAACgB,UAAJ,EAAhB,CAAhB,KACK,IAAIC,GAAG,KAAK,CAAZ,EAAeC,KAAK,CAACf,IAAN,GAAaH,GAAG,CAACmB,UAAJ,EAAb,CAAf,KACA,IAAIF,GAAG,KAAK,CAAZ,EAAeC,KAAK,CAACd,MAAN,GAAeJ,GAAG,CAACgB,UAAJ,EAAf,CAAf,KACA,IAAIC,GAAG,KAAK,CAAZ,EAAeC,KAAK,CAACT,SAAN,CAAgBW,IAAhB,CAAqBpB,GAAG,CAACe,GAAzB,EAAf,KACA,IAAIE,GAAG,KAAK,CAAZ,EAAeC,KAAK,CAACX,KAAN,CAAYa,IAAZ,CAAiBpB,GAAG,CAACmB,UAAJ,EAAjB,EAAf,KACA,IAAIF,GAAG,KAAK,CAAZ,EAAeC,KAAK,CAACV,OAAN,CAAcY,IAAd,CAAmBC,gBAAgB,CAACrB,GAAD,CAAnC;AACrB;AACF;;AAOD,SAASqB,gBAAT,CAA0BrB,GAA1B,EAAyC;AACvC,MAAIsB,KAAuC,GAAG,IAA9C;AACA,QAAMrB,GAAG,GAAGD,GAAG,CAACgB,UAAJ,KAAmBhB,GAAG,CAACe,GAAnC;;AAEA,SAAOf,GAAG,CAACe,GAAJ,GAAUd,GAAjB,EAAsB;AACpB,UAAMgB,GAAG,GAAGjB,GAAG,CAACgB,UAAJ,MAAoB,CAAhC;AAEAM,IAAAA,KAAK,GACHL,GAAG,KAAK,CAAR,GACIjB,GAAG,CAACmB,UAAJ,EADJ,GAEIF,GAAG,KAAK,CAAR,GACAjB,GAAG,CAACuB,SAAJ,EADA,GAEAN,GAAG,KAAK,CAAR,GACAjB,GAAG,CAACwB,UAAJ,EADA,GAEAP,GAAG,KAAK,CAAR,GACAjB,GAAG,CAACyB,YAAJ,EADA,GAEAR,GAAG,KAAK,CAAR,GACAjB,GAAG,CAACgB,UAAJ,EADA,GAEAC,GAAG,KAAK,CAAR,GACAjB,GAAG,CAAC0B,WAAJ,EADA,GAEAT,GAAG,KAAK,CAAR,GACAjB,GAAG,CAAC2B,WAAJ,EADA,GAEA,IAfN;AAgBD;;AAED,SAAOL,KAAP;AACD","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"}
|
|
@@ -1,29 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
this.layers = pbf.readFields(readTile, {}, end);
|
|
11
|
-
}
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import VectorTileLayer from './vector-tile-layer';
|
|
3
|
+
export default class VectorTile {
|
|
4
|
+
constructor(pbf, end) {
|
|
5
|
+
_defineProperty(this, "layers", void 0);
|
|
6
|
+
|
|
7
|
+
this.layers = pbf.readFields(readTile, {}, end);
|
|
8
|
+
}
|
|
9
|
+
|
|
12
10
|
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
* @param tag
|
|
17
|
-
* @param layers
|
|
18
|
-
* @param pbf
|
|
19
|
-
*/
|
|
11
|
+
|
|
20
12
|
function readTile(tag, layers, pbf) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
13
|
+
if (tag === 3) {
|
|
14
|
+
if (pbf) {
|
|
15
|
+
const layer = new VectorTileLayer(pbf, pbf.readVarint() + pbf.pos);
|
|
16
|
+
|
|
17
|
+
if (layer.length && layers) {
|
|
18
|
+
layers[layer.name] = layer;
|
|
19
|
+
}
|
|
28
20
|
}
|
|
21
|
+
}
|
|
29
22
|
}
|
|
23
|
+
//# sourceMappingURL=vector-tile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/mapbox-vector-tile/vector-tile.ts"],"names":["VectorTileLayer","VectorTile","constructor","pbf","end","layers","readFields","readTile","tag","layer","readVarint","pos","length","name"],"mappings":";AAEA,OAAOA,eAAP,MAA4B,qBAA5B;AAGA,eAAe,MAAMC,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,IAAIT,eAAJ,CAAoBG,GAApB,EAAyBA,GAAG,CAACO,UAAJ,KAAmBP,GAAG,CAACQ,GAAhD,CAAd;;AACA,UAAIF,KAAK,CAACG,MAAN,IAAgBP,MAApB,EAA4B;AAC1BA,QAAAA,MAAM,CAACI,KAAK,CAACI,IAAP,CAAN,GAAqBJ,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"}
|