mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-11 16:30:28 +00:00
feat: Add support for offline vector maps using MBTiles
- Introduced new MapLayerType for vector MBTiles. - Enhanced MapLayer class to handle vector-specific properties. - Implemented MBTilesService for managing MBTiles files, including import and deletion functionalities. - Updated MapManagementScreen to allow importing and managing MBTiles files. - Added UI components for displaying and interacting with MBTiles layers. - Integrated vector tile rendering in MapTab, supporting dynamic theme loading. - Updated pubspec.yaml to include necessary dependencies for MBTiles and vector tiles.
This commit is contained in:
@@ -1786,5 +1786,95 @@
|
||||
"you": "You",
|
||||
"@you": {
|
||||
"description": "Label for the current user in message bubbles"
|
||||
},
|
||||
|
||||
"offlineVectorMaps": "Offline Vector Maps",
|
||||
"@offlineVectorMaps": {
|
||||
"description": "Title for offline vector maps section"
|
||||
},
|
||||
|
||||
"offlineVectorMapsDescription": "Import and manage offline vector map tiles (MBTiles format) for use without internet connection",
|
||||
"@offlineVectorMapsDescription": {
|
||||
"description": "Description for offline vector maps section"
|
||||
},
|
||||
|
||||
"importMbtiles": "Import MBTiles File",
|
||||
"@importMbtiles": {
|
||||
"description": "Button to import MBTiles file"
|
||||
},
|
||||
|
||||
"importMbtilesNote": "Supports MBTiles files with vector tiles (PBF/MVT format). Geofabrik extracts work great!",
|
||||
"@importMbtilesNote": {
|
||||
"description": "Note about supported MBTiles file types"
|
||||
},
|
||||
|
||||
"noMbtilesFiles": "No offline vector maps found",
|
||||
"@noMbtilesFiles": {
|
||||
"description": "Message when no MBTiles files are available"
|
||||
},
|
||||
|
||||
"mbtilesImportedSuccessfully": "MBTiles file imported successfully",
|
||||
"@mbtilesImportedSuccessfully": {
|
||||
"description": "Success message after importing MBTiles file"
|
||||
},
|
||||
|
||||
"failedToImportMbtiles": "Failed to import MBTiles file",
|
||||
"@failedToImportMbtiles": {
|
||||
"description": "Error message when MBTiles import fails"
|
||||
},
|
||||
|
||||
"deleteMbtilesConfirmTitle": "Delete Offline Map",
|
||||
"@deleteMbtilesConfirmTitle": {
|
||||
"description": "Title for delete MBTiles confirmation dialog"
|
||||
},
|
||||
|
||||
"deleteMbtilesConfirmMessage": "Are you sure you want to delete \"{name}\"? This will permanently remove the offline map.",
|
||||
"@deleteMbtilesConfirmMessage": {
|
||||
"description": "Confirmation message for deleting MBTiles file",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"mbtilesDeletedSuccessfully": "Offline map deleted successfully",
|
||||
"@mbtilesDeletedSuccessfully": {
|
||||
"description": "Success message after deleting MBTiles file"
|
||||
},
|
||||
|
||||
"failedToDeleteMbtiles": "Failed to delete offline map",
|
||||
"@failedToDeleteMbtiles": {
|
||||
"description": "Error message when MBTiles deletion fails"
|
||||
},
|
||||
|
||||
"vectorTiles": "Vector Tiles",
|
||||
"@vectorTiles": {
|
||||
"description": "Label for vector tile type"
|
||||
},
|
||||
|
||||
"schema": "Schema",
|
||||
"@schema": {
|
||||
"description": "Label for vector tile schema"
|
||||
},
|
||||
|
||||
"unknown": "Unknown",
|
||||
"@unknown": {
|
||||
"description": "Unknown value label"
|
||||
},
|
||||
|
||||
"bounds": "Bounds",
|
||||
"@bounds": {
|
||||
"description": "Label for geographic bounds"
|
||||
},
|
||||
|
||||
"onlineLayers": "Online Layers",
|
||||
"@onlineLayers": {
|
||||
"description": "Section header for online map layers"
|
||||
},
|
||||
|
||||
"offlineLayers": "Offline Layers",
|
||||
"@offlineLayers": {
|
||||
"description": "Section header for offline map layers (MBTiles)"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -594,5 +594,39 @@
|
||||
"txPowerDbm": "TX snaga (dBm)",
|
||||
"maxPowerDbm": "Maks: {power} dBm",
|
||||
|
||||
"you": "Ti"
|
||||
"you": "Ti",
|
||||
|
||||
"offlineVectorMaps": "Offline vektorske karte",
|
||||
|
||||
"offlineVectorMapsDescription": "Uvezite i upravljajte offline vektorskim pločicama karata (MBTiles format) za upotrebu bez internetske veze",
|
||||
|
||||
"importMbtiles": "Uvezi MBTiles datoteku",
|
||||
|
||||
"importMbtilesNote": "Podržava MBTiles datoteke s vektorskim pločicama (PBF/MVT format). Geofabrik izvodi odlično rade!",
|
||||
|
||||
"noMbtilesFiles": "Nisu pronađene offline vektorske karte",
|
||||
|
||||
"mbtilesImportedSuccessfully": "MBTiles datoteka uspješno uvezena",
|
||||
|
||||
"failedToImportMbtiles": "Neuspjeli uvoz MBTiles datoteke",
|
||||
|
||||
"deleteMbtilesConfirmTitle": "Izbriši offline kartu",
|
||||
|
||||
"deleteMbtilesConfirmMessage": "Jeste li sigurni da želite izbrisati \"{name}\"? Ovo će trajno ukloniti offline kartu.",
|
||||
|
||||
"mbtilesDeletedSuccessfully": "Offline karta uspješno izbrisana",
|
||||
|
||||
"failedToDeleteMbtiles": "Neuspjelo brisanje offline karte",
|
||||
|
||||
"vectorTiles": "Vektorske pločice",
|
||||
|
||||
"schema": "Shema",
|
||||
|
||||
"unknown": "Nepoznato",
|
||||
|
||||
"bounds": "Granice",
|
||||
|
||||
"onlineLayers": "Mrežni slojevi",
|
||||
|
||||
"offlineLayers": "Offline slojevi"
|
||||
}
|
||||
|
||||
@@ -1910,6 +1910,108 @@ abstract class AppLocalizations {
|
||||
/// In en, this message translates to:
|
||||
/// **'You'**
|
||||
String get you;
|
||||
|
||||
/// Title for offline vector maps section
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Offline Vector Maps'**
|
||||
String get offlineVectorMaps;
|
||||
|
||||
/// Description for offline vector maps section
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Import and manage offline vector map tiles (MBTiles format) for use without internet connection'**
|
||||
String get offlineVectorMapsDescription;
|
||||
|
||||
/// Button to import MBTiles file
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Import MBTiles File'**
|
||||
String get importMbtiles;
|
||||
|
||||
/// Note about supported MBTiles file types
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Supports MBTiles files with vector tiles (PBF/MVT format). Geofabrik extracts work great!'**
|
||||
String get importMbtilesNote;
|
||||
|
||||
/// Message when no MBTiles files are available
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No offline vector maps found'**
|
||||
String get noMbtilesFiles;
|
||||
|
||||
/// Success message after importing MBTiles file
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'MBTiles file imported successfully'**
|
||||
String get mbtilesImportedSuccessfully;
|
||||
|
||||
/// Error message when MBTiles import fails
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Failed to import MBTiles file'**
|
||||
String get failedToImportMbtiles;
|
||||
|
||||
/// Title for delete MBTiles confirmation dialog
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Delete Offline Map'**
|
||||
String get deleteMbtilesConfirmTitle;
|
||||
|
||||
/// Confirmation message for deleting MBTiles file
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Are you sure you want to delete \"{name}\"? This will permanently remove the offline map.'**
|
||||
String deleteMbtilesConfirmMessage(String name);
|
||||
|
||||
/// Success message after deleting MBTiles file
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Offline map deleted successfully'**
|
||||
String get mbtilesDeletedSuccessfully;
|
||||
|
||||
/// Error message when MBTiles deletion fails
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Failed to delete offline map'**
|
||||
String get failedToDeleteMbtiles;
|
||||
|
||||
/// Label for vector tile type
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Vector Tiles'**
|
||||
String get vectorTiles;
|
||||
|
||||
/// Label for vector tile schema
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Schema'**
|
||||
String get schema;
|
||||
|
||||
/// Unknown value label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Unknown'**
|
||||
String get unknown;
|
||||
|
||||
/// Label for geographic bounds
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Bounds'**
|
||||
String get bounds;
|
||||
|
||||
/// Section header for online map layers
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Online Layers'**
|
||||
String get onlineLayers;
|
||||
|
||||
/// Section header for offline map layers (MBTiles)
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Offline Layers'**
|
||||
String get offlineLayers;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
||||
@@ -1041,4 +1041,60 @@ class AppLocalizationsEn extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get you => 'You';
|
||||
|
||||
@override
|
||||
String get offlineVectorMaps => 'Offline Vector Maps';
|
||||
|
||||
@override
|
||||
String get offlineVectorMapsDescription =>
|
||||
'Import and manage offline vector map tiles (MBTiles format) for use without internet connection';
|
||||
|
||||
@override
|
||||
String get importMbtiles => 'Import MBTiles File';
|
||||
|
||||
@override
|
||||
String get importMbtilesNote =>
|
||||
'Supports MBTiles files with vector tiles (PBF/MVT format). Geofabrik extracts work great!';
|
||||
|
||||
@override
|
||||
String get noMbtilesFiles => 'No offline vector maps found';
|
||||
|
||||
@override
|
||||
String get mbtilesImportedSuccessfully =>
|
||||
'MBTiles file imported successfully';
|
||||
|
||||
@override
|
||||
String get failedToImportMbtiles => 'Failed to import MBTiles file';
|
||||
|
||||
@override
|
||||
String get deleteMbtilesConfirmTitle => 'Delete Offline Map';
|
||||
|
||||
@override
|
||||
String deleteMbtilesConfirmMessage(String name) {
|
||||
return 'Are you sure you want to delete \"$name\"? This will permanently remove the offline map.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get mbtilesDeletedSuccessfully => 'Offline map deleted successfully';
|
||||
|
||||
@override
|
||||
String get failedToDeleteMbtiles => 'Failed to delete offline map';
|
||||
|
||||
@override
|
||||
String get vectorTiles => 'Vector Tiles';
|
||||
|
||||
@override
|
||||
String get schema => 'Schema';
|
||||
|
||||
@override
|
||||
String get unknown => 'Unknown';
|
||||
|
||||
@override
|
||||
String get bounds => 'Bounds';
|
||||
|
||||
@override
|
||||
String get onlineLayers => 'Online Layers';
|
||||
|
||||
@override
|
||||
String get offlineLayers => 'Offline Layers';
|
||||
}
|
||||
|
||||
@@ -1043,4 +1043,59 @@ class AppLocalizationsHr extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get you => 'Ti';
|
||||
|
||||
@override
|
||||
String get offlineVectorMaps => 'Offline vektorske karte';
|
||||
|
||||
@override
|
||||
String get offlineVectorMapsDescription =>
|
||||
'Uvezite i upravljajte offline vektorskim pločicama karata (MBTiles format) za upotrebu bez internetske veze';
|
||||
|
||||
@override
|
||||
String get importMbtiles => 'Uvezi MBTiles datoteku';
|
||||
|
||||
@override
|
||||
String get importMbtilesNote =>
|
||||
'Podržava MBTiles datoteke s vektorskim pločicama (PBF/MVT format). Geofabrik izvodi odlično rade!';
|
||||
|
||||
@override
|
||||
String get noMbtilesFiles => 'Nisu pronađene offline vektorske karte';
|
||||
|
||||
@override
|
||||
String get mbtilesImportedSuccessfully => 'MBTiles datoteka uspješno uvezena';
|
||||
|
||||
@override
|
||||
String get failedToImportMbtiles => 'Neuspjeli uvoz MBTiles datoteke';
|
||||
|
||||
@override
|
||||
String get deleteMbtilesConfirmTitle => 'Izbriši offline kartu';
|
||||
|
||||
@override
|
||||
String deleteMbtilesConfirmMessage(String name) {
|
||||
return 'Jeste li sigurni da želite izbrisati \"$name\"? Ovo će trajno ukloniti offline kartu.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get mbtilesDeletedSuccessfully => 'Offline karta uspješno izbrisana';
|
||||
|
||||
@override
|
||||
String get failedToDeleteMbtiles => 'Neuspjelo brisanje offline karte';
|
||||
|
||||
@override
|
||||
String get vectorTiles => 'Vektorske pločice';
|
||||
|
||||
@override
|
||||
String get schema => 'Shema';
|
||||
|
||||
@override
|
||||
String get unknown => 'Nepoznato';
|
||||
|
||||
@override
|
||||
String get bounds => 'Granice';
|
||||
|
||||
@override
|
||||
String get onlineLayers => 'Mrežni slojevi';
|
||||
|
||||
@override
|
||||
String get offlineLayers => 'Offline slojevi';
|
||||
}
|
||||
|
||||
@@ -1043,4 +1043,62 @@ class AppLocalizationsSl extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get you => 'Ti';
|
||||
|
||||
@override
|
||||
String get offlineVectorMaps => 'Brezpovezni vektorski zemljevidi';
|
||||
|
||||
@override
|
||||
String get offlineVectorMapsDescription =>
|
||||
'Uvozite in upravljajte brezpovezne vektorske ploščice zemljevidov (format MBTiles) za uporabo brez internetne povezave';
|
||||
|
||||
@override
|
||||
String get importMbtiles => 'Uvozi MBTiles datoteko';
|
||||
|
||||
@override
|
||||
String get importMbtilesNote =>
|
||||
'Podpira MBTiles datoteke z vektorskimi ploščicami (format PBF/MVT). Geofabrik izvozi odlično delujejo!';
|
||||
|
||||
@override
|
||||
String get noMbtilesFiles =>
|
||||
'Ni najdenih brezpoveznih vektorskih zemljevidov';
|
||||
|
||||
@override
|
||||
String get mbtilesImportedSuccessfully => 'MBTiles datoteka uspešno uvožena';
|
||||
|
||||
@override
|
||||
String get failedToImportMbtiles => 'Uvoz MBTiles datoteke ni uspel';
|
||||
|
||||
@override
|
||||
String get deleteMbtilesConfirmTitle => 'Izbriši brezpovezni zemljevid';
|
||||
|
||||
@override
|
||||
String deleteMbtilesConfirmMessage(String name) {
|
||||
return 'Ste prepričani, da želite izbrisati \"$name\"? To bo trajno odstranilo brezpovezni zemljevid.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get mbtilesDeletedSuccessfully =>
|
||||
'Brezpovezni zemljevid uspešno izbrisan';
|
||||
|
||||
@override
|
||||
String get failedToDeleteMbtiles =>
|
||||
'Brisanje brezpoveznega zemljevida ni uspelo';
|
||||
|
||||
@override
|
||||
String get vectorTiles => 'Vektorske ploščice';
|
||||
|
||||
@override
|
||||
String get schema => 'Shema';
|
||||
|
||||
@override
|
||||
String get unknown => 'Neznano';
|
||||
|
||||
@override
|
||||
String get bounds => 'Meje';
|
||||
|
||||
@override
|
||||
String get onlineLayers => 'Spletne plasti';
|
||||
|
||||
@override
|
||||
String get offlineLayers => 'Brezpovezne plasti';
|
||||
}
|
||||
|
||||
@@ -594,5 +594,39 @@
|
||||
"txPowerDbm": "Izhodna moč (dBm)",
|
||||
"maxPowerDbm": "Največ: {power} dBm",
|
||||
|
||||
"you": "Ti"
|
||||
"you": "Ti",
|
||||
|
||||
"offlineVectorMaps": "Brezpovezni vektorski zemljevidi",
|
||||
|
||||
"offlineVectorMapsDescription": "Uvozite in upravljajte brezpovezne vektorske ploščice zemljevidov (format MBTiles) za uporabo brez internetne povezave",
|
||||
|
||||
"importMbtiles": "Uvozi MBTiles datoteko",
|
||||
|
||||
"importMbtilesNote": "Podpira MBTiles datoteke z vektorskimi ploščicami (format PBF/MVT). Geofabrik izvozi odlično delujejo!",
|
||||
|
||||
"noMbtilesFiles": "Ni najdenih brezpoveznih vektorskih zemljevidov",
|
||||
|
||||
"mbtilesImportedSuccessfully": "MBTiles datoteka uspešno uvožena",
|
||||
|
||||
"failedToImportMbtiles": "Uvoz MBTiles datoteke ni uspel",
|
||||
|
||||
"deleteMbtilesConfirmTitle": "Izbriši brezpovezni zemljevid",
|
||||
|
||||
"deleteMbtilesConfirmMessage": "Ste prepričani, da želite izbrisati \"{name}\"? To bo trajno odstranilo brezpovezni zemljevid.",
|
||||
|
||||
"mbtilesDeletedSuccessfully": "Brezpovezni zemljevid uspešno izbrisan",
|
||||
|
||||
"failedToDeleteMbtiles": "Brisanje brezpoveznega zemljevida ni uspelo",
|
||||
|
||||
"vectorTiles": "Vektorske ploščice",
|
||||
|
||||
"schema": "Shema",
|
||||
|
||||
"unknown": "Neznano",
|
||||
|
||||
"bounds": "Meje",
|
||||
|
||||
"onlineLayers": "Spletne plasti",
|
||||
|
||||
"offlineLayers": "Brezpovezne plasti"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user