diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2015-03-20 13:14:00 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2015-03-20 13:14:00 +0100 |
commit | f73dfc73f101e8023fe5719225cdec35c7e4a84b (patch) | |
tree | f1a3caedd2a60d860aaa4c8f2d017216e55a087c | |
parent | 0cdf21c62d1f4ed8f54bd63b3f26459ef78a78d0 (diff) | |
download | qtlocation-mapboxgl-f73dfc73f101e8023fe5719225cdec35c7e4a84b.tar.gz |
make more things const and refs, and add mutexes
-rw-r--r-- | include/mbgl/map/annotation.hpp | 50 | ||||
-rw-r--r-- | include/mbgl/map/map.hpp | 17 | ||||
-rw-r--r-- | include/mbgl/util/constants.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/map/annotation.cpp | 205 | ||||
-rw-r--r-- | src/mbgl/map/live_tile_data.cpp | 3 | ||||
-rw-r--r-- | src/mbgl/map/map.cpp | 15 | ||||
-rw-r--r-- | src/mbgl/map/source.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/map/source.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/style/style_parser.cpp | 3 | ||||
-rw-r--r-- | src/mbgl/util/constants.cpp | 2 |
10 files changed, 179 insertions, 122 deletions
diff --git a/include/mbgl/map/annotation.hpp b/include/mbgl/map/annotation.hpp index e88d98b5c6..2eb0509d9a 100644 --- a/include/mbgl/map/annotation.hpp +++ b/include/mbgl/map/annotation.hpp @@ -2,7 +2,6 @@ #define MBGL_MAP_ANNOTATIONS #include <mbgl/map/tile.hpp> -#include <mbgl/map/live_tile.hpp> #include <mbgl/util/geo.hpp> #include <mbgl/util/noncopyable.hpp> #include <mbgl/util/std.hpp> @@ -18,55 +17,38 @@ namespace mbgl { class Annotation; class Map; +class LiveTile; -typedef std::vector<LatLng> AnnotationSegment; - -enum class AnnotationType : uint8_t { - Point, - Shape -}; +using AnnotationIDs = std::vector<uint32_t>; class AnnotationManager : private util::noncopyable { public: AnnotationManager(); + ~AnnotationManager(); + + void setDefaultPointAnnotationSymbol(const std::string& symbol); + std::pair<std::vector<Tile::ID>, AnnotationIDs> addPointAnnotations( + const std::vector<LatLng>&, const std::vector<std::string>& symbols, const Map&); + std::vector<Tile::ID> removeAnnotations(const AnnotationIDs&); + AnnotationIDs getAnnotationsInBounds(const LatLngBounds&, const Map&) const; + LatLngBounds getBoundsForAnnotations(const AnnotationIDs&) const; - void setDefaultPointAnnotationSymbol(std::string& symbol) { defaultPointAnnotationSymbol = symbol; } - std::pair<std::vector<Tile::ID>, std::vector<uint32_t>> addPointAnnotations(std::vector<LatLng>, std::vector<std::string>& symbols, const Map&); - std::vector<Tile::ID> removeAnnotations(std::vector<uint32_t>); - std::vector<uint32_t> getAnnotationsInBounds(LatLngBounds, const Map&) const; - LatLngBounds getBoundsForAnnotations(std::vector<uint32_t>) const; + const LiveTile* getTile(Tile::ID const& id); - const std::unique_ptr<LiveTile>& getTile(Tile::ID const& id); + static const std::string layerID; private: - uint32_t nextID() { return nextID_++; } - static vec2<double> projectPoint(LatLng& point); + inline uint32_t nextID(); + static vec2<double> projectPoint(const LatLng& point); private: - std::mutex mtx; + mutable std::mutex mtx; std::string defaultPointAnnotationSymbol; std::map<uint32_t, std::unique_ptr<Annotation>> annotations; - std::map<Tile::ID, std::pair<std::vector<uint32_t>, std::unique_ptr<LiveTile>>> annotationTiles; - std::unique_ptr<LiveTile> nullTile; + std::map<Tile::ID, std::pair<AnnotationIDs, std::unique_ptr<LiveTile>>> annotationTiles; uint32_t nextID_ = 0; }; -class Annotation : private util::noncopyable { - friend class AnnotationManager; -public: - Annotation(AnnotationType, std::vector<AnnotationSegment>); - -private: - LatLng getPoint() const; - LatLngBounds getBounds() const { return bounds; } - -private: - const AnnotationType type = AnnotationType::Point; - const std::vector<AnnotationSegment> geometry; - std::map<Tile::ID, std::vector<std::weak_ptr<const LiveTileFeature>>> tileFeatures; - LatLngBounds bounds; -}; - } #endif diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp index 86c89f769d..5e217a706b 100644 --- a/include/mbgl/map/map.hpp +++ b/include/mbgl/map/map.hpp @@ -142,13 +142,14 @@ public: inline const LatLng latLngForPixel(const vec2<double> pixel) const { return state.latLngForPixel(pixel); } // Annotations - void setDefaultPointAnnotationSymbol(std::string&); - uint32_t addPointAnnotation(LatLng, std::string& symbol); - std::vector<uint32_t> addPointAnnotations(std::vector<LatLng>, std::vector<std::string>& symbols); + void setDefaultPointAnnotationSymbol(const std::string&); + uint32_t addPointAnnotation(const LatLng&, const std::string& symbol); + std::vector<uint32_t> addPointAnnotations(const std::vector<LatLng>&, + const std::vector<std::string>& symbols); void removeAnnotation(uint32_t); - void removeAnnotations(std::vector<uint32_t>); - std::vector<uint32_t> getAnnotationsInBounds(LatLngBounds) const; - LatLngBounds getBoundsForAnnotations(std::vector<uint32_t>) const; + void removeAnnotations(const std::vector<uint32_t>&); + std::vector<uint32_t> getAnnotationsInBounds(const LatLngBounds&) const; + LatLngBounds getBoundsForAnnotations(const std::vector<uint32_t>&) const; // Debug void setDebug(bool value); @@ -181,7 +182,7 @@ private: // the stylesheet. void prepare(); - void updateAnnotationTiles(std::vector<Tile::ID>&); + void updateAnnotationTiles(const std::vector<Tile::ID>&); enum class Mode : uint8_t { None, // we're not doing any processing @@ -230,7 +231,7 @@ private: const std::unique_ptr<LineAtlas> lineAtlas; util::ptr<TexturePool> texturePool; const std::unique_ptr<Painter> painter; - util::ptr<AnnotationManager> annotationManager; + const std::unique_ptr<AnnotationManager> annotationManager; std::string styleURL; std::string styleJSON = ""; diff --git a/include/mbgl/util/constants.hpp b/include/mbgl/util/constants.hpp index 9e0856b68a..e598806c20 100644 --- a/include/mbgl/util/constants.hpp +++ b/include/mbgl/util/constants.hpp @@ -16,8 +16,6 @@ extern const double M2PI; extern const double EARTH_RADIUS_M; extern const double LATITUDE_MAX; -extern const std::string ANNOTATIONS_POINTS_LAYER_ID; - } namespace debug { diff --git a/src/mbgl/map/annotation.cpp b/src/mbgl/map/annotation.cpp index 0d6da5781e..6aaae0f360 100644 --- a/src/mbgl/map/annotation.cpp +++ b/src/mbgl/map/annotation.cpp @@ -1,58 +1,108 @@ #include <mbgl/map/annotation.hpp> #include <mbgl/map/map.hpp> +#include <mbgl/map/live_tile.hpp> #include <mbgl/util/ptr.hpp> #include <mbgl/util/std.hpp> #include <algorithm> #include <memory> -using namespace mbgl; +namespace mbgl { -Annotation::Annotation(AnnotationType type_, std::vector<AnnotationSegment> geometry_) +enum class AnnotationType : uint8_t { + Point, + Shape +}; + +using AnnotationSegment = std::vector<LatLng>; +using AnnotationSegments = std::vector<AnnotationSegment>; + +class Annotation : private util::noncopyable { + friend class AnnotationManager; +public: + Annotation(AnnotationType, const AnnotationSegments&); + +private: + LatLng getPoint() const; + LatLngBounds getBounds() const { return bounds; } + +private: + const AnnotationType type = AnnotationType::Point; + const AnnotationSegments geometry; + std::map<Tile::ID, std::vector<std::weak_ptr<const LiveTileFeature>>> tileFeatures; + const LatLngBounds bounds; +}; + + +Annotation::Annotation(AnnotationType type_, const AnnotationSegments& geometry_) : type(type_), - geometry(geometry_) { - if (type == AnnotationType::Point) { - bounds = LatLngBounds(getPoint(), getPoint()); - } else { - for (auto segment : geometry) { - for (auto point : segment) { - bounds.extend(point); - } - } - } + geometry(geometry_), + bounds([this] { + LatLngBounds bounds_; + if (type == AnnotationType::Point) { + bounds_ = { getPoint(), getPoint() }; + } else { + for (auto& segment : geometry) { + for (auto& point : segment) { + bounds_.extend(point); + } + } + } + return bounds_; + }()) { } LatLng Annotation::getPoint() const { + assert(!geometry.empty()); + assert(!geometry[0].empty()); return geometry[0][0]; } -AnnotationManager::AnnotationManager() - : nullTile(util::make_unique<LiveTile>()) {} +AnnotationManager::AnnotationManager() {} -vec2<double> AnnotationManager::projectPoint(LatLng& point) { - double sine = std::sin(point.latitude * M_PI / 180); - double x = point.longitude / 360 + 0.5; - double y = 0.5 - 0.25 * std::log((1 + sine) / (1 - sine)) / M_PI; - return vec2<double>(x, y); +AnnotationManager::~AnnotationManager() { + // leave this here because the header file doesn't have a definition of + // Annotation so we can't destruct the object with just the header file. } -std::pair<std::vector<Tile::ID>, std::vector<uint32_t>> AnnotationManager::addPointAnnotations(std::vector<LatLng> points, std::vector<std::string>& symbols, const Map& map) { +void AnnotationManager::setDefaultPointAnnotationSymbol(const std::string& symbol) { + std::lock_guard<std::mutex> lock(mtx); + defaultPointAnnotationSymbol = symbol; +} - uint16_t extent = 4096; +uint32_t AnnotationManager::nextID() { + return nextID_++; +} + +vec2<double> AnnotationManager::projectPoint(const LatLng& point) { + const double sine = std::sin(point.latitude * M_PI / 180.0); + const double x = point.longitude / 360.0 + 0.5; + const double y = 0.5 - 0.25 * std::log((1.0 + sine) / (1.0 - sine)) / M_PI; + return { x, y }; +} - std::vector<uint32_t> annotationIDs(points.size()); +std::pair<std::vector<Tile::ID>, AnnotationIDs> AnnotationManager::addPointAnnotations( + const std::vector<LatLng>& points, const std::vector<std::string>& symbols, const Map& map) { + std::lock_guard<std::mutex> lock(mtx); + + const uint16_t extent = 4096; + + AnnotationIDs annotationIDs(points.size()); std::vector<Tile::ID> affectedTiles; - for (uint32_t i = 0; i < points.size(); ++i) { - uint32_t annotationID = nextID(); + for (size_t i = 0; i < points.size(); ++i) { + const uint32_t annotationID = nextID(); - auto anno_it = annotations.emplace(annotationID, util::make_unique<Annotation>(AnnotationType::Point, std::vector<AnnotationSegment>({{ points[i] }}))); + auto anno_it = annotations.emplace( + annotationID, + util::make_unique<Annotation>(AnnotationType::Point, + AnnotationSegments({ { points[i] } }))); - uint8_t maxZoom = map.getMaxZoom(); + const uint8_t maxZoom = map.getMaxZoom(); uint32_t z2 = 1 << maxZoom; - vec2<double> p = projectPoint(points[i]); + const vec2<double> p = projectPoint(points[i]); uint32_t x = p.x * z2; uint32_t y = p.y * z2; @@ -61,20 +111,22 @@ std::pair<std::vector<Tile::ID>, std::vector<uint32_t>> AnnotationManager::addPo affectedTiles.emplace_back(z, x, y); Tile::ID tileID = affectedTiles.back(); - Coordinate coordinate(extent * (p.x * z2 - x), extent * (p.y * z2 - y)); + const Coordinate coordinate(extent * (p.x * z2 - x), extent * (p.y * z2 - y)); - GeometryCollection geometries({{ {{ coordinate }} }}); + const GeometryCollection geometries({ { { { coordinate } } } }); - std::map<std::string, std::string> properties = {{ "sprite", (symbols[i].length() ? symbols[i] : defaultPointAnnotationSymbol) }}; + const std::map<std::string, std::string> properties = { + { "sprite", (symbols[i].length() ? symbols[i] : defaultPointAnnotationSymbol) } + }; - auto feature = std::make_shared<const LiveTileFeature>(FeatureType::Point, - geometries, - properties); + auto feature = + std::make_shared<const LiveTileFeature>(FeatureType::Point, geometries, properties); auto tile_it = annotationTiles.find(tileID); if (tile_it != annotationTiles.end()) { // get point layer & add feature - auto layer = tile_it->second.second->getMutableLayer(util::ANNOTATIONS_POINTS_LAYER_ID); + auto layer = + tile_it->second.second->getMutableLayer(layerID); layer->addFeature(feature); // record annotation association with tile tile_it->second.first.push_back(annotationID); @@ -83,13 +135,16 @@ std::pair<std::vector<Tile::ID>, std::vector<uint32_t>> AnnotationManager::addPo util::ptr<LiveTileLayer> layer = std::make_shared<LiveTileLayer>(); layer->addFeature(feature); // create tile & record annotation association - auto tile_pos = annotationTiles.emplace(tileID, std::make_pair(std::vector<uint32_t>({ annotationID }), util::make_unique<LiveTile>())); + auto tile_pos = annotationTiles.emplace( + tileID, std::make_pair(AnnotationIDs({ annotationID }), + util::make_unique<LiveTile>())); // add point layer to tile - tile_pos.first->second.second->addLayer(util::ANNOTATIONS_POINTS_LAYER_ID, layer); + tile_pos.first->second.second->addLayer(layerID, layer); } // record annotation association with tile feature - anno_it.first->second->tileFeatures.emplace(tileID, std::vector<std::weak_ptr<const LiveTileFeature>>({ feature })); + anno_it.first->second->tileFeatures.emplace( + tileID, std::vector<std::weak_ptr<const LiveTileFeature>>({ feature })); z2 /= 2; x /= 2; @@ -102,23 +157,26 @@ std::pair<std::vector<Tile::ID>, std::vector<uint32_t>> AnnotationManager::addPo return std::make_pair(affectedTiles, annotationIDs); } -std::vector<Tile::ID> AnnotationManager::removeAnnotations(std::vector<uint32_t> ids) { +std::vector<Tile::ID> AnnotationManager::removeAnnotations(const AnnotationIDs& ids) { + std::lock_guard<std::mutex> lock(mtx); + std::vector<Tile::ID> affectedTiles; for (auto& annotationID : ids) { - auto annotation_it = annotations.find(annotationID); + const auto annotation_it = annotations.find(annotationID); if (annotation_it != annotations.end()) { auto& annotation = annotation_it->second; for (auto& tile_it : annotationTiles) { auto& tileAnnotations = tile_it.second.first; - util::erase_if(tileAnnotations, tileAnnotations.begin(), - tileAnnotations.end(), [&](const uint32_t annotationID_) -> bool { - return (annotationID_ == annotationID); - }); + util::erase_if(tileAnnotations, tileAnnotations.begin(), tileAnnotations.end(), + [&](const uint32_t annotationID_) + -> bool { return (annotationID_ == annotationID); }); auto features_it = annotation->tileFeatures.find(tile_it.first); if (features_it != annotation->tileFeatures.end()) { - auto layer = tile_it.second.second->getMutableLayer(util::ANNOTATIONS_POINTS_LAYER_ID); - auto& features = features_it->second; + const auto layer = + tile_it.second.second->getMutableLayer(layerID); + const auto& features = features_it->second; + assert(!features.empty()); layer->removeFeature(features[0]); affectedTiles.push_back(tile_it.first); } @@ -130,15 +188,18 @@ std::vector<Tile::ID> AnnotationManager::removeAnnotations(std::vector<uint32_t> return affectedTiles; } -std::vector<uint32_t> AnnotationManager::getAnnotationsInBounds(LatLngBounds queryBounds, const Map& map) const { - uint8_t z = map.getMaxZoom(); - uint32_t z2 = 1 << z; - vec2<double> swPoint = projectPoint(queryBounds.sw); - vec2<double> nePoint = projectPoint(queryBounds.ne); +std::vector<uint32_t> AnnotationManager::getAnnotationsInBounds(const LatLngBounds& queryBounds, + const Map& map) const { + std::lock_guard<std::mutex> lock(mtx); + + const uint8_t z = map.getMaxZoom(); + const uint32_t z2 = 1 << z; + const vec2<double> swPoint = projectPoint(queryBounds.sw); + const vec2<double> nePoint = projectPoint(queryBounds.ne); // tiles number y from top down - Tile::ID nwTile(z, swPoint.x * z2, nePoint.y * z2); - Tile::ID seTile(z, nePoint.x * z2, swPoint.y * z2); + const Tile::ID nwTile(z, swPoint.x * z2, nePoint.y * z2); + const Tile::ID seTile(z, nePoint.x * z2, swPoint.y * z2); std::vector<uint32_t> matchingAnnotations; @@ -148,16 +209,23 @@ std::vector<uint32_t> AnnotationManager::getAnnotationsInBounds(LatLngBounds que if (id.x >= nwTile.x && id.x <= seTile.x && id.y >= nwTile.y && id.y <= seTile.y) { if (id.x > nwTile.x && id.x < seTile.x && id.y > nwTile.y && id.y < seTile.y) { // trivial accept; grab all of the tile's annotations - std::copy(tile.second.first.begin(), tile.second.first.end(), std::back_inserter(matchingAnnotations)); + std::copy(tile.second.first.begin(), tile.second.first.end(), + std::back_inserter(matchingAnnotations)); } else { // check tile's annotations' bounding boxes std::copy_if(tile.second.first.begin(), tile.second.first.end(), - std::back_inserter(matchingAnnotations), [&](const uint32_t annotationID) -> bool { - LatLngBounds annoBounds = this->annotations.find(annotationID)->second->getBounds(); - return (annoBounds.sw.latitude >= queryBounds.sw.latitude && - annoBounds.ne.latitude <= queryBounds.ne.latitude && - annoBounds.sw.longitude >= queryBounds.sw.longitude && - annoBounds.ne.longitude <= queryBounds.ne.longitude); + std::back_inserter(matchingAnnotations), + [&](const uint32_t annotationID) -> bool { + const auto it = annotations.find(annotationID); + if (it != annotations.end()) { + const LatLngBounds annoBounds = it->second->getBounds(); + return (annoBounds.sw.latitude >= queryBounds.sw.latitude && + annoBounds.ne.latitude <= queryBounds.ne.latitude && + annoBounds.sw.longitude >= queryBounds.sw.longitude && + annoBounds.ne.longitude <= queryBounds.ne.longitude); + } else { + return false; + } }); } } @@ -167,10 +235,12 @@ std::vector<uint32_t> AnnotationManager::getAnnotationsInBounds(LatLngBounds que return matchingAnnotations; } -LatLngBounds AnnotationManager::getBoundsForAnnotations(std::vector<uint32_t> ids) const { +LatLngBounds AnnotationManager::getBoundsForAnnotations(const AnnotationIDs& ids) const { + std::lock_guard<std::mutex> lock(mtx); + LatLngBounds bounds; for (auto id : ids) { - auto annotation_it = annotations.find(id); + const auto annotation_it = annotations.find(id); if (annotation_it != annotations.end()) { bounds.extend(annotation_it->second->getPoint()); } @@ -179,12 +249,17 @@ LatLngBounds AnnotationManager::getBoundsForAnnotations(std::vector<uint32_t> id return bounds; } -const std::unique_ptr<LiveTile>& AnnotationManager::getTile(Tile::ID const& id) { +const LiveTile* AnnotationManager::getTile(Tile::ID const& id) { std::lock_guard<std::mutex> lock(mtx); - auto tile_it = annotationTiles.find(id); + const auto tile_it = annotationTiles.find(id); if (tile_it != annotationTiles.end()) { - return tile_it->second.second; + return tile_it->second.second.get(); } - return nullTile; + return nullptr; +} + +const std::string AnnotationManager::layerID = "com.mapbox.annotations.points"; + + } diff --git a/src/mbgl/map/live_tile_data.cpp b/src/mbgl/map/live_tile_data.cpp index 192efb7dcf..dd83ed4224 100644 --- a/src/mbgl/map/live_tile_data.cpp +++ b/src/mbgl/map/live_tile_data.cpp @@ -1,5 +1,6 @@ #include <mbgl/map/annotation.hpp> #include <mbgl/map/live_tile_data.hpp> +#include <mbgl/map/live_tile.hpp> #include <mbgl/map/tile_parser.hpp> #include <mbgl/style/style_source.hpp> #include <mbgl/map/vector_tile.hpp> @@ -36,7 +37,7 @@ void LiveTileData::parse() { } if (source.type == SourceType::Annotations) { - const std::unique_ptr<LiveTile>& tile = annotationManager.getTile(id); + const LiveTile* tile = annotationManager.getTile(id); if (tile) { // Parsing creates state that is encapsulated in TileParser. While parsing, diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index 22e6cbcebb..c707a033f5 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -531,19 +531,19 @@ const std::string &Map::getAccessToken() const { #pragma mark - Annotations -void Map::setDefaultPointAnnotationSymbol(std::string& symbol) { +void Map::setDefaultPointAnnotationSymbol(const std::string& symbol) { assert(Environment::currentlyOn(ThreadType::Main)); annotationManager->setDefaultPointAnnotationSymbol(symbol); } -uint32_t Map::addPointAnnotation(LatLng point, std::string& symbol) { +uint32_t Map::addPointAnnotation(const LatLng& point, const std::string& symbol) { assert(Environment::currentlyOn(ThreadType::Main)); std::vector<LatLng> points({ point }); std::vector<std::string> symbols({ symbol }); return addPointAnnotations(points, symbols)[0]; } -std::vector<uint32_t> Map::addPointAnnotations(std::vector<LatLng> points, std::vector<std::string>& symbols) { +std::vector<uint32_t> Map::addPointAnnotations(const std::vector<LatLng>& points, const std::vector<std::string>& symbols) { assert(Environment::currentlyOn(ThreadType::Main)); auto result = annotationManager->addPointAnnotations(points, symbols, *this); updateAnnotationTiles(result.first); @@ -555,23 +555,24 @@ void Map::removeAnnotation(uint32_t annotation) { removeAnnotations({ annotation }); } -void Map::removeAnnotations(std::vector<uint32_t> annotations) { +void Map::removeAnnotations(const std::vector<uint32_t>& annotations) { assert(Environment::currentlyOn(ThreadType::Main)); auto result = annotationManager->removeAnnotations(annotations); updateAnnotationTiles(result); } -std::vector<uint32_t> Map::getAnnotationsInBounds(LatLngBounds bounds) const { +std::vector<uint32_t> Map::getAnnotationsInBounds(const LatLngBounds& bounds) const { assert(Environment::currentlyOn(ThreadType::Main)); return annotationManager->getAnnotationsInBounds(bounds, *this); } -LatLngBounds Map::getBoundsForAnnotations(std::vector<uint32_t> annotations) const { +LatLngBounds Map::getBoundsForAnnotations(const std::vector<uint32_t>& annotations) const { assert(Environment::currentlyOn(ThreadType::Main)); return annotationManager->getBoundsForAnnotations(annotations); } -void Map::updateAnnotationTiles(std::vector<Tile::ID>& ids) { +void Map::updateAnnotationTiles(const std::vector<Tile::ID>& ids) { + assert(Environment::currentlyOn(ThreadType::Main)); for (const auto &source : activeSources) { if (source->info.type == SourceType::Annotations) { source->source->invalidateTiles(*this, ids); diff --git a/src/mbgl/map/source.cpp b/src/mbgl/map/source.cpp index 3036342d78..8189068886 100644 --- a/src/mbgl/map/source.cpp +++ b/src/mbgl/map/source.cpp @@ -373,7 +373,7 @@ void Source::update(Map &map, updated = map.getTime(); } -void Source::invalidateTiles(Map& map, std::vector<Tile::ID>& ids) { +void Source::invalidateTiles(Map& map, const std::vector<Tile::ID>& ids) { for (auto& id : ids) { tiles.erase(id); tile_data.erase(id); diff --git a/src/mbgl/map/source.hpp b/src/mbgl/map/source.hpp index f5ffd29adc..4cdd2ed64d 100644 --- a/src/mbgl/map/source.hpp +++ b/src/mbgl/map/source.hpp @@ -37,7 +37,7 @@ public: void load(Map &, Environment &); void update(Map &, uv::worker &, util::ptr<Style>, GlyphAtlas &, GlyphStore &, SpriteAtlas &, util::ptr<Sprite>, TexturePool &, std::function<void()> callback); - void invalidateTiles(Map&, std::vector<Tile::ID>&); + void invalidateTiles(Map&, const std::vector<Tile::ID>&); void updateMatrices(const mat4 &projMatrix, const TransformState &transform); void drawClippingMasks(Painter &painter); diff --git a/src/mbgl/style/style_parser.cpp b/src/mbgl/style/style_parser.cpp index f2bd8e6c88..acebf78dbb 100644 --- a/src/mbgl/style/style_parser.cpp +++ b/src/mbgl/style/style_parser.cpp @@ -1,6 +1,7 @@ #include <mbgl/style/style_source.hpp> #include <mbgl/style/style_parser.hpp> #include <mbgl/style/style_layer_group.hpp> +#include <mbgl/map/annotation.hpp> #include <mbgl/util/constants.hpp> #include <mbgl/util/std.hpp> #include <mbgl/util/vec.hpp> @@ -32,7 +33,7 @@ void StyleParser::parse(JSVal document) { // create point annotations layer // - std::string id = util::ANNOTATIONS_POINTS_LAYER_ID; + const std::string& id = AnnotationManager::layerID; std::map<ClassID, ClassProperties> paints; util::ptr<StyleLayer> annotations = std::make_shared<StyleLayer>(id, std::move(paints)); diff --git a/src/mbgl/util/constants.cpp b/src/mbgl/util/constants.cpp index ae5b21ddc4..ccdbeba23a 100644 --- a/src/mbgl/util/constants.cpp +++ b/src/mbgl/util/constants.cpp @@ -8,8 +8,6 @@ const double mbgl::util::M2PI = 2 * M_PI; const double mbgl::util::EARTH_RADIUS_M = 6378137; const double mbgl::util::LATITUDE_MAX = 85.05112878; -const std::string mbgl::util::ANNOTATIONS_POINTS_LAYER_ID = "com.mapbox.annotations.points"; - #if defined(DEBUG) const bool mbgl::debug::tileParseWarnings = false; const bool mbgl::debug::styleParseWarnings = false; |