#pragma once #include #include #include namespace mbgl { class AsyncRequest; namespace style { struct GeoJSONOptions { // GeoJSON-VT options uint8_t maxzoom = 18; uint16_t buffer = 128; double tolerance = 0.375; // Supercluster options bool cluster = false; uint16_t clusterRadius = 50; uint8_t clusterMaxZoom = 17; }; class GeoJSONSource : public Source { public: GeoJSONSource(const std::string& id, const GeoJSONOptions& = {}); ~GeoJSONSource() final; void setURL(const std::string& url); void setGeoJSON(const GeoJSON&); optional getURL() const; class Impl; const Impl& impl() const; void loadDescription(FileSource&) final; private: optional url; std::unique_ptr req; }; template <> inline bool Source::is() const { return getType() == SourceType::GeoJSON; } } // namespace style } // namespace mbgl