更新
This commit is contained in:
@@ -274,23 +274,23 @@ public:
|
||||
if (config_.extension.empty() || config_.extension.front() != '.') {
|
||||
throw std::invalid_argument("invalid tile extension: " + config_.extension);
|
||||
}
|
||||
if (config_.file_format == "directory") {
|
||||
if (config_.file_format == Map_Tile_File_Format::directory) {
|
||||
resolver_ = std::make_unique<Tile_Path_Resolver>(config_);
|
||||
}
|
||||
else if (config_.file_format == "mbtiles") {
|
||||
else if (config_.file_format == Map_Tile_File_Format::mbtiles) {
|
||||
for (auto& file : config_.get_true_files()) {
|
||||
mbtiles_files_.push_back(std::make_unique<Mbtiles_File>(std::move(file)));
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw std::invalid_argument("invalid tile file_format: " + config_.file_format);
|
||||
throw std::invalid_argument("invalid tile file_format: " + Psc::to_string(config_.file_format));
|
||||
}
|
||||
}
|
||||
asio::awaitable<Tile_Load_Result> load(const Tile_Request& request, const Tile_Cache_Request& cache_request) const {
|
||||
if (request.z < config_.minimum_level || request.z > config_.maximum_level) {
|
||||
co_return Tile_Load_Result{Tile_Load_Status::Not_Found};
|
||||
}
|
||||
if (config_.file_format == "mbtiles") {
|
||||
if (config_.file_format == Map_Tile_File_Format::mbtiles) {
|
||||
co_return co_await load_mbtiles_tile(request, cache_request);
|
||||
}
|
||||
co_return co_await load_directory_tile(request, cache_request);
|
||||
@@ -336,7 +336,6 @@ private:
|
||||
std::move(content_type), *cache_info};
|
||||
}
|
||||
asio::awaitable<Tile_Load_Result> load_mbtiles_tile(Tile_Request request, Tile_Cache_Request cache_request) const {
|
||||
std::cout << "加载 load_mbtiles_tile" << std::endl;
|
||||
auto content_type =
|
||||
httplib::detail::find_content_type("tile" + config_.extension, {}, "application/octet-stream");
|
||||
co_return co_await asio::co_spawn(
|
||||
@@ -520,7 +519,7 @@ void register_map_graphics_handler() {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
global->cesium_graphics_config.from_base_json(&parsed.value());
|
||||
global->cesium_graphics_config.from_base_json(&parsed.value(), false);
|
||||
Global::save();
|
||||
}
|
||||
catch (const std::exception& error) {
|
||||
@@ -643,7 +642,7 @@ void handle_map_model_config_update(const drogon::HttpRequestPtr& req, Global* g
|
||||
if (!parsed.has_value()) {
|
||||
throw std::invalid_argument("invalid map_models");
|
||||
}
|
||||
global->map_model_config.from_base_json(&parsed.value());
|
||||
global->map_model_config.from_base_json(&parsed.value(), false);
|
||||
Global::save();
|
||||
}
|
||||
void register_map_models_handler() {
|
||||
@@ -700,11 +699,15 @@ void register_map_view_handler() {
|
||||
}
|
||||
try {
|
||||
auto next_view = global->map_view_config;
|
||||
next_view.from_base_json(&parsed.value());
|
||||
next_view.from_base_json(&parsed.value(), false);
|
||||
if (!global->map_resources_config.is_imagery_key(next_view.map2d.current_imagery_key) ||
|
||||
!global->map_resources_config.is_imagery_key(next_view.map3d.current_imagery_key)) {
|
||||
throw std::invalid_argument("invalid current_imagery_key");
|
||||
}
|
||||
if (!next_view.map3d.current_terrain_key.empty() &&
|
||||
!global->map_resources_config.is_terrain_key(next_view.map3d.current_terrain_key)) {
|
||||
throw std::invalid_argument("invalid current_terrain_key");
|
||||
}
|
||||
global->map_resources_config.current_imagery_key = key.value();
|
||||
global->map_view_config = next_view;
|
||||
Global::save();
|
||||
|
||||
Reference in New Issue
Block a user