1 | 'use strict';
|
2 |
|
3 |
|
4 |
|
5 | var Tile = exports.Tile = {read: readTile, write: writeTile};
|
6 |
|
7 | Tile.GeomType = {
|
8 | "UNKNOWN": 0,
|
9 | "POINT": 1,
|
10 | "LINESTRING": 2,
|
11 | "POLYGON": 3
|
12 | };
|
13 |
|
14 | function readTile(pbf, end) {
|
15 | return pbf.readFields(readTileField, {"layers": []}, end);
|
16 | }
|
17 |
|
18 | function readTileField(tag, tile, pbf) {
|
19 | if (tag === 3) tile.layers.push(readLayer(pbf, pbf.readVarint() + pbf.pos));
|
20 | }
|
21 |
|
22 | function writeTile(tile, pbf) {
|
23 | var i;
|
24 | if (tile.layers !== undefined) for (i = 0; i < tile.layers.length; i++) pbf.writeMessage(3, writeLayer, tile.layers[i]);
|
25 | }
|
26 |
|
27 |
|
28 |
|
29 | Tile.Value = {read: readValue, write: writeValue};
|
30 |
|
31 | function readValue(pbf, end) {
|
32 | return pbf.readFields(readValueField, {}, end);
|
33 | }
|
34 |
|
35 | function readValueField(tag, value, pbf) {
|
36 | if (tag === 1) value.string_value = pbf.readString();
|
37 | else if (tag === 2) value.float_value = pbf.readFloat();
|
38 | else if (tag === 3) value.double_value = pbf.readDouble();
|
39 | else if (tag === 4) value.int_value = pbf.readVarint64();
|
40 | else if (tag === 5) value.uint_value = pbf.readVarint();
|
41 | else if (tag === 6) value.sint_value = pbf.readSVarint();
|
42 | else if (tag === 7) value.bool_value = pbf.readBoolean();
|
43 | }
|
44 |
|
45 | function writeValue(value, pbf) {
|
46 | if (value.string_value !== undefined) pbf.writeString(1, value.string_value);
|
47 | if (value.float_value !== undefined) pbf.writeFloat(2, value.float_value);
|
48 | if (value.double_value !== undefined) pbf.writeDouble(3, value.double_value);
|
49 | if (value.int_value !== undefined) pbf.writeVarint(4, value.int_value);
|
50 | if (value.uint_value !== undefined) pbf.writeVarint(5, value.uint_value);
|
51 | if (value.sint_value !== undefined) pbf.writeSVarint(6, value.sint_value);
|
52 | if (value.bool_value !== undefined) pbf.writeBoolean(7, value.bool_value);
|
53 | }
|
54 |
|
55 |
|
56 |
|
57 | Tile.Feature = {read: readFeature, write: writeFeature};
|
58 |
|
59 | function readFeature(pbf, end) {
|
60 | var feature = pbf.readFields(readFeatureField, {}, end);
|
61 | if (feature.type === undefined) feature.type = "UNKNOWN";
|
62 | return feature;
|
63 | }
|
64 |
|
65 | function readFeatureField(tag, feature, pbf) {
|
66 | if (tag === 1) feature.id = pbf.readVarint();
|
67 | else if (tag === 2) feature.tags = pbf.readPackedVarint();
|
68 | else if (tag === 3) feature.type = pbf.readVarint();
|
69 | else if (tag === 4) feature.geometry = pbf.readPackedVarint();
|
70 | }
|
71 |
|
72 | function writeFeature(feature, pbf) {
|
73 | if (feature.id !== undefined) pbf.writeVarint(1, feature.id);
|
74 | if (feature.tags !== undefined) pbf.writePackedVarint(2, feature.tags);
|
75 | if (feature.type !== undefined) pbf.writeVarint(3, feature.type);
|
76 | if (feature.geometry !== undefined) pbf.writePackedVarint(4, feature.geometry);
|
77 | }
|
78 |
|
79 |
|
80 |
|
81 | Tile.Layer = {read: readLayer, write: writeLayer};
|
82 |
|
83 | function readLayer(pbf, end) {
|
84 | return pbf.readFields(readLayerField, {"features": [], "keys": [], "values": []}, end);
|
85 | }
|
86 |
|
87 | function readLayerField(tag, layer, pbf) {
|
88 | if (tag === 15) layer.version = pbf.readVarint();
|
89 | else if (tag === 1) layer.name = pbf.readString();
|
90 | else if (tag === 2) layer.features.push(readFeature(pbf, pbf.readVarint() + pbf.pos));
|
91 | else if (tag === 3) layer.keys.push(pbf.readString());
|
92 | else if (tag === 4) layer.values.push(readValue(pbf, pbf.readVarint() + pbf.pos));
|
93 | else if (tag === 5) layer.extent = pbf.readVarint();
|
94 | }
|
95 |
|
96 | function writeLayer(layer, pbf) {
|
97 | if (layer.version !== undefined) pbf.writeVarint(15, layer.version);
|
98 | if (layer.name !== undefined) pbf.writeString(1, layer.name);
|
99 | var i;
|
100 | if (layer.features !== undefined) for (i = 0; i < layer.features.length; i++) pbf.writeMessage(2, writeFeature, layer.features[i]);
|
101 | if (layer.keys !== undefined) for (i = 0; i < layer.keys.length; i++) pbf.writeString(3, layer.keys[i]);
|
102 | if (layer.values !== undefined) for (i = 0; i < layer.values.length; i++) pbf.writeMessage(4, writeValue, layer.values[i]);
|
103 | if (layer.extent !== undefined) pbf.writeVarint(5, layer.extent);
|
104 | }
|