1 #pragma once 2 3 #include <mbgl/tile/geometry_tile.hpp> 4 #include <mbgl/style/sources/custom_geometry_source.hpp> 5 #include <mbgl/util/feature.hpp> 6 #include <mbgl/util/geojson.hpp> 7 #include <mbgl/actor/mailbox.hpp> 8 9 namespace mbgl { 10 11 class TileParameters; 12 13 namespace style { 14 class CustomTileLoader; 15 } // namespace style 16 17 class CustomGeometryTile: public GeometryTile { 18 public: 19 CustomGeometryTile(const OverscaledTileID&, 20 std::string sourceID, 21 const TileParameters&, 22 const style::CustomGeometrySource::TileOptions, 23 ActorRef<style::CustomTileLoader> loader); 24 ~CustomGeometryTile() override; 25 26 void setTileData(const GeoJSON& data); 27 void invalidateTileData(); 28 29 void setNecessity(TileNecessity) final; 30 31 void querySourceFeatures( 32 std::vector<Feature>& result, 33 const SourceQueryOptions&) override; 34 35 private: 36 bool stale = true; 37 TileNecessity necessity; 38 const style::CustomGeometrySource::TileOptions options; 39 ActorRef<style::CustomTileLoader> loader; 40 std::shared_ptr<Mailbox> mailbox; 41 ActorRef<CustomGeometryTile> actorRef; 42 }; 43 44 } // namespace mbgl 45