summaryrefslogtreecommitdiff
path: root/src/map/map.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/map.cpp')
-rw-r--r--src/map/map.cpp65
1 files changed, 40 insertions, 25 deletions
diff --git a/src/map/map.cpp b/src/map/map.cpp
index c4c736d1a8..305b523c1e 100644
--- a/src/map/map.cpp
+++ b/src/map/map.cpp
@@ -174,25 +174,20 @@ void Map::setup() {
14,
true)));
- sources.emplace("satellite",
- std::unique_ptr<Source>(new Source(*this,
- painter,
- "https://a.tiles.mapbox.com/v3/justin.hh0gkdfm/%d/%d/%d%s.png256",
- Source::Type::raster,
- {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 }},
- 256,
- 0,
- 21,
- false)));
-
- loadStyle(resources::style, resources::style_size);
+ setStyleJSON(styleJSON);
}
-void Map::loadStyle(const uint8_t *const data, uint32_t bytes) {
- style->loadJSON(data, bytes);
+void Map::setStyleJSON(std::string newStyleJSON) {
+ styleJSON.swap(newStyleJSON);
+ style->cancelTransitions();
+ style->loadJSON((const uint8_t *)styleJSON.c_str());
update();
}
+std::string Map::getStyleJSON() const {
+ return styleJSON;
+}
+
#pragma mark - Size
// Note: This function is called from another thread. Make sure you only call threadsafe functions!
@@ -388,25 +383,45 @@ bool Map::getDebug() const {
return debug;
}
-void Map::toggleRaster() {
- style->setDefaultTransitionDuration(300);
+void Map::toggleStyle() {
+ setDefaultTransitionDuration(300);
style->cancelTransitions();
- auto it = sources.find("satellite");
- if (it != sources.end()) {
- Source &satellite_source = *it->second;
- if (satellite_source.enabled) {
- satellite_source.enabled = false;
- style->appliedClasses.erase("satellite");
- } else {
- satellite_source.enabled = true;
- style->appliedClasses.insert("satellite");
+ if (style->appliedClasses.size() == 1) {
+ for (auto source_it = style->classes.begin(); source_it != style->classes.end(); source_it++) {
+ if (source_it->first != "default") {
+ style->appliedClasses.insert(source_it->first);
+ break;
+ }
+ }
+ } else {
+ for (auto source_it = style->classes.begin(); source_it != style->classes.end(); source_it++) {
+ if (source_it->first != "default") {
+ style->appliedClasses.erase(source_it->first);
+ break;
+ }
}
}
update();
}
+void Map::setAppliedClasses(std::set<std::string> appliedClasses) {
+ style->cancelTransitions();
+
+ style->appliedClasses.swap(appliedClasses);
+
+ update();
+}
+
+std::set<std::string> Map::getAppliedClasses() const {
+ return style->appliedClasses;
+}
+
+void Map::setDefaultTransitionDuration(uint64_t duration_milliseconds) {
+ style->setDefaultTransitionDuration(duration_milliseconds);
+}
+
void Map::updateTiles() {
for (auto &pair : sources) {
const std::unique_ptr<Source> &source = pair.second;