#ifndef MBGL_MAP_GEOMETRY_TILE #define MBGL_MAP_GEOMETRY_TILE #include #include #include #include #include #include #include #include #include namespace mbgl { enum class FeatureType : uint8_t { Unknown = 0, Point = 1, LineString = 2, Polygon = 3 }; typedef std::vector> GeometryCollection; class GeometryTileFeature : private util::noncopyable { public: virtual FeatureType getType() const = 0; virtual mapbox::util::optional getValue(const std::string& key) const = 0; virtual GeometryCollection getGeometries() const = 0; }; class GeometryTileLayer : private util::noncopyable { public: virtual std::size_t featureCount() const = 0; virtual util::ptr getFeature(std::size_t) const = 0; }; class GeometryTile : private util::noncopyable { public: virtual util::ptr getLayer(const std::string&) const = 0; }; class GeometryTileFeatureExtractor { public: GeometryTileFeatureExtractor(const GeometryTileFeature& feature_) : feature(feature_) {} mapbox::util::optional getValue(const std::string& key) const; private: const GeometryTileFeature& feature; }; } #endif