#pragma once #include #include #include namespace mbgl { class AsyncRequest; class CanonicalTileID; namespace style { class GeoJSONData { public: virtual ~GeoJSONData() = default; virtual mapbox::feature::feature_collection getTile(const CanonicalTileID&) = 0; // SuperclusterData virtual mapbox::feature::feature_collection getChildren(const std::uint32_t) = 0; virtual mapbox::feature::feature_collection getLeaves(const std::uint32_t, const std::uint32_t limit = 10u, const std::uint32_t offset = 0u) = 0; virtual std::uint8_t getClusterExpansionZoom(std::uint32_t) = 0; }; class GeoJSONSource::Impl : public Source::Impl { public: Impl(std::string id, GeoJSONOptions); Impl(const GeoJSONSource::Impl&, const GeoJSON&); ~Impl() final; Range getZoomRange() const; std::weak_ptr getData() const; optional getAttribution() const final; private: GeoJSONOptions options; std::shared_ptr data; }; } // namespace style } // namespace mbgl