mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 10:50:04 +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
				
			
		
							
								
								
									
										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
	
	 Dan Paulat
						Dan Paulat