diff --git a/scwx-qt/source/scwx/qt/map/map_provider.cpp b/scwx-qt/source/scwx/qt/map/map_provider.cpp index b7810802..5850cd79 100644 --- a/scwx-qt/source/scwx/qt/map/map_provider.cpp +++ b/scwx-qt/source/scwx/qt/map/map_provider.cpp @@ -19,9 +19,7 @@ static const std::unordered_map mapProviderName_ { // Draw below tunnels, ferries and roads static const std::vector mapboxDrawBelow_ { - "tunnel", "ferry", "road"}; -static const std::vector maptilerDrawBelow_ { - "tunnel", "ferry", "road"}; + "tunnel.*", "ferry.*", "road.*"}; static const std::unordered_map mapProviderInfo_ { {MapProvider::Mapbox, @@ -56,25 +54,25 @@ static const std::unordered_map mapProviderInfo_ { QMapLibreGL::Settings::SettingsTemplate::MapTilerSettings}, .mapStyles_ {{.name_ {"Satellite"}, .url_ {"maptiler://maps/hybrid"}, - .drawBelow_ {maptilerDrawBelow_}}, + .drawBelow_ {"tunnel"}}, {.name_ {"Streets"}, .url_ {"maptiler://maps/streets-v2"}, - .drawBelow_ {maptilerDrawBelow_}}, + .drawBelow_ {"aeroway"}}, {.name_ {"Basic"}, .url_ {"maptiler://maps/basic-v2"}, - .drawBelow_ {maptilerDrawBelow_}}, + .drawBelow_ {"railway_transit_tunnel"}}, {.name_ {"Bright"}, .url_ {"maptiler://maps/bright-v2"}, - .drawBelow_ {maptilerDrawBelow_}}, + .drawBelow_ {"ferry"}}, {.name_ {"Outdoor"}, .url_ {"maptiler://maps/outdoor-v2"}, - .drawBelow_ {maptilerDrawBelow_}}, + .drawBelow_ {"aeroway_runway"}}, {.name_ {"Topo"}, .url_ {"maptiler://maps/topo-v2"}, - .drawBelow_ {maptilerDrawBelow_}}, + .drawBelow_ {"aeroway_runway"}}, {.name_ {"Winter"}, .url_ {"maptiler://maps/winter-v2"}, - .drawBelow_ {maptilerDrawBelow_}}}}}, + .drawBelow_ {"aeroway_runway"}}}}}, {MapProvider::Unknown, MapProviderInfo {}}}; MapProvider GetMapProvider(const std::string& name) diff --git a/scwx-qt/source/scwx/qt/map/map_widget.cpp b/scwx-qt/source/scwx/qt/map/map_widget.cpp index 21ab9e07..40eb40f0 100644 --- a/scwx-qt/source/scwx/qt/map/map_widget.cpp +++ b/scwx-qt/source/scwx/qt/map/map_widget.cpp @@ -16,6 +16,8 @@ #include #include +#include + #include #include #include @@ -619,18 +621,22 @@ void MapWidget::AddLayers() std::string before = "ferry"; - for (const QString& layer : p->map_->layerIds()) + for (const QString& qlayer : p->map_->layerIds()) { + const std::string layer = qlayer.toStdString(); + // Draw below layers defined in map style - auto it = std::find_if( - mapStyle.drawBelow_.cbegin(), - mapStyle.drawBelow_.cend(), - [&layer](const std::string& styleLayer) -> bool - { return layer.startsWith(QString::fromStdString(styleLayer)); }); + auto it = std::find_if(mapStyle.drawBelow_.cbegin(), + mapStyle.drawBelow_.cend(), + [&layer](const std::string& styleLayer) -> bool + { + std::regex re {styleLayer}; + return std::regex_match(layer, re); + }); if (it != mapStyle.drawBelow_.cend()) { - before = layer.toStdString(); + before = layer; break; } }