@loaders.gl/mvt 3.3.0-alpha.5 → 3.3.0-alpha.6

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.
Files changed (55) hide show
  1. package/dist/dist.min.js +16 -10
  2. package/dist/es5/bundle.js +0 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/helpers/binary-util-functions.js +2 -12
  5. package/dist/es5/helpers/binary-util-functions.js.map +1 -1
  6. package/dist/es5/helpers/mapbox-util-functions.js +2 -10
  7. package/dist/es5/helpers/mapbox-util-functions.js.map +1 -1
  8. package/dist/es5/index.js +0 -1
  9. package/dist/es5/index.js.map +1 -1
  10. package/dist/es5/lib/binary-vector-tile/vector-tile-feature.js +14 -35
  11. package/dist/es5/lib/binary-vector-tile/vector-tile-feature.js.map +1 -1
  12. package/dist/es5/lib/binary-vector-tile/vector-tile-layer.js +3 -14
  13. package/dist/es5/lib/binary-vector-tile/vector-tile-layer.js.map +1 -1
  14. package/dist/es5/lib/binary-vector-tile/vector-tile.js +3 -10
  15. package/dist/es5/lib/binary-vector-tile/vector-tile.js.map +1 -1
  16. package/dist/es5/lib/mapbox-vector-tile/vector-tile-feature.js +8 -35
  17. package/dist/es5/lib/mapbox-vector-tile/vector-tile-feature.js.map +1 -1
  18. package/dist/es5/lib/mapbox-vector-tile/vector-tile-layer.js +4 -14
  19. package/dist/es5/lib/mapbox-vector-tile/vector-tile-layer.js.map +1 -1
  20. package/dist/es5/lib/mapbox-vector-tile/vector-tile.js +3 -10
  21. package/dist/es5/lib/mapbox-vector-tile/vector-tile.js.map +1 -1
  22. package/dist/es5/lib/parse-mvt.js +3 -37
  23. package/dist/es5/lib/parse-mvt.js.map +1 -1
  24. package/dist/es5/lib/types.js.map +1 -1
  25. package/dist/es5/mvt-loader.js +9 -18
  26. package/dist/es5/mvt-loader.js.map +1 -1
  27. package/dist/es5/workers/mvt-worker.js +0 -2
  28. package/dist/es5/workers/mvt-worker.js.map +1 -1
  29. package/dist/esm/bundle.js +1 -1
  30. package/dist/esm/bundle.js.map +1 -1
  31. package/dist/esm/helpers/binary-util-functions.js +5 -10
  32. package/dist/esm/helpers/binary-util-functions.js.map +1 -1
  33. package/dist/esm/helpers/mapbox-util-functions.js +5 -8
  34. package/dist/esm/helpers/mapbox-util-functions.js.map +1 -1
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm/lib/binary-vector-tile/vector-tile-feature.js +6 -25
  37. package/dist/esm/lib/binary-vector-tile/vector-tile-feature.js.map +1 -1
  38. package/dist/esm/lib/binary-vector-tile/vector-tile-layer.js +2 -14
  39. package/dist/esm/lib/binary-vector-tile/vector-tile-layer.js.map +1 -1
  40. package/dist/esm/lib/binary-vector-tile/vector-tile.js +1 -3
  41. package/dist/esm/lib/binary-vector-tile/vector-tile.js.map +1 -1
  42. package/dist/esm/lib/mapbox-vector-tile/vector-tile-feature.js +2 -36
  43. package/dist/esm/lib/mapbox-vector-tile/vector-tile-feature.js.map +1 -1
  44. package/dist/esm/lib/mapbox-vector-tile/vector-tile-layer.js +2 -14
  45. package/dist/esm/lib/mapbox-vector-tile/vector-tile-layer.js.map +1 -1
  46. package/dist/esm/lib/mapbox-vector-tile/vector-tile.js +1 -3
  47. package/dist/esm/lib/mapbox-vector-tile/vector-tile.js.map +1 -1
  48. package/dist/esm/lib/parse-mvt.js +0 -26
  49. package/dist/esm/lib/parse-mvt.js.map +1 -1
  50. package/dist/esm/lib/types.js.map +1 -1
  51. package/dist/esm/mvt-loader.js +9 -3
  52. package/dist/esm/mvt-loader.js.map +1 -1
  53. package/dist/esm/workers/mvt-worker.js.map +1 -1
  54. package/dist/mvt-worker.js +10 -11
  55. package/package.json +5 -5
@@ -1,25 +1,17 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
- exports.MVTLoader = exports.MVTWorkerLoader = void 0;
9
-
7
+ exports.MVTWorkerLoader = exports.MVTLoader = void 0;
10
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
11
  var _parseMvt = _interopRequireDefault(require("./lib/parse-mvt"));
17
-
18
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
19
-
20
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
-
22
- var VERSION = typeof "3.3.0-alpha.5" !== 'undefined' ? "3.3.0-alpha.5" : 'latest';
12
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
13
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
14
+ var VERSION = typeof "3.3.0-alpha.6" !== 'undefined' ? "3.3.0-alpha.6" : 'latest';
23
15
  var DEFAULT_MVT_LOADER_OPTIONS = {
24
16
  mvt: {
25
17
  shape: 'geojson',
@@ -29,19 +21,22 @@ var DEFAULT_MVT_LOADER_OPTIONS = {
29
21
  tileIndex: null
30
22
  }
31
23
  };
24
+
32
25
  var MVTWorkerLoader = {
33
26
  name: 'Mapbox Vector Tile',
34
27
  id: 'mvt',
35
28
  module: 'mvt',
36
29
  version: VERSION,
37
30
  extensions: ['mvt', 'pbf'],
38
- mimeTypes: ['application/vnd.mapbox-vector-tile', 'application/x-protobuf'],
31
+ mimeTypes: ['application/vnd.mapbox-vector-tile', 'application/x-protobuf'
32
+ ],
33
+
39
34
  worker: true,
40
35
  category: 'geometry',
41
36
  options: DEFAULT_MVT_LOADER_OPTIONS
42
37
  };
43
- exports.MVTWorkerLoader = MVTWorkerLoader;
44
38
 
39
+ exports.MVTWorkerLoader = MVTWorkerLoader;
45
40
  var MVTLoader = _objectSpread(_objectSpread({}, MVTWorkerLoader), {}, {
46
41
  parse: function () {
47
42
  var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
@@ -50,7 +45,6 @@ var MVTLoader = _objectSpread(_objectSpread({}, MVTWorkerLoader), {}, {
50
45
  switch (_context.prev = _context.next) {
51
46
  case 0:
52
47
  return _context.abrupt("return", (0, _parseMvt.default)(arrayBuffer, options));
53
-
54
48
  case 1:
55
49
  case "end":
56
50
  return _context.stop();
@@ -58,16 +52,13 @@ var MVTLoader = _objectSpread(_objectSpread({}, MVTWorkerLoader), {}, {
58
52
  }
59
53
  }, _callee);
60
54
  }));
61
-
62
55
  function parse(_x, _x2) {
63
56
  return _parse.apply(this, arguments);
64
57
  }
65
-
66
58
  return parse;
67
59
  }(),
68
60
  parseSync: _parseMvt.default,
69
61
  binary: true
70
62
  });
71
-
72
63
  exports.MVTLoader = MVTLoader;
