Esempio n. 1
0
    public static Feature GetFeature(Layer layer, int index)
    {
        byte[] data = layer.featuresData[index];
        OnlineMapsPBFReader reader  = new OnlineMapsPBFReader(data);
        Feature             feature = new Feature(layer);

        while (reader.NextByte())
        {
            switch ((FeatureType)reader.tag)
            {
            case FeatureType.Id:
                feature.id = (ulong)reader.Varint();
                break;

            case FeatureType.Tags:
                List <int> tags = reader.GetPackedUnit32().Select(t => (int)t).ToList();
                feature.tags = tags;
                break;

            case FeatureType.Type:
                int geomType = (int)reader.Varint();
                feature.geometryType = (GeomType)geomType;
                break;

            case FeatureType.Geometry:
                feature.geometryCommands = reader.GetPackedUnit32();
                break;

            default:
                reader.Skip();
                break;
            }
        }

        return(feature);
    }