diff --git a/tile.cpp b/tile.cpp index 883b8b2..f1a804f 100644 --- a/tile.cpp +++ b/tile.cpp @@ -78,6 +78,7 @@ struct coalesce { char *stringpool; std::vector keys; std::vector values; + std::map kv; drawvec geom; unsigned long long index; unsigned long long index2; @@ -314,6 +315,7 @@ struct partial { std::vector geoms; std::vector keys; std::vector values; + std::map kv; std::vector arc_polygon; long long layer; long long original_seq; @@ -1585,6 +1587,7 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s p.maxzoom = maxzoom; p.keys = sf.keys; p.values = sf.values; + p.kv = sf.kv; p.spacing = spacing; p.simplification = simplification; p.id = sf.id; @@ -1682,6 +1685,7 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s c.stringpool = stringpool + pool_off[partials[i].segment]; c.keys = partials[i].keys; c.values = partials[i].values; + c.kv = partials[i].kv; c.spacing = partials[i].spacing; c.id = partials[i].id; c.has_id = partials[i].has_id; @@ -1798,6 +1802,10 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s feature.has_id = layer_features[x].has_id; decode_meta(layer_features[x].m, layer_features[x].keys, layer_features[x].values, layer_features[x].stringpool, layer, feature); + for (auto kv : layer_features[x].kv) { + mvt_value v = stringified_to_mvt_value(kv.second.type, kv.second.s.c_str()); + layer.tag(feature, kv.first, v); + } if (additional[A_CALCULATE_FEATURE_DENSITY]) { int glow = 255;