73
64
  //# sourceMappingURL=mvt-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mvt-loader.ts"],"names":["VERSION","DEFAULT_MVT_LOADER_OPTIONS","mvt","shape","coordinates","layerProperty","layers","undefined","tileIndex","MVTWorkerLoader","name","id","module","version","extensions","mimeTypes","worker","category","options","MVTLoader","parse","arrayBuffer","parseSync","parseMVT","binary"],"mappings":";;;;;;;;;;;;;;;AAEA;;;;;;AAIA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAEA,IAAMC,0BAA4C,GAAG;AACnDC,EAAAA,GAAG,EAAE;AACHC,IAAAA,KAAK,EAAE,SADJ;AAEHC,IAAAA,WAAW,EAAE,OAFV;AAGHC,IAAAA,aAAa,EAAE,WAHZ;AAIHC,IAAAA,MAAM,EAAEC,SAJL;AAKHC,IAAAA,SAAS,EAAE;AALR;AAD8C,CAArD;AAaO,IAAMC,eAAuB,GAAG;AACrCC,EAAAA,IAAI,EAAE,oBAD+B;AAErCC,EAAAA,EAAE,EAAE,KAFiC;AAGrCC,EAAAA,MAAM,EAAE,KAH6B;AAIrCC,EAAAA,OAAO,EAAEb,OAJ4B;AAMrCc,EAAAA,UAAU,EAAE,CAAC,KAAD,EAAQ,KAAR,CANyB;AAOrCC,EAAAA,SAAS,EAAE,CACT,oCADS,EAET,wBAFS,CAP0B;AAYrCC,EAAAA,MAAM,EAAE,IAZ6B;AAarCC,EAAAA,QAAQ,EAAE,UAb2B;AAcrCC,EAAAA,OAAO,EAAEjB;AAd4B,CAAhC;;;AAoBA,IAAMkB,SAA2B,mCACnCV,eADmC;AAEtCW,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP,EAAoBH,OAApB;AAAA;AAAA;AAAA;AAAA;AAAA,+CAAmD,uBAASG,WAAT,EAAsBH,OAAtB,CAAnD;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KAFiC;AAGtCI,EAAAA,SAAS,EAAEC,iBAH2B;AAItCC,EAAAA,MAAM,EAAE;AAJ8B,EAAjC","sourcesContent":["import type {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {MVTLoaderOptions} from './lib/types';\nimport parseMVT from './lib/parse-mvt';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nconst DEFAULT_MVT_LOADER_OPTIONS: MVTLoaderOptions = {\n mvt: {\n shape: 'geojson',\n coordinates: 'local',\n layerProperty: 'layerName',\n layers: undefined,\n tileIndex: null\n }\n};\n\n/**\n * Worker loader for the Mapbox Vector Tile format\n */\nexport const MVTWorkerLoader: Loader = {\n name: 'Mapbox Vector Tile',\n id: 'mvt',\n module: 'mvt',\n version: VERSION,\n // Note: ArcGIS uses '.pbf' extension and 'application/octet-stream'\n extensions: ['mvt', 'pbf'],\n mimeTypes: [\n 'application/vnd.mapbox-vector-tile',\n 'application/x-protobuf'\n // 'application/octet-stream'\n ],\n worker: true,\n category: 'geometry',\n options: DEFAULT_MVT_LOADER_OPTIONS\n};\n\n/**\n * Loader for the Mapbox Vector Tile format\n */\nexport const MVTLoader: LoaderWithParser = {\n ...MVTWorkerLoader,\n parse: async (arrayBuffer, options?: MVTLoaderOptions) => parseMVT(arrayBuffer, options),\n parseSync: parseMVT,\n binary: true\n};\n"],"file":"mvt-loader.js"}
1
+ {"version":3,"file":"mvt-loader.js","names":["VERSION","DEFAULT_MVT_LOADER_OPTIONS","mvt","shape","coordinates","layerProperty","layers","undefined","tileIndex","MVTWorkerLoader","name","id","module","version","extensions","mimeTypes","worker","category","options","MVTLoader","parse","arrayBuffer","parseMVT","parseSync","binary"],"sources":["../../src/mvt-loader.ts"],"sourcesContent":["import type {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {MVTLoaderOptions} from './lib/types';\nimport parseMVT from './lib/parse-mvt';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nconst DEFAULT_MVT_LOADER_OPTIONS: MVTLoaderOptions = {\n mvt: {\n shape: 'geojson',\n coordinates: 'local',\n layerProperty: 'layerName',\n layers: undefined,\n tileIndex: null\n }\n};\n\n/**\n * Worker loader for the Mapbox Vector Tile format\n */\nexport const MVTWorkerLoader: Loader = {\n name: 'Mapbox Vector Tile',\n id: 'mvt',\n module: 'mvt',\n version: VERSION,\n // Note: ArcGIS uses '.pbf' extension and 'application/octet-stream'\n extensions: ['mvt', 'pbf'],\n mimeTypes: [\n 'application/vnd.mapbox-vector-tile',\n 'application/x-protobuf'\n // 'application/octet-stream'\n ],\n worker: true,\n category: 'geometry',\n options: DEFAULT_MVT_LOADER_OPTIONS\n};\n\n/**\n * Loader for the Mapbox Vector Tile format\n */\nexport const MVTLoader: LoaderWithParser = {\n ...MVTWorkerLoader,\n parse: async (arrayBuffer, options?: MVTLoaderOptions) => parseMVT(arrayBuffer, options),\n parseSync: parseMVT,\n binary: true\n};\n"],"mappings":";;;;;;;;;;AAEA;AAAuC;AAAA;AAIvC,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAE3E,IAAMC,0BAA4C,GAAG;EACnDC,GAAG,EAAE;IACHC,KAAK,EAAE,SAAS;IAChBC,WAAW,EAAE,OAAO;IACpBC,aAAa,EAAE,WAAW;IAC1BC,MAAM,EAAEC,SAAS;IACjBC,SAAS,EAAE;EACb;AACF,CAAC;;AAKM,IAAMC,eAAuB,GAAG;EACrCC,IAAI,EAAE,oBAAoB;EAC1BC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEb,OAAO;EAEhBc,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;EAC1BC,SAAS,EAAE,CACT,oCAAoC,EACpC;EAAwB,CAEzB;;EACDC,MAAM,EAAE,IAAI;EACZC,QAAQ,EAAE,UAAU;EACpBC,OAAO,EAAEjB;AACX,CAAC;;AAAC;AAKK,IAAMkB,SAA2B,mCACnCV,eAAe;EAClBW,KAAK;IAAA,uEAAE,iBAAOC,WAAW,EAAEH,OAA0B;MAAA;QAAA;UAAA;YAAA;cAAA,iCAAK,IAAAI,iBAAQ,EAACD,WAAW,EAAEH,OAAO,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA;IAAA;MAAA;IAAA;IAAA;EAAA;EACxFK,SAAS,EAAED,iBAAQ;EACnBE,MAAM,EAAE;AAAI,EACb;AAAC"}
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _mvtLoader = require("../mvt-loader");
4
-
5
4
  var _loaderUtils = require("@loaders.gl/loader-utils");
6
-
7
5
  (0, _loaderUtils.createLoaderWorker)(_mvtLoader.MVTLoader);
8
6
  //# sourceMappingURL=mvt-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/workers/mvt-worker.ts"],"names":["MVTLoader"],"mappings":";;AAAA;;AACA;;AAEA,qCAAmBA,oBAAnB","sourcesContent":["import {MVTLoader} from '../mvt-loader';\nimport {createLoaderWorker} from '@loaders.gl/loader-utils';\n\ncreateLoaderWorker(MVTLoader);\n"],"file":"mvt-worker.js"}
1
+ {"version":3,"file":"mvt-worker.js","names":["createLoaderWorker","MVTLoader"],"sources":["../../../src/workers/mvt-worker.ts"],"sourcesContent":["import {MVTLoader} from '../mvt-loader';\nimport {createLoaderWorker} from '@loaders.gl/loader-utils';\n\ncreateLoaderWorker(MVTLoader);\n"],"mappings":";;AAAA;AACA;AAEA,IAAAA,+BAAkB,EAACC,oBAAS,CAAC"}
@@ -1,5 +1,5 @@
1
- const moduleExports = require('./index');
2
1
 
2
+ const moduleExports = require('./index');
3
3
  globalThis.loaders = globalThis.loaders || {};
4
4
  module.exports = Object.assign(globalThis.loaders, moduleExports);
5
5
  //# sourceMappingURL=bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":"AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
