From 02dc7773072a01330e811663ea9ec5fa4d7be384 Mon Sep 17 00:00:00 2001 From: Max Kojin Date: Sat, 1 Feb 2025 18:18:40 +0500 Subject: [PATCH] read poi types from custom maps --- Sources/AppHost/OsmAndAppImpl.mm | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/Sources/AppHost/OsmAndAppImpl.mm b/Sources/AppHost/OsmAndAppImpl.mm index ee439a170f..125ec92d61 100644 --- a/Sources/AppHost/OsmAndAppImpl.mm +++ b/Sources/AppHost/OsmAndAppImpl.mm @@ -71,6 +71,10 @@ #include #include #include +#include +#include +#include +#include #include #define k3MonthInSeconds 60 * 60 * 24 * 90 @@ -714,6 +718,7 @@ - (BOOL) initializeImpl [OAPluginsHelper initPlugins]; [OAMigrationManager.shared migrateIfNeeded:_firstLaunch]; [OAPOIHelper sharedInstance]; + [self addPoiTypesFromCustomRegions]; if (_terminating) return NO; @@ -731,6 +736,41 @@ - (BOOL) initializeImpl return YES; } +- (void) addPoiTypesFromCustomRegions +{ + const auto obfsDataInterface = _resourcesManager->obfsCollection->obtainDataInterface(); + for (const auto& obfReader : constOf(obfsDataInterface->obfReaders)) + { + const auto path = obfReader->obfFile->filePath; + const auto& obfInfo = obfReader->obtainInfo(); + for (const auto& poiSection : constOf(obfInfo->poiSections)) + { + OsmAnd::ObfPoiSectionReader::ensureCategoriesLoaded(*obfReader, poiSection); + const auto& categories = poiSection->getCategories(); + const auto& mainCategories = categories->mainCategories; + const auto& subcategoriesList = categories->subCategories; + + for (int i = 0; i < mainCategories.size(); i++) + { + NSString *categoryName = mainCategories[i].toNSString(); + OAPOICategory *poiCategory = [[OAPOIHelper sharedInstance] getPoiCategoryByName:categoryName create:YES]; + + const auto subcategories = subcategoriesList[i]; + for (int j = 0; j < subcategories.size(); j++) + { + NSString *subcategoryName = subcategories[j].toNSString(); + OAPOIType *pt = [[OAPOIType alloc] initWithName:subcategoryName category:poiCategory]; + pt.filter = nil; + pt.tag = @""; + pt.value = @""; + pt.nonEditableOsm = YES; + [poiCategory addPoiType:pt]; + } + } + } + } +} + - (NSString *) generateIndexesUrl { NSMutableString *res = [NSMutableString stringWithFormat:@"https://download.osmand.net/get_indexes?gzip&osmandver=%@", OAAppVersion.getVersionForUrl];