mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 18:40:05 +00:00
Add map provider helper functions
This commit is contained in:
parent
6c5ec2d996
commit
ee99b51003
3 changed files with 178 additions and 0 deletions
|
|
@ -78,6 +78,7 @@ set(HDR_MAP source/scwx/qt/map/alert_layer.hpp
|
||||||
source/scwx/qt/map/generic_layer.hpp
|
source/scwx/qt/map/generic_layer.hpp
|
||||||
source/scwx/qt/map/layer_wrapper.hpp
|
source/scwx/qt/map/layer_wrapper.hpp
|
||||||
source/scwx/qt/map/map_context.hpp
|
source/scwx/qt/map/map_context.hpp
|
||||||
|
source/scwx/qt/map/map_provider.hpp
|
||||||
source/scwx/qt/map/map_settings.hpp
|
source/scwx/qt/map/map_settings.hpp
|
||||||
source/scwx/qt/map/map_widget.hpp
|
source/scwx/qt/map/map_widget.hpp
|
||||||
source/scwx/qt/map/overlay_layer.hpp
|
source/scwx/qt/map/overlay_layer.hpp
|
||||||
|
|
@ -89,6 +90,7 @@ set(SRC_MAP source/scwx/qt/map/alert_layer.cpp
|
||||||
source/scwx/qt/map/generic_layer.cpp
|
source/scwx/qt/map/generic_layer.cpp
|
||||||
source/scwx/qt/map/layer_wrapper.cpp
|
source/scwx/qt/map/layer_wrapper.cpp
|
||||||
source/scwx/qt/map/map_context.cpp
|
source/scwx/qt/map/map_context.cpp
|
||||||
|
source/scwx/qt/map/map_provider.cpp
|
||||||
source/scwx/qt/map/map_widget.cpp
|
source/scwx/qt/map/map_widget.cpp
|
||||||
source/scwx/qt/map/overlay_layer.cpp
|
source/scwx/qt/map/overlay_layer.cpp
|
||||||
source/scwx/qt/map/radar_product_layer.cpp
|
source/scwx/qt/map/radar_product_layer.cpp
|
||||||
|
|
|
||||||
129
scwx-qt/source/scwx/qt/map/map_provider.cpp
Normal file
129
scwx-qt/source/scwx/qt/map/map_provider.cpp
Normal file
|
|
@ -0,0 +1,129 @@
|
||||||
|
#include <scwx/qt/map/map_provider.hpp>
|
||||||
|
#include <scwx/qt/manager/settings_manager.hpp>
|
||||||
|
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
|
#include <boost/algorithm/string.hpp>
|
||||||
|
|
||||||
|
namespace scwx
|
||||||
|
{
|
||||||
|
namespace qt
|
||||||
|
{
|
||||||
|
namespace map
|
||||||
|
{
|
||||||
|
|
||||||
|
static const std::unordered_map<MapProvider, std::string> mapProviderName_ {
|
||||||
|
{MapProvider::Mapbox, "Mapbox"},
|
||||||
|
{MapProvider::MapTiler, "MapTiler"},
|
||||||
|
{MapProvider::Unknown, "?"}};
|
||||||
|
|
||||||
|
// Draw below tunnels, ferries and roads
|
||||||
|
static const std::vector<std::string> mapboxDrawBelow_ {
|
||||||
|
"tunnel", "ferry", "road"};
|
||||||
|
static const std::vector<std::string> maptilerDrawBelow_ {
|
||||||
|
"tunnel", "ferry", "road"};
|
||||||
|
|
||||||
|
static const std::unordered_map<MapProvider, MapProviderInfo> mapProviderInfo_ {
|
||||||
|
{MapProvider::Mapbox,
|
||||||
|
MapProviderInfo {
|
||||||
|
.mapProvider_ {MapProvider::Mapbox},
|
||||||
|
.cacheDbName_ {"mbgl-cache.db"},
|
||||||
|
.settingsTemplate_ {
|
||||||
|
QMapLibreGL::Settings::SettingsTemplate::MapboxSettings},
|
||||||
|
.mapStyles_ {{.name_ {"Streets"},
|
||||||
|
.url_ {"mapbox://styles/mapbox/streets-v11"},
|
||||||
|
.drawBelow_ {mapboxDrawBelow_}},
|
||||||
|
{.name_ {"Outdoors"},
|
||||||
|
.url_ {"mapbox://styles/mapbox/outdoors-v11"},
|
||||||
|
.drawBelow_ {mapboxDrawBelow_}},
|
||||||
|
{.name_ {"Light"},
|
||||||
|
.url_ {"mapbox://styles/mapbox/light-v10"},
|
||||||
|
.drawBelow_ {mapboxDrawBelow_}},
|
||||||
|
{.name_ {"Dark"},
|
||||||
|
.url_ {"mapbox://styles/mapbox/dark-v10"},
|
||||||
|
.drawBelow_ {mapboxDrawBelow_}},
|
||||||
|
{.name_ {"Satellite"},
|
||||||
|
.url_ {"mapbox://styles/mapbox/satellite-v9"},
|
||||||
|
.drawBelow_ {mapboxDrawBelow_}},
|
||||||
|
{.name_ {"Satellite Streets"},
|
||||||
|
.url_ {"mapbox://styles/mapbox/satellite-streets-v11"},
|
||||||
|
.drawBelow_ {mapboxDrawBelow_}}}}},
|
||||||
|
{MapProvider::MapTiler,
|
||||||
|
MapProviderInfo {
|
||||||
|
.mapProvider_ {MapProvider::MapTiler},
|
||||||
|
.cacheDbName_ {"maptiler-cache.db"},
|
||||||
|
.settingsTemplate_ {
|
||||||
|
QMapLibreGL::Settings::SettingsTemplate::MapTilerSettings},
|
||||||
|
.mapStyles_ {{.name_ {"Satellite"},
|
||||||
|
.url_ {"maptiler://maps/hybrid"},
|
||||||
|
.drawBelow_ {maptilerDrawBelow_}},
|
||||||
|
{.name_ {"Streets"},
|
||||||
|
.url_ {"maptiler://maps/streets-v2"},
|
||||||
|
.drawBelow_ {maptilerDrawBelow_}},
|
||||||
|
{.name_ {"Basic"},
|
||||||
|
.url_ {"maptiler://maps/basic-v2"},
|
||||||
|
.drawBelow_ {maptilerDrawBelow_}},
|
||||||
|
{.name_ {"Bright"},
|
||||||
|
.url_ {"maptiler://maps/bright-v2"},
|
||||||
|
.drawBelow_ {maptilerDrawBelow_}},
|
||||||
|
{.name_ {"Outdoor"},
|
||||||
|
.url_ {"maptiler://maps/outdoor-v2"},
|
||||||
|
.drawBelow_ {maptilerDrawBelow_}},
|
||||||
|
{.name_ {"Topo"},
|
||||||
|
.url_ {"maptiler://maps/topo-v2"},
|
||||||
|
.drawBelow_ {maptilerDrawBelow_}},
|
||||||
|
{.name_ {"Winter"},
|
||||||
|
.url_ {"maptiler://maps/winter-v2"},
|
||||||
|
.drawBelow_ {maptilerDrawBelow_}}}}},
|
||||||
|
{MapProvider::Unknown, MapProviderInfo {}}};
|
||||||
|
|
||||||
|
MapProvider GetMapProvider(const std::string& name)
|
||||||
|
{
|
||||||
|
auto result =
|
||||||
|
std::find_if(mapProviderName_.cbegin(),
|
||||||
|
mapProviderName_.cend(),
|
||||||
|
[&](const std::pair<MapProvider, std::string>& pair) -> bool
|
||||||
|
{ return boost::iequals(pair.second, name); });
|
||||||
|
|
||||||
|
if (result != mapProviderName_.cend())
|
||||||
|
{
|
||||||
|
return result->first;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return MapProvider::Unknown;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string GetMapProviderName(MapProvider mapProvider)
|
||||||
|
{
|
||||||
|
return mapProviderName_.at(mapProvider);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string GetMapProviderApiKey(MapProvider mapProvider)
|
||||||
|
{
|
||||||
|
switch (mapProvider)
|
||||||
|
{
|
||||||
|
case MapProvider::Mapbox:
|
||||||
|
return manager::SettingsManager::general_settings()
|
||||||
|
.mapbox_api_key()
|
||||||
|
.GetValue();
|
||||||
|
|
||||||
|
case MapProvider::MapTiler:
|
||||||
|
return manager::SettingsManager::general_settings()
|
||||||
|
.maptiler_api_key()
|
||||||
|
.GetValue();
|
||||||
|
|
||||||
|
default:
|
||||||
|
return "?";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const MapProviderInfo& GetMapProviderInfo(MapProvider mapProvider)
|
||||||
|
{
|
||||||
|
return mapProviderInfo_.at(mapProvider);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace map
|
||||||
|
} // namespace qt
|
||||||
|
} // namespace scwx
|
||||||
47
scwx-qt/source/scwx/qt/map/map_provider.hpp
Normal file
47
scwx-qt/source/scwx/qt/map/map_provider.hpp
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <scwx/util/iterator.hpp>
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include <QMapLibreGL/settings.hpp>
|
||||||
|
|
||||||
|
namespace scwx
|
||||||
|
{
|
||||||
|
namespace qt
|
||||||
|
{
|
||||||
|
namespace map
|
||||||
|
{
|
||||||
|
|
||||||
|
enum class MapProvider
|
||||||
|
{
|
||||||
|
Mapbox,
|
||||||
|
MapTiler,
|
||||||
|
Unknown
|
||||||
|
};
|
||||||
|
typedef util::Iterator<MapProvider, MapProvider::Mapbox, MapProvider::MapTiler>
|
||||||
|
MapProviderIterator;
|
||||||
|
|
||||||
|
struct MapStyle
|
||||||
|
{
|
||||||
|
std::string name_;
|
||||||
|
std::string url_;
|
||||||
|
std::vector<std::string> drawBelow_;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MapProviderInfo
|
||||||
|
{
|
||||||
|
MapProvider mapProvider_ {MapProvider::Unknown};
|
||||||
|
std::string cacheDbName_ {};
|
||||||
|
QMapLibreGL::Settings::SettingsTemplate settingsTemplate_ {};
|
||||||
|
std::vector<MapStyle> mapStyles_ {};
|
||||||
|
};
|
||||||
|
|
||||||
|
MapProvider GetMapProvider(const std::string& name);
|
||||||
|
std::string GetMapProviderName(MapProvider mapProvider);
|
||||||
|
std::string GetMapProviderApiKey(MapProvider mapProvider);
|
||||||
|
const MapProviderInfo& GetMapProviderInfo(MapProvider mapProvider);
|
||||||
|
|
||||||
|
} // namespace map
|
||||||
|
} // namespace qt
|
||||||
|
} // namespace scwx
|
||||||
Loading…
Add table
Add a link
Reference in a new issue