1
+ {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
@@ -2,7 +2,6 @@ import { getPolygonSignedArea } from '@math.gl/polygon';
2
2
  export function classifyRings(geom) {
3
3
  const len = geom.indices.length;
4
4
  const type = 'Polygon';
5
-
6
5
  if (len <= 1) {
7
6
  return {
8
7
  type,
@@ -11,36 +10,33 @@ export function classifyRings(geom) {
11
10
  indices: [geom.indices]
12
11
  };
13
12
  }
14
-
15
13
  const areas = [];
16
14
  const polygons = [];
17
15
  let ringAreas = [];
18
16
  let polygon = [];
19
17
  let ccw;
20
18
  let offset = 0;
21
-
22
19
  for (let endIndex, i = 0, startIndex; i < len; i++) {
23
20
  startIndex = geom.indices[i] - offset;
24
21
  endIndex = geom.indices[i + 1] - offset || geom.data.length;
25
22
  const shape = geom.data.slice(startIndex, endIndex);
26
23
  const area = getPolygonSignedArea(shape);
27
-
28
24
  if (area === 0) {
29
25
  const before = geom.data.slice(0, startIndex);
30
26
  const after = geom.data.slice(endIndex);
31
27
  geom.data = before.concat(after);
28
+
32
29
  offset += endIndex - startIndex;
30
+
33
31
  continue;
34
32
  }
35
33
 
36
34
  if (ccw === undefined) ccw = area < 0;
37
-
38
35
  if (ccw === area < 0) {
39
36
  if (polygon.length) {
40
37
  areas.push(ringAreas);
41
38
  polygons.push(polygon);
42
39
  }
43
-
44
40
  polygon = [startIndex];
45
41
  ringAreas = [area];
46
42
  } else {
@@ -48,7 +44,6 @@ export function classifyRings(geom) {
48
44
  polygon.push(startIndex);
49
45
  }
50
46
  }
51
-
52
47
  if (ringAreas) areas.push(ringAreas);
53
48
  if (polygon.length) polygons.push(polygon);
54
49
  return {
@@ -58,6 +53,7 @@ export function classifyRings(geom) {
58
53
  data: geom.data
59
54
  };
60
55
  }
56
+
61
57
  export function project(data, x0, y0, size) {
62
58
  for (let j = 0, jl = data.length; j < jl; j += 2) {
63
59
  data[j] = (data[j] + x0) * 360 / size - 180;
@@ -65,19 +61,18 @@ export function project(data, x0, y0, size) {
65
61
  data[j + 1] = 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90;
66
62
  }
67
63
  }
64
+
68
65
  export function readFeature(tag, feature, pbf) {
69
66
  if (feature && pbf) {
70
67
  if (tag === 1) feature.id = pbf.readVarint();else if (tag === 2) readTag(pbf, feature);else if (tag === 3) feature.type = pbf.readVarint();else if (tag === 4) feature._geometry = pbf.pos;
71
68
  }
72
69
  }
70
+
73
71
  export function readTag(pbf, feature) {
74
72
  const end = pbf.readVarint() + pbf.pos;
75
-
76
73
  while (pbf.pos < end) {
77
74
  const key = feature._keys[pbf.readVarint()];
78
-
79
75
  const value = feature._values[pbf.readVarint()];
80
-
81
76
  feature.properties[key] = value;
82
77
  }
83
78
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/binary-util-functions.ts"],"names":["getPolygonSignedArea","classifyRings","geom","len","indices","length","type","data","areas","polygons","ringAreas","polygon","ccw","offset","endIndex","i","startIndex","shape","slice","area","before","after","concat","undefined","push","project","x0","y0","size","j","jl","y2","Math","PI","atan","exp","readFeature","tag","feature","pbf","id","readVarint","readTag","_geometry","pos","end","key","_keys","value","_values","properties"],"mappings":"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","sourcesContent":["import Protobuf from 'pbf';\nimport {getPolygonSignedArea} from '@math.gl/polygon';\nimport {FlatIndexedGeometry, FlatPolygon} from '@loaders.gl/schema';\nimport VectorTileFeature from '../lib/binary-vector-tile/vector-tile-feature';\n\n/**\n * Classifies an array of rings into polygons with outer rings and holes\n * The function also detects holes which have zero area and\n * removes them. In doing so it modifies the input\n * `geom.data` array to remove the unneeded data\n *\n * @param geometry\n * @returns object\n */\n// eslint-disable-next-line max-statements\nexport function classifyRings(geom: FlatIndexedGeometry): FlatPolygon {\n const len = geom.indices.length;\n const type = 'Polygon';\n\n if (len <= 1) {\n return {\n type,\n data: geom.data,\n areas: [[getPolygonSignedArea(geom.data)]],\n indices: [geom.indices]\n };\n }\n\n const areas: any[] = [];\n const polygons: any[] = [];\n let ringAreas: number[] = [];\n let polygon: number[] = [];\n let ccw: boolean | undefined;\n let offset = 0;\n\n for (let endIndex: number, i = 0, startIndex: number; i < len; i++) {\n startIndex = geom.indices[i] - offset;\n\n endIndex = geom.indices[i + 1] - offset || geom.data.length;\n const shape = geom.data.slice(startIndex, endIndex);\n const area = getPolygonSignedArea(shape);\n\n if (area === 0) {\n // This polygon has no area, so remove it from the shape\n // Remove the section from the data array\n const before = geom.data.slice(0, startIndex);\n const after = geom.data.slice(endIndex);\n geom.data = before.concat(after);\n\n // Need to offset any remaining indices as we have\n // modified the data buffer\n offset += endIndex - startIndex;\n\n // Do not add this index to the output and process next shape\n continue; // eslint-disable-line no-continue\n }\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n if (polygon.length) {\n areas.push(ringAreas);\n polygons.push(polygon);\n }\n polygon = [startIndex];\n ringAreas = [area];\n } else {\n ringAreas.push(area);\n polygon.push(startIndex);\n }\n }\n if (ringAreas) areas.push(ringAreas);\n if (polygon.length) polygons.push(polygon);\n\n return {type, areas, indices: polygons, data: geom.data};\n}\n\n/**\n *\n * @param data\n * @param x0\n * @param y0\n * @param size\n */\nexport function project(data: number[], x0: number, y0: number, size: number): void {\n for (let j = 0, jl = data.length; j < jl; j += 2) {\n data[j] = ((data[j] + x0) * 360) / size - 180;\n const y2 = 180 - ((data[j + 1] + y0) * 360) / size;\n data[j + 1] = (360 / Math.PI) * Math.atan(Math.exp((y2 * Math.PI) / 180)) - 90;\n }\n}\n\n/**\n * All code below is unchanged from the original Mapbox implemenation\n *\n * @param tag\n * @param feature\n * @param pbf\n */\nexport function readFeature(tag: number, feature?: VectorTileFeature, pbf?: Protobuf): void {\n if (feature && pbf) {\n if (tag === 1) feature.id = pbf.readVarint();\n else if (tag === 2) readTag(pbf, feature);\n else if (tag === 3) feature.type = pbf.readVarint();\n else if (tag === 4) feature._geometry = pbf.pos;\n }\n}\n\n/**\n * @param pbf\n * @param feature\n */\nexport function readTag(pbf: Protobuf, feature: VectorTileFeature): void {\n const end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n const key = feature._keys[pbf.readVarint()];\n const value = feature._values[pbf.readVarint()];\n feature.properties[key] = value;\n }\n}\n"],"file":"binary-util-functions.js"}
1
+ {"version":3,"file":"binary-util-functions.js","names":["getPolygonSignedArea","classifyRings","geom","len","indices","length","type","data","areas","polygons","ringAreas","polygon","ccw","offset","endIndex","i","startIndex","shape","slice","area","before","after","concat","undefined","push","project","x0","y0","size","j","jl","y2","Math","PI","atan","exp","readFeature","tag","feature","pbf","id","readVarint","readTag","_geometry","pos","end","key","_keys","value","_values","properties"],"sources":["../../../src/helpers/binary-util-functions.ts"],"sourcesContent":["import Protobuf from 'pbf';\nimport {getPolygonSignedArea} from '@math.gl/polygon';\nimport {FlatIndexedGeometry, FlatPolygon} from '@loaders.gl/schema';\nimport VectorTileFeature from '../lib/binary-vector-tile/vector-tile-feature';\n\n/**\n * Classifies an array of rings into polygons with outer rings and holes\n * The function also detects holes which have zero area and\n * removes them. In doing so it modifies the input\n * `geom.data` array to remove the unneeded data\n *\n * @param geometry\n * @returns object\n */\n// eslint-disable-next-line max-statements\nexport function classifyRings(geom: FlatIndexedGeometry): FlatPolygon {\n const len = geom.indices.length;\n const type = 'Polygon';\n\n if (len <= 1) {\n return {\n type,\n data: geom.data,\n areas: [[getPolygonSignedArea(geom.data)]],\n indices: [geom.indices]\n };\n }\n\n const areas: any[] = [];\n const polygons: any[] = [];\n let ringAreas: number[] = [];\n let polygon: number[] = [];\n let ccw: boolean | undefined;\n let offset = 0;\n\n for (let endIndex: number, i = 0, startIndex: number; i < len; i++) {\n startIndex = geom.indices[i] - offset;\n\n endIndex = geom.indices[i + 1] - offset || geom.data.length;\n const shape = geom.data.slice(startIndex, endIndex);\n const area = getPolygonSignedArea(shape);\n\n if (area === 0) {\n // This polygon has no area, so remove it from the shape\n // Remove the section from the data array\n const before = geom.data.slice(0, startIndex);\n const after = geom.data.slice(endIndex);\n geom.data = before.concat(after);\n\n // Need to offset any remaining indices as we have\n // modified the data buffer\n offset += endIndex - startIndex;\n\n // Do not add this index to the output and process next shape\n continue; // eslint-disable-line no-continue\n }\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n if (polygon.length) {\n areas.push(ringAreas);\n polygons.push(polygon);\n }\n polygon = [startIndex];\n ringAreas = [area];\n } else {\n ringAreas.push(area);\n polygon.push(startIndex);\n }\n }\n if (ringAreas) areas.push(ringAreas);\n if (polygon.length) polygons.push(polygon);\n\n return {type, areas, indices: polygons, data: geom.data};\n}\n\n/**\n *\n * @param data\n * @param x0\n * @param y0\n * @param size\n */\nexport function project(data: number[], x0: number, y0: number, size: number): void {\n for (let j = 0, jl = data.length; j < jl; j += 2) {\n data[j] = ((data[j] + x0) * 360) / size - 180;\n const y2 = 180 - ((data[j + 1] + y0) * 360) / size;\n data[j + 1] = (360 / Math.PI) * Math.atan(Math.exp((y2 * Math.PI) / 180)) - 90;\n }\n}\n\n/**\n * All code below is unchanged from the original Mapbox implemenation\n *\n * @param tag\n * @param feature\n * @param pbf\n */\nexport function readFeature(tag: number, feature?: VectorTileFeature, pbf?: Protobuf): void {\n if (feature && pbf) {\n if (tag === 1) feature.id = pbf.readVarint();\n else if (tag === 2) readTag(pbf, feature);\n else if (tag === 3) feature.type = pbf.readVarint();\n else if (tag === 4) feature._geometry = pbf.pos;\n }\n}\n\n/**\n * @param pbf\n * @param feature\n */\nexport function readTag(pbf: Protobuf, feature: VectorTileFeature): void {\n const end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n const key = feature._keys[pbf.readVarint()];\n const value = feature._values[pbf.readVarint()];\n feature.properties[key] = value;\n }\n}\n"],"mappings":"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"}
@@ -1,48 +1,45 @@
1
+
1
2
  export function classifyRings(rings) {
2
3
  const len = rings.length;
3
4
  if (len <= 1) return [rings];
4
5
  const polygons = [];
5
6
  let polygon;
6
7
  let ccw;
7
-
8
8
  for (let i = 0; i < len; i++) {
9
9
  const area = signedArea(rings[i]);
10
10
  if (area === 0) continue;
11
- if (ccw === undefined) ccw = area < 0;
12
11
 
12
+ if (ccw === undefined) ccw = area < 0;
13
13
  if (ccw === area < 0) {
14
14
  if (polygon) polygons.push(polygon);
15
15
  polygon = [rings[i]];
16
16
  } else if (polygon) polygon.push(rings[i]);
17
17
  }
18
-
19
18
  if (polygon) polygons.push(polygon);
20
19
  return polygons;
21
20
  }
21
+
22
22
  export function signedArea(ring) {
23
23
  let sum = 0;
24
-
25
24
  for (let i = 0, j = ring.length - 1, p1, p2; i < ring.length; j = i++) {
26
25
  p1 = ring[i];
27
26
  p2 = ring[j];
28
27
  sum += (p2[0] - p1[0]) * (p1[1] + p2[1]);
29
28
  }
30
-
31
29
  return sum;
32
30
  }
31
+
33
32
  export function readFeature(tag, feature, pbf) {
34
33
  if (feature && pbf) {
35
34
  if (tag === 1) feature.id = pbf.readVarint();else if (tag === 2) readTag(pbf, feature);else if (tag === 3) feature.type = pbf.readVarint();else if (tag === 4) feature._geometry = pbf.pos;
36
35
  }
37
36
  }
37
+
38
38
  export function readTag(pbf, feature) {
39
39
  const end = pbf.readVarint() + pbf.pos;
40
-
41
40
  while (pbf.pos < end) {
42
41
  const key = feature._keys[pbf.readVarint()];
43
-
44
42
  const value = feature._values[pbf.readVarint()];
45
-
46
43
  feature.properties[key] = value;
47
44
  }
48
45
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/mapbox-util-functions.ts"],"names":["classifyRings","rings","len","length","polygons","polygon","ccw","i","area","signedArea","undefined","push","ring","sum","j","p1","p2","readFeature","tag","feature","pbf","id","readVarint","readTag","type","_geometry","pos","end","key","_keys","value","_values","properties"],"mappings":"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","sourcesContent":["import Protobuf from 'pbf';\nimport {MVTMapboxGeometry} from '../lib/types';\nimport VectorTileFeature from '../lib/mapbox-vector-tile/vector-tile-feature';\n\n/**\n * Classifies an array of rings into polygons with outer rings and holes\n * @param rings\n * @returns polygons\n */\nexport function classifyRings(rings: MVTMapboxGeometry) {\n const len = rings.length;\n\n if (len <= 1) return [rings];\n\n const polygons: number[][][] = [];\n let polygon: number[][] | undefined;\n let ccw: boolean | undefined;\n\n for (let i = 0; i < len; i++) {\n const area = signedArea(rings[i]);\n if (area === 0) continue; // eslint-disable-line no-continue\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n if (polygon) polygons.push(polygon);\n polygon = [rings[i]];\n } else if (polygon) polygon.push(rings[i]);\n }\n if (polygon) polygons.push(polygon);\n\n return polygons;\n}\n\n/**\n *\n * @param ring\n * @returns sum\n */\nexport function signedArea(ring: number[][]) {\n let sum = 0;\n for (let i = 0, j = ring.length - 1, p1: number[], p2: number[]; i < ring.length; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n sum += (p2[0] - p1[0]) * (p1[1] + p2[1]);\n }\n return sum;\n}\n\n/**\n *\n * @param tag\n * @param feature\n * @param pbf\n */\nexport function readFeature(tag: number, feature?: VectorTileFeature, pbf?: Protobuf): void {\n if (feature && pbf) {\n if (tag === 1) feature.id = pbf.readVarint();\n else if (tag === 2) readTag(pbf, feature);\n else if (tag === 3) feature.type = pbf.readVarint();\n else if (tag === 4) feature._geometry = pbf.pos;\n }\n}\n\n/**\n *\n * @param pbf\n * @param feature\n */\nexport function readTag(pbf: Protobuf, feature: VectorTileFeature): void {\n const end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n const key = feature._keys[pbf.readVarint()];\n const value = feature._values[pbf.readVarint()];\n feature.properties[key] = value;\n }\n}\n"],"file":"mapbox-util-functions.js"}
1
+ {"version":3,"file":"mapbox-util-functions.js","names":["classifyRings","rings","len","length","polygons","polygon","ccw","i","area","signedArea","undefined","push","ring","sum","j","p1","p2","readFeature","tag","feature","pbf","id","readVarint","readTag","type","_geometry","pos","end","key","_keys","value","_values","properties"],"sources":["../../../src/helpers/mapbox-util-functions.ts"],"sourcesContent":["import Protobuf from 'pbf';\nimport {MVTMapboxGeometry} from '../lib/types';\nimport VectorTileFeature from '../lib/mapbox-vector-tile/vector-tile-feature';\n\n/**\n * Classifies an array of rings into polygons with outer rings and holes\n * @param rings\n * @returns polygons\n */\nexport function classifyRings(rings: MVTMapboxGeometry) {\n const len = rings.length;\n\n if (len <= 1) return [rings];\n\n const polygons: number[][][] = [];\n let polygon: number[][] | undefined;\n let ccw: boolean | undefined;\n\n for (let i = 0; i < len; i++) {\n const area = signedArea(rings[i]);\n if (area === 0) continue; // eslint-disable-line no-continue\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n if (polygon) polygons.push(polygon);\n polygon = [rings[i]];\n } else if (polygon) polygon.push(rings[i]);\n }\n if (polygon) polygons.push(polygon);\n\n return polygons;\n}\n\n/**\n *\n * @param ring\n * @returns sum\n */\nexport function signedArea(ring: number[][]) {\n let sum = 0;\n for (let i = 0, j = ring.length - 1, p1: number[], p2: number[]; i < ring.length; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n sum += (p2[0] - p1[0]) * (p1[1] + p2[1]);\n }\n return sum;\n}\n\n/**\n *\n * @param tag\n * @param feature\n * @param pbf\n */\nexport function readFeature(tag: number, feature?: VectorTileFeature, pbf?: Protobuf): void {\n if (feature && pbf) {\n if (tag === 1) feature.id = pbf.readVarint();\n else if (tag === 2) readTag(pbf, feature);\n else if (tag === 3) feature.type = pbf.readVarint();\n else if (tag === 4) feature._geometry = pbf.pos;\n }\n}\n\n/**\n *\n * @param pbf\n * @param feature\n */\nexport function readTag(pbf: Protobuf, feature: VectorTileFeature): void {\n const end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n const key = feature._keys[pbf.readVarint()];\n const value = feature._values[pbf.readVarint()];\n feature.properties[key] = value;\n }\n}\n"],"mappings":";AASA,OAAO,SAASA,aAAa,CAACC,KAAwB,EAAE;EACtD,MAAMC,GAAG,GAAGD,KAAK,CAACE,MAAM;EAExB,IAAID,GAAG,IAAI,CAAC,EAAE,OAAO,CAACD,KAAK,CAAC;EAE5B,MAAMG,QAAsB,GAAG,EAAE;EACjC,IAAIC,OAA+B;EACnC,IAAIC,GAAwB;EAE5B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,GAAG,EAAEK,CAAC,EAAE,EAAE;IAC5B,MAAMC,IAAI,GAAGC,UAAU,CAACR,KAAK,CAACM,CAAC,CAAC,CAAC;IACjC,IAAIC,IAAI,KAAK,CAAC,EAAE;;IAEhB,IAAIF,GAAG,KAAKI,SAAS,EAAEJ,GAAG,GAAGE,IAAI,GAAG,CAAC;IAErC,IAAIF,GAAG,KAAKE,IAAI,GAAG,CAAC,EAAE;MACpB,IAAIH,OAAO,EAAED,QAAQ,CAACO,IAAI,CAACN,OAAO,CAAC;MACnCA,OAAO,GAAG,CAACJ,KAAK,CAACM,CAAC,CAAC,CAAC;IACtB,CAAC,MAAM,IAAIF,OAAO,EAAEA,OAAO,CAACM,IAAI,CAACV,KAAK,CAACM,CAAC,CAAC,CAAC;EAC5C;EACA,IAAIF,OAAO,EAAED,QAAQ,CAACO,IAAI,CAACN,OAAO,CAAC;EAEnC,OAAOD,QAAQ;AACjB;;AAOA,OAAO,SAASK,UAAU,CAACG,IAAgB,EAAE;EAC3C,IAAIC,GAAG,GAAG,CAAC;EACX,KAAK,IAAIN,CAAC,GAAG,CAAC,EAAEO,CAAC,GAAGF,IAAI,CAACT,MAAM,GAAG,CAAC,EAAEY,EAAY,EAAEC,EAAY,EAAET,CAAC,GAAGK,IAAI,CAACT,MAAM,EAAEW,CAAC,GAAGP,CAAC,EAAE,EAAE;IACzFQ,EAAE,GAAGH,IAAI,CAACL,CAAC,CAAC;IACZS,EAAE,GAAGJ,IAAI,CAACE,CAAC,CAAC;IACZD,GAAG,IAAI,CAACG,EAAE,CAAC,CAAC,CAAC,GAAGD,EAAE,CAAC,CAAC,CAAC,KAAKA,EAAE,CAAC,CAAC,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,CAAC;EAC1C;EACA,OAAOH,GAAG;AACZ;;AAQA,OAAO,SAASI,WAAW,CAACC,GAAW,EAAEC,OAA2B,EAAEC,GAAc,EAAQ;EAC1F,IAAID,OAAO,IAAIC,GAAG,EAAE;IAClB,IAAIF,GAAG,KAAK,CAAC,EAAEC,OAAO,CAACE,EAAE,GAAGD,GAAG,CAACE,UAAU,EAAE,CAAC,KACxC,IAAIJ,GAAG,KAAK,CAAC,EAAEK,OAAO,CAACH,GAAG,EAAED,OAAO,CAAC,CAAC,KACrC,IAAID,GAAG,KAAK,CAAC,EAAEC,OAAO,CAACK,IAAI,GAAGJ,GAAG,CAACE,UAAU,EAAE,CAAC,KAC/C,IAAIJ,GAAG,KAAK,CAAC,EAAEC,OAAO,CAACM,SAAS,GAAGL,GAAG,CAACM,GAAG;EACjD;AACF;;AAOA,OAAO,SAASH,OAAO,CAACH,GAAa,EAAED,OAA0B,EAAQ;EACvE,MAAMQ,GAAG,GAAGP,GAAG,CAACE,UAAU,EAAE,GAAGF,GAAG,CAACM,GAAG;EAEtC,OAAON,GAAG,CAACM,GAAG,GAAGC,GAAG,EAAE;IACpB,MAAMC,GAAG,GAAGT,OAAO,CAACU,KAAK,CAACT,GAAG,CAACE,UAAU,EAAE,CAAC;IAC3C,MAAMQ,KAAK,GAAGX,OAAO,CAACY,OAAO,CAACX,GAAG,CAACE,UAAU,EAAE,CAAC;IAC/CH,OAAO,CAACa,UAAU,CAACJ,GAAG,CAAC,GAAGE,KAAK;EACjC;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":["MVTLoader","MVTWorkerLoader"],"mappings":"AAAA,SAAQA,SAAR,EAAmBC,eAAnB,QAAyC,cAAzC","sourcesContent":["export {MVTLoader, MVTWorkerLoader} from './mvt-loader';\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["MVTLoader","MVTWorkerLoader"],"sources":["../../src/index.ts"],"sourcesContent":["export {MVTLoader, MVTWorkerLoader} from './mvt-loader';\n"],"mappings":"AAAA,SAAQA,SAAS,EAAEC,eAAe,QAAO,cAAc"}
@@ -1,5 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+
2
3
  import { classifyRings, project, readFeature } from '../../helpers/binary-util-functions';
4
+
3
5
  let endPos;
4
6
  let cmd;
5
7
  let cmdLen;
@@ -13,27 +15,19 @@ export const TEST_EXPORTS = {
13
15
  export default class VectorTileFeature {
14
16
  constructor(pbf, end, extent, keys, values, geometryInfo) {
15
17
  _defineProperty(this, "properties", void 0);
16
-
17
18
  _defineProperty(this, "extent", void 0);
18
-
19
19
  _defineProperty(this, "type", void 0);
20
-
21
20
  _defineProperty(this, "id", void 0);
22
-
23
21
  _defineProperty(this, "_pbf", void 0);
24
-
25
22
  _defineProperty(this, "_geometry", void 0);
26
-
27
23
  _defineProperty(this, "_keys", void 0);
28
-
29
24
  _defineProperty(this, "_values", void 0);
30
-
31
25
  _defineProperty(this, "_geometryInfo", void 0);
32
-
33
26
  this.properties = {};
34
27
  this.extent = extent;
35
28
  this.type = 0;
36
29
  this.id = null;
30
+
37
31
  this._pbf = pbf;
38
32
  this._geometry = -1;
39
33
  this._keys = keys;
@@ -51,6 +45,7 @@ export default class VectorTileFeature {
51
45
  x = 0;
52
46
  y = 0;
53
47
  i = 0;
48
+
54
49
  const indices = [];
55
50
  const data = [];
56
51
 
@@ -60,17 +55,13 @@ export default class VectorTileFeature {
60
55
  cmd = cmdLen & 0x7;
61
56
  length = cmdLen >> 3;
62
57
  }
63
-
64
58
  length--;
65
-
66
59
  if (cmd === 1 || cmd === 2) {
67
60
  x += pbf.readSVarint();
68
61
  y += pbf.readSVarint();
69
-
70
62
  if (cmd === 1) {
71
63
  indices.push(i);
72
64
  }
73
-
74
65
  data.push(x, y);
75
66
  i += 2;
76
67
  } else if (cmd === 7) {
@@ -83,7 +74,6 @@ export default class VectorTileFeature {
83
74
  throw new Error("unknown command ".concat(cmd));
84
75
  }
85
76
  }
86
-
87
77
  return {
88
78
  data,
89
79
  indices
@@ -93,6 +83,7 @@ export default class VectorTileFeature {
93
83
  _toBinaryCoordinates(transform) {
94
84
  const geom = this.loadGeometry();
95
85
  let geometry;
86
+
96
87
  transform(geom.data, this);
97
88
  const coordLength = 2;
98
89
 
@@ -105,7 +96,6 @@ export default class VectorTileFeature {
105
96
  ...geom
106
97
  };
107
98
  break;
108
-
109
99
  case 2:
110
100
  this._geometryInfo.lineFeaturesCount++;
111
101
  this._geometryInfo.linePathsCount += geom.indices.length;
@@ -115,41 +105,33 @@ export default class VectorTileFeature {
115
105
  ...geom
116
106
  };
117
107
  break;
118
-
119
108
  case 3:
120
109
  geometry = classifyRings(geom);
110
+
121
111
  this._geometryInfo.polygonFeaturesCount++;
122
112
  this._geometryInfo.polygonObjectsCount += geometry.indices.length;
123
-
124
113
  for (const indices of geometry.indices) {
125
114
  this._geometryInfo.polygonRingsCount += indices.length;
126
115
  }
127
-
128
116
  this._geometryInfo.polygonPositionsCount += geometry.data.length / coordLength;
129
117
  break;
130
-
131
118
  default:
132
119
  throw new Error("Invalid geometry type: ".concat(this.type));
133
120
  }
134
-
135
121
  const result = {
136
122
  type: 'Feature',
137
123
  geometry,
138
124
  properties: this.properties
139
125
  };
140
-
141
126
  if (this.id !== null) {
142
127
  result.id = this.id;
143
128
  }
144
-
145
129
  return result;
146
130
  }
147
-
148
131
  toBinaryCoordinates(options) {
149
132
  if (typeof options === 'function') {
150
133
  return this._toBinaryCoordinates(options);
151
134
  }
152
-
153
135
  const {
154
136
  x,
155
137
  y,
@@ -160,6 +142,5 @@ export default class VectorTileFeature {
160
142
  const y0 = this.extent * y;
161
143
  return this._toBinaryCoordinates(data => project(data, x0, y0, size));
162
144
  }
163
-
164
145
  }
165
146
  //# sourceMappingURL=vector-tile-feature.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/binary-vector-tile/vector-tile-feature.ts"],"names":["classifyRings","project","readFeature","endPos","cmd","cmdLen","length","x","y","i","TEST_EXPORTS","VectorTileFeature","constructor","pbf","end","extent","keys","values","geometryInfo","properties","type","id","_pbf","_geometry","_keys","_values","_geometryInfo","readFields","loadGeometry","pos","readVarint","indices","data","readSVarint","push","start","Error","_toBinaryCoordinates","transform","geom","geometry","coordLength","pointFeaturesCount","pointPositionsCount","lineFeaturesCount","linePathsCount","linePositionsCount","polygonFeaturesCount","polygonObjectsCount","polygonRingsCount","polygonPositionsCount","result","toBinaryCoordinates","options","z","size","Math","pow","x0","y0"],"mappings":"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","sourcesContent":["// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport Protobuf from 'pbf';\nimport {FlatFeature, FlatIndexedGeometry, GeojsonGeometryInfo} from '@loaders.gl/schema';\nimport {classifyRings, project, readFeature} from '../../helpers/binary-util-functions';\n\n// Reduce GC by reusing variables\nlet endPos: number;\nlet cmd: number;\nlet cmdLen: number;\nlet length: number;\nlet x: number;\nlet y: number;\nlet i: number;\n\nexport const TEST_EXPORTS = {\n classifyRings\n};\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 _geometryInfo: GeojsonGeometryInfo;\n\n // eslint-disable-next-line max-params\n constructor(\n pbf: Protobuf,\n end: number,\n extent: any,\n keys: string[],\n values: (string | number | boolean | null)[],\n geometryInfo: GeojsonGeometryInfo\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 this._geometryInfo = geometryInfo;\n\n pbf.readFields(readFeature, this, end);\n }\n\n // eslint-disable-next-line complexity, max-statements\n loadGeometry(): FlatIndexedGeometry {\n const pbf = this._pbf;\n pbf.pos = this._geometry;\n\n endPos = pbf.readVarint() + pbf.pos;\n cmd = 1;\n length = 0;\n x = 0;\n y = 0;\n i = 0;\n\n // Note: I attempted to replace the `data` array with a\n // Float32Array, but performance was worse, both using\n // `set()` and direct index access. Also, we cannot\n // know how large the buffer should be, so it would\n // increase memory usage\n const indices: number[] = []; // Indices where geometries start\n const data: number[] = []; // Flat array of coordinate data\n\n while (pbf.pos < endPos) {\n if (length <= 0) {\n 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 // New line\n indices.push(i);\n }\n data.push(x, y);\n i += 2;\n } else if (cmd === 7) {\n // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90\n if (i > 0) {\n const start = indices[indices.length - 1]; // start index of polygon\n data.push(data[start], data[start + 1]); // closePolygon\n i += 2;\n }\n } else {\n throw new Error(`unknown command ${cmd}`);\n }\n }\n\n return {data, indices};\n }\n\n /**\n *\n * @param transform\n * @returns result\n */\n _toBinaryCoordinates(transform) {\n // Expands the protobuf data to an intermediate Flat GeoJSON\n // data format, which maps closely to the binary data buffers.\n // It is similar to GeoJSON, but rather than storing the coordinates\n // in multidimensional arrays, we have a 1D `data` with all the\n // coordinates, and then index into this using the `indices`\n // parameter, e.g.\n //\n // geometry: {\n // type: 'Point', data: [1,2], indices: [0]\n // }\n // geometry: {\n // type: 'LineString', data: [1,2,3,4,...], indices: [0]\n // }\n // geometry: {\n // type: 'Polygon', data: [1,2,3,4,...], indices: [[0, 2]]\n // }\n // Thus the indices member lets us look up the relevant range\n // from the data array.\n // The Multi* versions of the above types share the same data\n // structure, just with multiple elements in the indices array\n const geom = this.loadGeometry();\n let geometry;\n\n // Apply the supplied transformation to data\n transform(geom.data, this);\n\n const coordLength = 2;\n\n // eslint-disable-next-line default-case\n switch (this.type) {\n case 1: // Point\n this._geometryInfo.pointFeaturesCount++;\n this._geometryInfo.pointPositionsCount += geom.indices.length;\n geometry = {type: 'Point', ...geom};\n break;\n\n case 2: // LineString\n this._geometryInfo.lineFeaturesCount++;\n this._geometryInfo.linePathsCount += geom.indices.length;\n this._geometryInfo.linePositionsCount += geom.data.length / coordLength;\n geometry = {type: 'LineString', ...geom};\n break;\n\n case 3: // Polygon\n geometry = classifyRings(geom);\n\n // Unlike Point & LineString geom.indices is a 2D array, thanks\n // to the classifyRings method\n this._geometryInfo.polygonFeaturesCount++;\n this._geometryInfo.polygonObjectsCount += geometry.indices.length;\n\n for (const indices of geometry.indices) {\n this._geometryInfo.polygonRingsCount += indices.length;\n }\n this._geometryInfo.polygonPositionsCount += geometry.data.length / coordLength;\n\n break;\n default:\n throw new Error(`Invalid geometry type: ${this.type}`);\n }\n\n const result: FlatFeature = {type: 'Feature', geometry, properties: this.properties};\n\n if (this.id !== null) {\n result.id = this.id;\n }\n\n return result;\n }\n\n toBinaryCoordinates(\n options: {x: number; y: number; z: number} | ((data: number[], feature: {extent: any}) => void)\n ): FlatFeature {\n if (typeof options === 'function') {\n return this._toBinaryCoordinates(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 return this._toBinaryCoordinates((data: number[]) => project(data, x0, y0, size));\n }\n}\n"],"file":"vector-tile-feature.js"}
1
+ {"version":3,"file":"vector-tile-feature.js","names":["classifyRings","project","readFeature","endPos","cmd","cmdLen","length","x","y","i","TEST_EXPORTS","VectorTileFeature","constructor","pbf","end","extent","keys","values","geometryInfo","properties","type","id","_pbf","_geometry","_keys","_values","_geometryInfo","readFields","loadGeometry","pos","readVarint","indices","data","readSVarint","push","start","Error","_toBinaryCoordinates","transform","geom","geometry","coordLength","pointFeaturesCount","pointPositionsCount","lineFeaturesCount","linePathsCount","linePositionsCount","polygonFeaturesCount","polygonObjectsCount","polygonRingsCount","polygonPositionsCount","result","toBinaryCoordinates","options","z","size","Math","pow","x0","y0"],"sources":["../../../../src/lib/binary-vector-tile/vector-tile-feature.ts"],"sourcesContent":["// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport Protobuf from 'pbf';\nimport {FlatFeature, FlatIndexedGeometry, GeojsonGeometryInfo} from '@loaders.gl/schema';\nimport {classifyRings, project, readFeature} from '../../helpers/binary-util-functions';\n\n// Reduce GC by reusing variables\nlet endPos: number;\nlet cmd: number;\nlet cmdLen: number;\nlet length: number;\nlet x: number;\nlet y: number;\nlet i: number;\n\nexport const TEST_EXPORTS = {\n classifyRings\n};\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 _geometryInfo: GeojsonGeometryInfo;\n\n // eslint-disable-next-line max-params\n constructor(\n pbf: Protobuf,\n end: number,\n extent: any,\n keys: string[],\n values: (string | number | boolean | null)[],\n geometryInfo: GeojsonGeometryInfo\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 this._geometryInfo = geometryInfo;\n\n pbf.readFields(readFeature, this, end);\n }\n\n // eslint-disable-next-line complexity, max-statements\n loadGeometry(): FlatIndexedGeometry {\n const pbf = this._pbf;\n pbf.pos = this._geometry;\n\n endPos = pbf.readVarint() + pbf.pos;\n cmd = 1;\n length = 0;\n x = 0;\n y = 0;\n i = 0;\n\n // Note: I attempted to replace the `data` array with a\n // Float32Array, but performance was worse, both using\n // `set()` and direct index access. Also, we cannot\n // know how large the buffer should be, so it would\n // increase memory usage\n const indices: number[] = []; // Indices where geometries start\n const data: number[] = []; // Flat array of coordinate data\n\n while (pbf.pos < endPos) {\n if (length <= 0) {\n 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 // New line\n indices.push(i);\n }\n data.push(x, y);\n i += 2;\n } else if (cmd === 7) {\n // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90\n if (i > 0) {\n const start = indices[indices.length - 1]; // start index of polygon\n data.push(data[start], data[start + 1]); // closePolygon\n i += 2;\n }\n } else {\n throw new Error(`unknown command ${cmd}`);\n }\n }\n\n return {data, indices};\n }\n\n /**\n *\n * @param transform\n * @returns result\n */\n _toBinaryCoordinates(transform) {\n // Expands the protobuf data to an intermediate Flat GeoJSON\n // data format, which maps closely to the binary data buffers.\n // It is similar to GeoJSON, but rather than storing the coordinates\n // in multidimensional arrays, we have a 1D `data` with all the\n // coordinates, and then index into this using the `indices`\n // parameter, e.g.\n //\n // geometry: {\n // type: 'Point', data: [1,2], indices: [0]\n // }\n // geometry: {\n // type: 'LineString', data: [1,2,3,4,...], indices: [0]\n // }\n // geometry: {\n // type: 'Polygon', data: [1,2,3,4,...], indices: [[0, 2]]\n // }\n // Thus the indices member lets us look up the relevant range\n // from the data array.\n // The Multi* versions of the above types share the same data\n // structure, just with multiple elements in the indices array\n const geom = this.loadGeometry();\n let geometry;\n\n // Apply the supplied transformation to data\n transform(geom.data, this);\n\n const coordLength = 2;\n\n // eslint-disable-next-line default-case\n switch (this.type) {\n case 1: // Point\n this._geometryInfo.pointFeaturesCount++;\n this._geometryInfo.pointPositionsCount += geom.indices.length;\n geometry = {type: 'Point', ...geom};\n break;\n\n case 2: // LineString\n this._geometryInfo.lineFeaturesCount++;\n this._geometryInfo.linePathsCount += geom.indices.length;\n this._geometryInfo.linePositionsCount += geom.data.length / coordLength;\n geometry = {type: 'LineString', ...geom};\n break;\n\n case 3: // Polygon\n geometry = classifyRings(geom);\n\n // Unlike Point & LineString geom.indices is a 2D array, thanks\n // to the classifyRings method\n this._geometryInfo.polygonFeaturesCount++;\n this._geometryInfo.polygonObjectsCount += geometry.indices.length;\n\n for (const indices of geometry.indices) {\n this._geometryInfo.polygonRingsCount += indices.length;\n }\n this._geometryInfo.polygonPositionsCount += geometry.data.length / coordLength;\n\n break;\n default:\n throw new Error(`Invalid geometry type: ${this.type}`);\n }\n\n const result: FlatFeature = {type: 'Feature', geometry, properties: this.properties};\n\n if (this.id !== null) {\n result.id = this.id;\n }\n\n return result;\n }\n\n toBinaryCoordinates(\n options: {x: number; y: number; z: number} | ((data: number[], feature: {extent: any}) => void)\n ): FlatFeature {\n if (typeof options === 'function') {\n return this._toBinaryCoordinates(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 return this._toBinaryCoordinates((data: number[]) => project(data, x0, y0, size));\n }\n}\n"],"mappings":";;AAIA,SAAQA,aAAa,EAAEC,OAAO,EAAEC,WAAW,QAAO,qCAAqC;;AAGvF,IAAIC,MAAc;AAClB,IAAIC,GAAW;AACf,IAAIC,MAAc;AAClB,IAAIC,MAAc;AAClB,IAAIC,CAAS;AACb,IAAIC,CAAS;AACb,IAAIC,CAAS;AAEb,OAAO,MAAMC,YAAY,GAAG;EAC1BV;AACF,CAAC;AAED,eAAe,MAAMW,iBAAiB,CAAC;EAYrCC,WAAW,CACTC,GAAa,EACbC,GAAW,EACXC,MAAW,EACXC,IAAc,EACdC,MAA4C,EAC5CC,YAAiC,EACjC;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAEA,IAAI,CAACC,UAAU,GAAG,CAAC,CAAC;IACpB,IAAI,CAACJ,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACK,IAAI,GAAG,CAAC;IACb,IAAI,CAACC,EAAE,GAAG,IAAI;;IAGd,IAAI,CAACC,IAAI,GAAGT,GAAG;IACf,IAAI,CAACU,SAAS,GAAG,CAAC,CAAC;IACnB,IAAI,CAACC,KAAK,GAAGR,IAAI;IACjB,IAAI,CAACS,OAAO,GAAGR,MAAM;IACrB,IAAI,CAACS,aAAa,GAAGR,YAAY;IAEjCL,GAAG,CAACc,UAAU,CAACzB,WAAW,EAAE,IAAI,EAAEY,GAAG,CAAC;EACxC;;EAGAc,YAAY,GAAwB;IAClC,MAAMf,GAAG,GAAG,IAAI,CAACS,IAAI;IACrBT,GAAG,CAACgB,GAAG,GAAG,IAAI,CAACN,SAAS;IAExBpB,MAAM,GAAGU,GAAG,CAACiB,UAAU,EAAE,GAAGjB,GAAG,CAACgB,GAAG;IACnCzB,GAAG,GAAG,CAAC;IACPE,MAAM,GAAG,CAAC;IACVC,CAAC,GAAG,CAAC;IACLC,CAAC,GAAG,CAAC;IACLC,CAAC,GAAG,CAAC;;IAOL,MAAMsB,OAAiB,GAAG,EAAE;IAC5B,MAAMC,IAAc,GAAG,EAAE;;IAEzB,OAAOnB,GAAG,CAACgB,GAAG,GAAG1B,MAAM,EAAE;MACvB,IAAIG,MAAM,IAAI,CAAC,EAAE;QACfD,MAAM,GAAGQ,GAAG,CAACiB,UAAU,EAAE;QACzB1B,GAAG,GAAGC,MAAM,GAAG,GAAG;QAClBC,MAAM,GAAGD,MAAM,IAAI,CAAC;MACtB;MAEAC,MAAM,EAAE;MAER,IAAIF,GAAG,KAAK,CAAC,IAAIA,GAAG,KAAK,CAAC,EAAE;QAC1BG,CAAC,IAAIM,GAAG,CAACoB,WAAW,EAAE;QACtBzB,CAAC,IAAIK,GAAG,CAACoB,WAAW,EAAE;QAEtB,IAAI7B,GAAG,KAAK,CAAC,EAAE;UAEb2B,OAAO,CAACG,IAAI,CAACzB,CAAC,CAAC;QACjB;QACAuB,IAAI,CAACE,IAAI,CAAC3B,CAAC,EAAEC,CAAC,CAAC;QACfC,CAAC,IAAI,CAAC;MACR,CAAC,MAAM,IAAIL,GAAG,KAAK,CAAC,EAAE;QAEpB,IAAIK,CAAC,GAAG,CAAC,EAAE;UACT,MAAM0B,KAAK,GAAGJ,OAAO,CAACA,OAAO,CAACzB,MAAM,GAAG,CAAC,CAAC;UACzC0B,IAAI,CAACE,IAAI,CAACF,IAAI,CAACG,KAAK,CAAC,EAAEH,IAAI,CAACG,KAAK,GAAG,CAAC,CAAC,CAAC;UACvC1B,CAAC,IAAI,CAAC;QACR;MACF,CAAC,MAAM;QACL,MAAM,IAAI2B,KAAK,2BAAoBhC,GAAG,EAAG;MAC3C;IACF;IAEA,OAAO;MAAC4B,IAAI;MAAED;IAAO,CAAC;EACxB;;EAOAM,oBAAoB,CAACC,SAAS,EAAE;IAqB9B,MAAMC,IAAI,GAAG,IAAI,CAACX,YAAY,EAAE;IAChC,IAAIY,QAAQ;;IAGZF,SAAS,CAACC,IAAI,CAACP,IAAI,EAAE,IAAI,CAAC;IAE1B,MAAMS,WAAW,GAAG,CAAC;;IAGrB,QAAQ,IAAI,CAACrB,IAAI;MACf,KAAK,CAAC;QACJ,IAAI,CAACM,aAAa,CAACgB,kBAAkB,EAAE;QACvC,IAAI,CAAChB,aAAa,CAACiB,mBAAmB,IAAIJ,IAAI,CAACR,OAAO,CAACzB,MAAM;QAC7DkC,QAAQ,GAAG;UAACpB,IAAI,EAAE,OAAO;UAAE,GAAGmB;QAAI,CAAC;QACnC;MAEF,KAAK,CAAC;QACJ,IAAI,CAACb,aAAa,CAACkB,iBAAiB,EAAE;QACtC,IAAI,CAAClB,aAAa,CAACmB,cAAc,IAAIN,IAAI,CAACR,OAAO,CAACzB,MAAM;QACxD,IAAI,CAACoB,aAAa,CAACoB,kBAAkB,IAAIP,IAAI,CAACP,IAAI,CAAC1B,MAAM,GAAGmC,WAAW;QACvED,QAAQ,GAAG;UAACpB,IAAI,EAAE,YAAY;UAAE,GAAGmB;QAAI,CAAC;QACxC;MAEF,KAAK,CAAC;QACJC,QAAQ,GAAGxC,aAAa,CAACuC,IAAI,CAAC;;QAI9B,IAAI,CAACb,aAAa,CAACqB,oBAAoB,EAAE;QACzC,IAAI,CAACrB,aAAa,CAACsB,mBAAmB,IAAIR,QAAQ,CAACT,OAAO,CAACzB,MAAM;QAEjE,KAAK,MAAMyB,OAAO,IAAIS,QAAQ,CAACT,OAAO,EAAE;UACtC,IAAI,CAACL,aAAa,CAACuB,iBAAiB,IAAIlB,OAAO,CAACzB,MAAM;QACxD;QACA,IAAI,CAACoB,aAAa,CAACwB,qBAAqB,IAAIV,QAAQ,CAACR,IAAI,CAAC1B,MAAM,GAAGmC,WAAW;QAE9E;MACF;QACE,MAAM,IAAIL,KAAK,kCAA2B,IAAI,CAAChB,IAAI,EAAG;IAAC;IAG3D,MAAM+B,MAAmB,GAAG;MAAC/B,IAAI,EAAE,SAAS;MAAEoB,QAAQ;MAAErB,UAAU,EAAE,IAAI,CAACA;IAAU,CAAC;IAEpF,IAAI,IAAI,CAACE,EAAE,KAAK,IAAI,EAAE;MACpB8B,MAAM,CAAC9B,EAAE,GAAG,IAAI,CAACA,EAAE;IACrB;IAEA,OAAO8B,MAAM;EACf;EAEAC,mBAAmB,CACjBC,OAA+F,EAClF;IACb,IAAI,OAAOA,OAAO,KAAK,UAAU,EAAE;MACjC,OAAO,IAAI,CAAChB,oBAAoB,CAACgB,OAAO,CAAC;IAC3C;IACA,MAAM;MAAC9C,CAAC;MAAEC,CAAC;MAAE8C;IAAC,CAAC,GAAGD,OAAO;IACzB,MAAME,IAAI,GAAG,IAAI,CAACxC,MAAM,GAAGyC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,CAAC,CAAC;IACzC,MAAMI,EAAE,GAAG,IAAI,CAAC3C,MAAM,GAAGR,CAAC;IAC1B,MAAMoD,EAAE,GAAG,IAAI,CAAC5C,MAAM,GAAGP,CAAC;IAE1B,OAAO,IAAI,CAAC6B,oBAAoB,CAAEL,IAAc,IAAK/B,OAAO,CAAC+B,IAAI,EAAE0B,EAAE,EAAEC,EAAE,EAAEJ,IAAI,CAAC,CAAC;EACnF;AACF"}
@@ -1,27 +1,21 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+
2
3
  import VectorTileFeature from './vector-tile-feature';
3
4
  export default class VectorTileLayer {
4
5
  constructor(pbf, end) {
5
6
  _defineProperty(this, "version", void 0);
6
-
7
7
  _defineProperty(this, "name", void 0);
8
-
9
8
  _defineProperty(this, "extent", void 0);
10
-
11
9
  _defineProperty(this, "length", void 0);
12
-
13
10
  _defineProperty(this, "_pbf", void 0);
14
-
15
11
  _defineProperty(this, "_keys", void 0);
16
-
17
12
  _defineProperty(this, "_values", void 0);
18
-
19
13
  _defineProperty(this, "_features", void 0);
20
-
21
14
  this.version = 1;
22
15
  this.name = '';
23
16
  this.extent = 4096;
24
17
  this.length = 0;
18
+
25
19
  this._pbf = pbf;
26
20
  this._keys = [];
27
21
  this._values = [];
@@ -34,14 +28,10 @@ export default class VectorTileLayer {
34
28
  if (i < 0 || i >= this._features.length) {
35
29
  throw new Error('feature index out of bounds');
36
30
  }
37
-
38
31
  this._pbf.pos = this._features[i];
39
-
40
32
  const end = this._pbf.readVarint() + this._pbf.pos;
41
-
42
33
  return new VectorTileFeature(this._pbf, end, this.extent, this._keys, this._values, geometryInfo);
43
34
  }
44
-
45
35
  }
46
36
 
47
37
  function readLayer(tag, layer, pbf) {
@@ -53,12 +43,10 @@ function readLayer(tag, layer, pbf) {
53
43
  function readValueMessage(pbf) {
54
44
  let value = null;
55
45
  const end = pbf.readVarint() + pbf.pos;
56
-
57
46
  while (pbf.pos < end) {
58
47
  const tag = pbf.readVarint() >> 3;
59
48
  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
49
  }
61
-
62
50
  return value;
63
51
  }
64
52
  //# sourceMappingURL=vector-tile-layer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/binary-vector-tile/vector-tile-layer.ts"],"names":["VectorTileFeature","VectorTileLayer","constructor","pbf","end","version","name","extent","length","_pbf","_keys","_values","_features","readFields","readLayer","feature","i","geometryInfo","Error","pos","readVarint","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 VectorTileFeature from './vector-tile-feature';\nimport Protobuf from 'pbf';\nimport {GeojsonGeometryInfo} from '@loaders.gl/schema';\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 *\n * @param index\n * @param geometryInfo\n * @returns {VectorTileFeature}\n */\n feature(i: number, geometryInfo: GeojsonGeometryInfo): 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(\n this._pbf,\n end,\n this.extent,\n this._keys,\n this._values,\n geometryInfo\n );\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
+ {"version":3,"file":"vector-tile-layer.js","names":["VectorTileFeature","VectorTileLayer","constructor","pbf","end","version","name","extent","length","_pbf","_keys","_values","_features","readFields","readLayer","feature","i","geometryInfo","Error","pos","readVarint","tag","layer","readString","push","readValueMessage","value","readFloat","readDouble","readVarint64","readSVarint","readBoolean"],"sources":["../../../../src/lib/binary-vector-tile/vector-tile-layer.ts"],"sourcesContent":["/* eslint-disable indent */\n// This code is forked from https://github.com/mapbox/vector-tile-js under BSD 3-clause license.\n\nimport VectorTileFeature from './vector-tile-feature';\nimport Protobuf from 'pbf';\nimport {GeojsonGeometryInfo} from '@loaders.gl/schema';\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 *\n * @param index\n * @param geometryInfo\n * @returns {VectorTileFeature}\n */\n feature(i: number, geometryInfo: GeojsonGeometryInfo): 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(\n this._pbf,\n end,\n this.extent,\n this._keys,\n this._values,\n geometryInfo\n );\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"],"mappings":"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"}
@@ -1,19 +1,17 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+
2
3
  import VectorTileLayer from './vector-tile-layer';
3
4
  export default class VectorTile {
4
5
  constructor(pbf, end) {
5
6
  _defineProperty(this, "layers", void 0);
6
-
7
7
  this.layers = pbf.readFields(readTile, {}, end);
8
8
  }
9
-
10
9
  }
11
10
 
12
11
  function readTile(tag, layers, pbf) {
13
12
  if (tag === 3) {
14
13
  if (pbf) {
15
14
  const layer = new VectorTileLayer(pbf, pbf.readVarint() + pbf.pos);
16
-
17
15
  if (layer.length && layers) {
18
16
  layers[layer.name] = layer;
19
17
  }