diff options
-rw-r--r-- | map/bookmark_helpers.cpp | 499 |
1 files changed, 179 insertions, 320 deletions
diff --git a/map/bookmark_helpers.cpp b/map/bookmark_helpers.cpp index a119da8bef..ae1f35bf56 100644 --- a/map/bookmark_helpers.cpp +++ b/map/bookmark_helpers.cpp @@ -27,322 +27,181 @@ namespace { -std::map<std::string, kml::BookmarkIcon> const kFeatureTypeToBookmarkIcon = { - {"amenity-veterinary", kml::BookmarkIcon::Animals}, - {"leisure-dog_park", kml::BookmarkIcon::Animals}, - {"tourism-zoo", kml::BookmarkIcon::Animals}, - - {"amenity-bar", kml::BookmarkIcon::Bar}, - {"amenity-biergarten", kml::BookmarkIcon::Bar}, - {"amenity-pub", kml::BookmarkIcon::Bar}, - - {"amenity-place_of_worship-buddhist", kml::BookmarkIcon::Buddhism}, - - {"amenity-college", kml::BookmarkIcon::Building}, - {"amenity-courthouse", kml::BookmarkIcon::Building}, - {"amenity-embassy", kml::BookmarkIcon::Building}, - {"amenity-kindergarten", kml::BookmarkIcon::Building}, - {"amenity-library", kml::BookmarkIcon::Building}, - {"amenity-police", kml::BookmarkIcon::Building}, - {"amenity-prison", kml::BookmarkIcon::Building}, - {"amenity-school", kml::BookmarkIcon::Building}, - {"building-train_station", kml::BookmarkIcon::Building}, - {"building-university", kml::BookmarkIcon::Building}, - {"office", kml::BookmarkIcon::Building}, - {"office-lawyer", kml::BookmarkIcon::Building}, - - {"amenity-grave_yard-christian", kml::BookmarkIcon::Christianity}, - {"amenity-place_of_worship-christian", kml::BookmarkIcon::Christianity}, - {"landuse-cemetery-christian", kml::BookmarkIcon::Christianity}, - - {"amenity-casino", kml::BookmarkIcon::Entertainment}, - {"amenity-cinema", kml::BookmarkIcon::Entertainment}, - {"amenity-nightclub", kml::BookmarkIcon::Entertainment}, - {"amenity-theatre", kml::BookmarkIcon::Entertainment}, - {"leisure-playground", kml::BookmarkIcon::Entertainment}, - {"leisure-water_park", kml::BookmarkIcon::Entertainment}, - {"shop-bookmaker", kml::BookmarkIcon::Entertainment}, - {"tourism-theme_park", kml::BookmarkIcon::Entertainment}, - - {"amenity-atm", kml::BookmarkIcon::Exchange}, - {"amenity-bank", kml::BookmarkIcon::Exchange}, - {"amenity-bureau_de_change", kml::BookmarkIcon::Exchange}, - - {"amenity-bbq", kml::BookmarkIcon::Food}, - {"amenity-cafe", kml::BookmarkIcon::Food}, - {"amenity-fast_food", kml::BookmarkIcon::Food}, - {"amenity-food_court", kml::BookmarkIcon::Food}, - {"amenity-restaurant", kml::BookmarkIcon::Food}, - {"leisure-picnic_table", kml::BookmarkIcon::Food}, - {"tourism-picnic_site", kml::BookmarkIcon::Food}, - - {"amenity-charging_station", kml::BookmarkIcon::Gas}, - {"amenity-fuel", kml::BookmarkIcon::Gas}, - - {"sponsored-booking", kml::BookmarkIcon::Hotel}, - {"tourism-alpine_hut", kml::BookmarkIcon::Hotel}, - {"tourism-camp_site", kml::BookmarkIcon::Hotel}, - {"tourism-chalet", kml::BookmarkIcon::Hotel}, - {"tourism-guest_house", kml::BookmarkIcon::Hotel}, - {"tourism-hostel", kml::BookmarkIcon::Hotel}, - {"tourism-hotel", kml::BookmarkIcon::Hotel}, - {"tourism-motel", kml::BookmarkIcon::Hotel}, - {"tourism-resort", kml::BookmarkIcon::Hotel}, - {"tourism-wilderness_hut", kml::BookmarkIcon::Hotel}, - {"tourism-apartment", kml::BookmarkIcon::Hotel}, - - {"amenity-place_of_worship-muslim", kml::BookmarkIcon::Islam}, - - {"amenity-place_of_worship-jewish", kml::BookmarkIcon::Judaism}, - - {"amenity-childcare", kml::BookmarkIcon::Medicine}, - {"amenity-clinic", kml::BookmarkIcon::Medicine}, - {"amenity-dentist", kml::BookmarkIcon::Medicine}, - {"amenity-doctors", kml::BookmarkIcon::Medicine}, - {"amenity-hospital", kml::BookmarkIcon::Medicine}, - {"amenity-pharmacy", kml::BookmarkIcon::Medicine}, - {"emergency-defibrillator", kml::BookmarkIcon::Medicine}, - - {"natural-bare_rock", kml::BookmarkIcon::Mountain}, - {"natural-cave_entrance", kml::BookmarkIcon::Mountain}, - {"natural-peak", kml::BookmarkIcon::Mountain}, - {"natural-rock", kml::BookmarkIcon::Mountain}, - {"natural-volcano", kml::BookmarkIcon::Mountain}, - - {"amenity-arts_centre", kml::BookmarkIcon::Museum}, - {"tourism-gallery", kml::BookmarkIcon::Museum}, - {"tourism-museum", kml::BookmarkIcon::Museum}, - - {"boundary-national_park", kml::BookmarkIcon::Park}, - {"landuse-forest", kml::BookmarkIcon::Park}, - {"leisure-garden", kml::BookmarkIcon::Park}, - {"leisure-nature_reserve", kml::BookmarkIcon::Park}, - {"leisure-park", kml::BookmarkIcon::Park}, - - {"amenity-bicycle_parking", kml::BookmarkIcon::Parking}, - {"amenity-motorcycle_parking", kml::BookmarkIcon::Parking}, - {"amenity-parking", kml::BookmarkIcon::Parking}, - {"highway-services", kml::BookmarkIcon::Parking}, - {"tourism-caravan_site", kml::BookmarkIcon::Parking}, - {"vending-parking_tickets", kml::BookmarkIcon::Parking}, - - {"amenity-ice_cream", kml::BookmarkIcon::Shop}, - {"amenity-marketplace", kml::BookmarkIcon::Shop}, - {"amenity-vending_machine", kml::BookmarkIcon::Shop}, - {"shop", kml::BookmarkIcon::Shop}, - - {"amenity-place_of_worship", kml::BookmarkIcon::Sights}, - {"historic-archaeological_site", kml::BookmarkIcon::Sights}, - {"historic-boundary_stone", kml::BookmarkIcon::Sights}, - {"historic-castle", kml::BookmarkIcon::Sights}, - {"historic-fort", kml::BookmarkIcon::Sights}, - {"historic-memorial", kml::BookmarkIcon::Sights}, - {"historic-monument", kml::BookmarkIcon::Sights}, - {"historic-ruins", kml::BookmarkIcon::Sights}, - {"historic-ship", kml::BookmarkIcon::Sights}, - {"historic-tomb", kml::BookmarkIcon::Sights}, - {"historic-wayside_cross", kml::BookmarkIcon::Sights}, - {"historic-wayside_shrine", kml::BookmarkIcon::Sights}, - {"tourism-artwork", kml::BookmarkIcon::Sights}, - {"tourism-attraction", kml::BookmarkIcon::Sights}, - {"waterway-waterfall", kml::BookmarkIcon::Sights}, - - {"leisure-fitness_centre", kml::BookmarkIcon::Sport}, - {"leisure-skiing", kml::BookmarkIcon::Sport}, - {"leisure-sports_centre-climbing", kml::BookmarkIcon::Sport}, - {"leisure-sports_centre-shooting", kml::BookmarkIcon::Sport}, - {"leisure-sports_centre-yoga", kml::BookmarkIcon::Sport}, - {"leisure-stadium", kml::BookmarkIcon::Sport}, - {"olympics-bike_sport", kml::BookmarkIcon::Sport}, - {"olympics-stadium", kml::BookmarkIcon::Sport}, - {"olympics-stadium_main", kml::BookmarkIcon::Sport}, - {"sport", kml::BookmarkIcon::Sport}, - - {"leisure-sports_centre-swimming", kml::BookmarkIcon::Swim}, - {"leisure-swimming_pool", kml::BookmarkIcon::Swim}, - {"natural-beach", kml::BookmarkIcon::Swim}, - {"olympics-water_sport", kml::BookmarkIcon::Swim}, - {"sport-diving", kml::BookmarkIcon::Swim}, - {"sport-scuba_diving", kml::BookmarkIcon::Swim}, - {"sport-swimming", kml::BookmarkIcon::Swim}, - - {"aeroway-aerodrome", kml::BookmarkIcon::Transport}, - {"aeroway-aerodrome-international", kml::BookmarkIcon::Transport}, - {"amenity-bus_station", kml::BookmarkIcon::Transport}, - {"amenity-car_sharing", kml::BookmarkIcon::Transport}, - {"amenity-ferry_terminal", kml::BookmarkIcon::Transport}, - {"amenity-taxi", kml::BookmarkIcon::Transport}, - {"building-train_station", kml::BookmarkIcon::Transport}, - {"highway-bus_stop", kml::BookmarkIcon::Transport}, - {"highway-platform", kml::BookmarkIcon::Transport}, - {"public_transport-platform", kml::BookmarkIcon::Transport}, - {"railway-station", kml::BookmarkIcon::Transport}, - {"railway-station-light_rail", kml::BookmarkIcon::Transport}, - {"railway-station-monorail", kml::BookmarkIcon::Transport}, - {"railway-station-subway", kml::BookmarkIcon::Transport}, - {"railway-tram_stop", kml::BookmarkIcon::Transport}, - - {"tourism-viewpoint", kml::BookmarkIcon::Viewpoint}, - - {"amenity-drinking_water", kml::BookmarkIcon::Water}, - {"amenity-fountain", kml::BookmarkIcon::Water}, - {"amenity-water_point", kml::BookmarkIcon::Water}, - {"man_made-water_tap", kml::BookmarkIcon::Water}, - {"natural-spring", kml::BookmarkIcon::Water}, - - {"shop-funeral_directors", kml::BookmarkIcon::None} +struct BookmarkMatchInfo +{ + BookmarkMatchInfo(kml::BookmarkIcon icon, BookmarkBaseType type) + : m_icon(icon) + , m_type(type) + {} + + kml::BookmarkIcon m_icon; + BookmarkBaseType m_type; }; -std::map<std::string, BookmarkBaseType> const kFeatureTypeToBookmarkType = { - {"amenity-veterinary", BookmarkBaseType::Animals}, - {"leisure-dog_park", BookmarkBaseType::Animals}, - {"tourism-zoo", BookmarkBaseType::Animals}, - - {"amenity-college", BookmarkBaseType::Building}, - {"amenity-courthouse", BookmarkBaseType::Building}, - {"amenity-embassy", BookmarkBaseType::Building}, - {"amenity-kindergarten", BookmarkBaseType::Building}, - {"amenity-library", BookmarkBaseType::Building}, - {"amenity-police", BookmarkBaseType::Building}, - {"amenity-prison", BookmarkBaseType::Building}, - {"amenity-school", BookmarkBaseType::Building}, - {"building-train_station", BookmarkBaseType::Building}, - {"building-university", BookmarkBaseType::Building}, - {"office", BookmarkBaseType::Building}, - {"office-lawyer", BookmarkBaseType::Building}, - - {"amenity-casino", BookmarkBaseType::Entertainment}, - {"amenity-cinema", BookmarkBaseType::Entertainment}, - {"amenity-nightclub", BookmarkBaseType::Entertainment}, - {"amenity-theatre", BookmarkBaseType::Entertainment}, - {"leisure-water_park", BookmarkBaseType::Entertainment}, - {"leisure-playground", BookmarkBaseType::Entertainment}, - {"shop-bookmaker", BookmarkBaseType::Entertainment}, - - // Sport - {"leisure-fitness_centre", BookmarkBaseType::Entertainment}, - {"leisure-sports_centre-climbing", BookmarkBaseType::Entertainment}, - {"leisure-sports_centre-shooting", BookmarkBaseType::Entertainment}, - {"leisure-sports_centre-yoga", BookmarkBaseType::Entertainment}, - {"leisure-stadium", BookmarkBaseType::Entertainment}, - {"olympics-bike_sport", BookmarkBaseType::Entertainment}, - {"olympics-stadium", BookmarkBaseType::Entertainment}, - {"olympics-stadium_main", BookmarkBaseType::Entertainment}, - {"sport", BookmarkBaseType::Entertainment}, - {"tourism-theme_park", BookmarkBaseType::Entertainment}, - - {"amenity-atm", BookmarkBaseType::Exchange}, - {"amenity-bank", BookmarkBaseType::Exchange}, - {"amenity-bureau_de_change", BookmarkBaseType::Exchange}, - - {"amenity-bbq", BookmarkBaseType::Food}, - {"amenity-cafe", BookmarkBaseType::Food}, - {"amenity-fast_food", BookmarkBaseType::Food}, - {"amenity-food_court", BookmarkBaseType::Food}, - {"amenity-restaurant", BookmarkBaseType::Food}, - {"leisure-picnic_table", BookmarkBaseType::Food}, - {"tourism-picnic_site", BookmarkBaseType::Food}, - // Bars - {"amenity-bar", BookmarkBaseType::Food}, - {"amenity-biergarten", BookmarkBaseType::Food}, - {"amenity-pub", BookmarkBaseType::Food}, - - {"amenity-charging_station", BookmarkBaseType::Gas}, - {"amenity-fuel", BookmarkBaseType::Gas}, - - {"sponsored-booking", BookmarkBaseType::Hotel}, - {"tourism-alpine_hut", BookmarkBaseType::Hotel}, - {"tourism-apartment", BookmarkBaseType::Hotel}, - {"tourism-camp_site", BookmarkBaseType::Hotel}, - {"tourism-chalet", BookmarkBaseType::Hotel}, - {"tourism-guest_house", BookmarkBaseType::Hotel}, - {"tourism-hostel", BookmarkBaseType::Hotel}, - {"tourism-hotel", BookmarkBaseType::Hotel}, - {"tourism-motel", BookmarkBaseType::Hotel}, - {"tourism-resort", BookmarkBaseType::Hotel}, - {"tourism-wilderness_hut", BookmarkBaseType::Hotel}, - - {"amenity-childcare", BookmarkBaseType::Medicine}, - {"amenity-clinic", BookmarkBaseType::Medicine}, - {"amenity-dentist", BookmarkBaseType::Medicine}, - {"amenity-doctors", BookmarkBaseType::Medicine}, - {"amenity-hospital", BookmarkBaseType::Medicine}, - {"amenity-pharmacy", BookmarkBaseType::Medicine}, - {"emergency-defibrillator", BookmarkBaseType::Medicine}, - - {"natural-bare_rock", BookmarkBaseType::Mountain}, - {"natural-cave_entrance", BookmarkBaseType::Mountain}, - {"natural-peak", BookmarkBaseType::Mountain}, - {"natural-rock", BookmarkBaseType::Mountain}, - {"natural-volcano", BookmarkBaseType::Mountain}, - - {"amenity-arts_centre", BookmarkBaseType::Museum}, - {"tourism-gallery", BookmarkBaseType::Museum}, - {"tourism-museum", BookmarkBaseType::Museum}, - - {"boundary-national_park", BookmarkBaseType::Park}, - {"landuse-forest", BookmarkBaseType::Park}, - {"leisure-garden", BookmarkBaseType::Park}, - {"leisure-nature_reserve", BookmarkBaseType::Park}, - {"leisure-park", BookmarkBaseType::Park}, - - {"amenity-bicycle_parking", BookmarkBaseType::Parking}, - {"amenity-motorcycle_parking", BookmarkBaseType::Parking}, - {"amenity-parking", BookmarkBaseType::Parking}, - {"highway-services", BookmarkBaseType::Parking}, - {"tourism-caravan_site", BookmarkBaseType::Parking}, - {"vending-parking_tickets", BookmarkBaseType::Parking}, - - // Christianity - {"amenity-grave_yard-christian", BookmarkBaseType::ReligiousPlace}, - {"amenity-place_of_worship-christian", BookmarkBaseType::ReligiousPlace}, - {"landuse-cemetery-christian", BookmarkBaseType::ReligiousPlace}, - // Judaism - {"amenity-place_of_worship-jewish", BookmarkBaseType::ReligiousPlace}, - // Buddhism - {"amenity-place_of_worship-buddhist", BookmarkBaseType::ReligiousPlace}, - // Islam - {"amenity-place_of_worship-muslim", BookmarkBaseType::ReligiousPlace}, - // Sights - {"amenity-place_of_worship", BookmarkBaseType::ReligiousPlace}, - - {"amenity-ice_cream", BookmarkBaseType::Shop}, - {"amenity-marketplace", BookmarkBaseType::Shop}, - {"amenity-vending_machine", BookmarkBaseType::Shop}, - {"shop", BookmarkBaseType::Shop}, - - {"historic-archaeological_site", BookmarkBaseType::Sights}, - {"historic-boundary_stone", BookmarkBaseType::Sights}, - {"historic-castle", BookmarkBaseType::Sights}, - {"historic-fort", BookmarkBaseType::Sights}, - {"historic-memorial", BookmarkBaseType::Sights}, - {"historic-monument", BookmarkBaseType::Sights}, - {"historic-ruins", BookmarkBaseType::Sights}, - {"historic-ship", BookmarkBaseType::Sights}, - {"historic-tomb", BookmarkBaseType::Sights}, - {"historic-wayside_cross", BookmarkBaseType::Sights}, - {"historic-wayside_shrine", BookmarkBaseType::Sights}, - {"tourism-artwork", BookmarkBaseType::Sights}, - {"tourism-attraction", BookmarkBaseType::Sights}, - {"waterway-waterfall", BookmarkBaseType::Sights}, - // Viewpoint - {"tourism-viewpoint", BookmarkBaseType::Sights}, - - {"leisure-sports_centre-swimming", BookmarkBaseType::Swim}, - {"leisure-swimming_pool", BookmarkBaseType::Swim}, - {"natural-beach", BookmarkBaseType::Swim}, - {"olympics-water_sport", BookmarkBaseType::Swim}, - {"sport-diving", BookmarkBaseType::Swim}, - {"sport-scuba_diving", BookmarkBaseType::Swim}, - {"sport-swimming", BookmarkBaseType::Swim}, - - {"amenity-drinking_water", BookmarkBaseType::Water}, - {"amenity-fountain", BookmarkBaseType::Water}, - {"amenity-water_point", BookmarkBaseType::Water}, - {"man_made-water_tap", BookmarkBaseType::Water}, - {"natural-spring", BookmarkBaseType::Water}, - - {"shop-funeral_directors", BookmarkBaseType::None} +std::map<std::string, BookmarkMatchInfo> const kFeatureTypeToBookmarkMatchInfo = { + {"amenity-veterinary", {kml::BookmarkIcon::Animals, BookmarkBaseType::Animals}}, + {"leisure-dog_park", {kml::BookmarkIcon::Animals, BookmarkBaseType::Animals}}, + {"tourism-zoo", {kml::BookmarkIcon::Animals, BookmarkBaseType::Animals}}, + + {"amenity-bar", {kml::BookmarkIcon::Bar, BookmarkBaseType::Food}}, + {"amenity-biergarten", {kml::BookmarkIcon::Bar, BookmarkBaseType::Food}}, + {"amenity-pub", {kml::BookmarkIcon::Bar, BookmarkBaseType::Food}}, + + {"amenity-place_of_worship-buddhist", {kml::BookmarkIcon::Buddhism, BookmarkBaseType::ReligiousPlace}}, + + {"amenity-college", {kml::BookmarkIcon::Building, BookmarkBaseType::Building}}, + {"amenity-courthouse", {kml::BookmarkIcon::Building, BookmarkBaseType::Building}}, + {"amenity-embassy", {kml::BookmarkIcon::Building, BookmarkBaseType::Building}}, + {"amenity-kindergarten", {kml::BookmarkIcon::Building, BookmarkBaseType::Building}}, + {"amenity-library", {kml::BookmarkIcon::Building, BookmarkBaseType::Building}}, + {"amenity-police", {kml::BookmarkIcon::Building, BookmarkBaseType::Building}}, + {"amenity-prison", {kml::BookmarkIcon::Building, BookmarkBaseType::Building}}, + {"amenity-school", {kml::BookmarkIcon::Building, BookmarkBaseType::Building}}, + {"building-train_station", {kml::BookmarkIcon::Building, BookmarkBaseType::Building}}, + {"building-university", {kml::BookmarkIcon::Building, BookmarkBaseType::Building}}, + {"office", {kml::BookmarkIcon::Building, BookmarkBaseType::Building}}, + {"office-lawyer", {kml::BookmarkIcon::Building, BookmarkBaseType::Building}}, + + {"amenity-grave_yard-christian", {kml::BookmarkIcon::Christianity, BookmarkBaseType::ReligiousPlace}}, + {"amenity-place_of_worship-christian", {kml::BookmarkIcon::Christianity, BookmarkBaseType::ReligiousPlace}}, + {"landuse-cemetery-christian", {kml::BookmarkIcon::Christianity, BookmarkBaseType::ReligiousPlace}}, + + {"amenity-casino", {kml::BookmarkIcon::Entertainment, BookmarkBaseType::Entertainment}}, + {"amenity-cinema", {kml::BookmarkIcon::Entertainment, BookmarkBaseType::Entertainment}}, + {"amenity-nightclub", {kml::BookmarkIcon::Entertainment, BookmarkBaseType::Entertainment}}, + {"amenity-theatre", {kml::BookmarkIcon::Entertainment, BookmarkBaseType::Entertainment}}, + {"leisure-playground", {kml::BookmarkIcon::Entertainment, BookmarkBaseType::Entertainment}}, + {"leisure-water_park", {kml::BookmarkIcon::Entertainment, BookmarkBaseType::Entertainment}}, + {"shop-bookmaker", {kml::BookmarkIcon::Entertainment, BookmarkBaseType::Entertainment}}, + {"tourism-theme_park", {kml::BookmarkIcon::Entertainment, BookmarkBaseType::Entertainment}}, + + {"amenity-atm", {kml::BookmarkIcon::Exchange, BookmarkBaseType::Exchange}}, + {"amenity-bank", {kml::BookmarkIcon::Exchange, BookmarkBaseType::Exchange}}, + {"amenity-bureau_de_change", {kml::BookmarkIcon::Exchange, BookmarkBaseType::Exchange}}, + + {"amenity-bbq", {kml::BookmarkIcon::Food, BookmarkBaseType::Food}}, + {"amenity-cafe", {kml::BookmarkIcon::Food, BookmarkBaseType::Food}}, + {"amenity-fast_food", {kml::BookmarkIcon::Food, BookmarkBaseType::Food}}, + {"amenity-food_court", {kml::BookmarkIcon::Food, BookmarkBaseType::Food}}, + {"amenity-restaurant", {kml::BookmarkIcon::Food, BookmarkBaseType::Food}}, + {"leisure-picnic_table", {kml::BookmarkIcon::Food, BookmarkBaseType::Food}}, + {"tourism-picnic_site", {kml::BookmarkIcon::Food, BookmarkBaseType::Food}}, + + {"amenity-charging_station", {kml::BookmarkIcon::Gas, BookmarkBaseType::Gas}}, + {"amenity-fuel", {kml::BookmarkIcon::Gas, BookmarkBaseType::Gas}}, + + {"sponsored-booking", {kml::BookmarkIcon::Hotel, BookmarkBaseType::Hotel}}, + {"tourism-alpine_hut", {kml::BookmarkIcon::Hotel, BookmarkBaseType::Hotel}}, + {"tourism-camp_site", {kml::BookmarkIcon::Hotel, BookmarkBaseType::Hotel}}, + {"tourism-chalet", {kml::BookmarkIcon::Hotel, BookmarkBaseType::Hotel}}, + {"tourism-guest_house", {kml::BookmarkIcon::Hotel, BookmarkBaseType::Hotel}}, + {"tourism-hostel", {kml::BookmarkIcon::Hotel, BookmarkBaseType::Hotel}}, + {"tourism-hotel", {kml::BookmarkIcon::Hotel, BookmarkBaseType::Hotel}}, + {"tourism-motel", {kml::BookmarkIcon::Hotel, BookmarkBaseType::Hotel}}, + {"tourism-resort", {kml::BookmarkIcon::Hotel, BookmarkBaseType::Hotel}}, + {"tourism-wilderness_hut", {kml::BookmarkIcon::Hotel, BookmarkBaseType::Hotel}}, + {"tourism-apartment", {kml::BookmarkIcon::Hotel, BookmarkBaseType::Hotel}}, + + {"amenity-place_of_worship-muslim", {kml::BookmarkIcon::Islam, BookmarkBaseType::ReligiousPlace}}, + + {"amenity-place_of_worship-jewish", {kml::BookmarkIcon::Judaism, BookmarkBaseType::ReligiousPlace}}, + + {"amenity-childcare", {kml::BookmarkIcon::Medicine, BookmarkBaseType::Medicine}}, + {"amenity-clinic", {kml::BookmarkIcon::Medicine, BookmarkBaseType::Medicine}}, + {"amenity-dentist", {kml::BookmarkIcon::Medicine, BookmarkBaseType::Medicine}}, + {"amenity-doctors", {kml::BookmarkIcon::Medicine, BookmarkBaseType::Medicine}}, + {"amenity-hospital", {kml::BookmarkIcon::Medicine, BookmarkBaseType::Medicine}}, + {"amenity-pharmacy", {kml::BookmarkIcon::Medicine, BookmarkBaseType::Medicine}}, + {"emergency-defibrillator", {kml::BookmarkIcon::Medicine, BookmarkBaseType::Medicine}}, + + {"natural-bare_rock", {kml::BookmarkIcon::Mountain, BookmarkBaseType::Mountain}}, + {"natural-cave_entrance", {kml::BookmarkIcon::Mountain, BookmarkBaseType::Mountain}}, + {"natural-peak", {kml::BookmarkIcon::Mountain, BookmarkBaseType::Mountain}}, + {"natural-rock", {kml::BookmarkIcon::Mountain, BookmarkBaseType::Mountain}}, + {"natural-volcano", {kml::BookmarkIcon::Mountain, BookmarkBaseType::Mountain}}, + + {"amenity-arts_centre", {kml::BookmarkIcon::Museum, BookmarkBaseType::Museum}}, + {"tourism-gallery", {kml::BookmarkIcon::Museum, BookmarkBaseType::Museum}}, + {"tourism-museum", {kml::BookmarkIcon::Museum, BookmarkBaseType::Museum}}, + + {"boundary-national_park", {kml::BookmarkIcon::Park, BookmarkBaseType::Park}}, + {"landuse-forest", {kml::BookmarkIcon::Park, BookmarkBaseType::Park}}, + {"leisure-garden", {kml::BookmarkIcon::Park, BookmarkBaseType::Park}}, + {"leisure-nature_reserve", {kml::BookmarkIcon::Park, BookmarkBaseType::Park}}, + {"leisure-park", {kml::BookmarkIcon::Park, BookmarkBaseType::Park}}, + + {"amenity-bicycle_parking", {kml::BookmarkIcon::Parking, BookmarkBaseType::Parking}}, + {"amenity-motorcycle_parking", {kml::BookmarkIcon::Parking, BookmarkBaseType::Parking}}, + {"amenity-parking", {kml::BookmarkIcon::Parking, BookmarkBaseType::Parking}}, + {"highway-services", {kml::BookmarkIcon::Parking, BookmarkBaseType::Parking}}, + {"tourism-caravan_site", {kml::BookmarkIcon::Parking, BookmarkBaseType::Parking}}, + {"vending-parking_tickets", {kml::BookmarkIcon::Parking, BookmarkBaseType::Parking}}, + + {"amenity-ice_cream", {kml::BookmarkIcon::Shop, BookmarkBaseType::Shop}}, + {"amenity-marketplace", {kml::BookmarkIcon::Shop, BookmarkBaseType::Shop}}, + {"amenity-vending_machine", {kml::BookmarkIcon::Shop, BookmarkBaseType::Shop}}, + {"shop", {kml::BookmarkIcon::Shop, BookmarkBaseType::Shop}}, + + {"amenity-place_of_worship", {kml::BookmarkIcon::Sights, BookmarkBaseType::ReligiousPlace}}, + {"historic-archaeological_site", {kml::BookmarkIcon::Sights, BookmarkBaseType::Sights}}, + {"historic-boundary_stone", {kml::BookmarkIcon::Sights, BookmarkBaseType::Sights}}, + {"historic-castle", {kml::BookmarkIcon::Sights, BookmarkBaseType::Sights}}, + {"historic-fort", {kml::BookmarkIcon::Sights, BookmarkBaseType::Sights}}, + {"historic-memorial", {kml::BookmarkIcon::Sights, BookmarkBaseType::Sights}}, + {"historic-monument", {kml::BookmarkIcon::Sights, BookmarkBaseType::Sights}}, + {"historic-ruins", {kml::BookmarkIcon::Sights, BookmarkBaseType::Sights}}, + {"historic-ship", {kml::BookmarkIcon::Sights, BookmarkBaseType::Sights}}, + {"historic-tomb", {kml::BookmarkIcon::Sights, BookmarkBaseType::Sights}}, + {"historic-wayside_cross", {kml::BookmarkIcon::Sights, BookmarkBaseType::Sights}}, + {"historic-wayside_shrine", {kml::BookmarkIcon::Sights, BookmarkBaseType::Sights}}, + {"tourism-artwork", {kml::BookmarkIcon::Sights, BookmarkBaseType::Sights}}, + {"tourism-attraction", {kml::BookmarkIcon::Sights, BookmarkBaseType::Sights}}, + {"waterway-waterfall", {kml::BookmarkIcon::Sights, BookmarkBaseType::Sights}}, + + {"leisure-fitness_centre", {kml::BookmarkIcon::Sport, BookmarkBaseType::Entertainment}}, + {"leisure-skiing", {kml::BookmarkIcon::Sport, BookmarkBaseType::Entertainment}}, + {"leisure-sports_centre-climbing", {kml::BookmarkIcon::Sport, BookmarkBaseType::Entertainment}}, + {"leisure-sports_centre-shooting", {kml::BookmarkIcon::Sport, BookmarkBaseType::Entertainment}}, + {"leisure-sports_centre-yoga", {kml::BookmarkIcon::Sport, BookmarkBaseType::Entertainment}}, + {"leisure-stadium", {kml::BookmarkIcon::Sport, BookmarkBaseType::Entertainment}}, + {"olympics-bike_sport", {kml::BookmarkIcon::Sport, BookmarkBaseType::Entertainment}}, + {"olympics-stadium", {kml::BookmarkIcon::Sport, BookmarkBaseType::Entertainment}}, + {"olympics-stadium_main", {kml::BookmarkIcon::Sport, BookmarkBaseType::Entertainment}}, + {"sport", {kml::BookmarkIcon::Sport, BookmarkBaseType::Entertainment}}, + + {"leisure-sports_centre-swimming", {kml::BookmarkIcon::Swim, BookmarkBaseType::Swim}}, + {"leisure-swimming_pool", {kml::BookmarkIcon::Swim, BookmarkBaseType::Swim}}, + {"natural-beach", {kml::BookmarkIcon::Swim, BookmarkBaseType::Swim}}, + {"olympics-water_sport", {kml::BookmarkIcon::Swim, BookmarkBaseType::Swim}}, + {"sport-diving", {kml::BookmarkIcon::Swim, BookmarkBaseType::Swim}}, + {"sport-scuba_diving", {kml::BookmarkIcon::Swim, BookmarkBaseType::Swim}}, + {"sport-swimming", {kml::BookmarkIcon::Swim, BookmarkBaseType::Swim}}, + + {"aeroway-aerodrome", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + {"aeroway-aerodrome-international", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + {"amenity-bus_station", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + {"amenity-car_sharing", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + {"amenity-ferry_terminal", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + {"amenity-taxi", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + {"building-train_station", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + {"highway-bus_stop", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + {"highway-platform", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + {"public_transport-platform", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + {"railway-station", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + {"railway-station-light_rail", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + {"railway-station-monorail", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + {"railway-station-subway", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + {"railway-tram_stop", {kml::BookmarkIcon::Transport, BookmarkBaseType::None}}, + + {"tourism-viewpoint", {kml::BookmarkIcon::Viewpoint, BookmarkBaseType::Sights}}, + + {"amenity-drinking_water", {kml::BookmarkIcon::Water, BookmarkBaseType::Water}}, + {"amenity-fountain", {kml::BookmarkIcon::Water, BookmarkBaseType::Water}}, + {"amenity-water_point", {kml::BookmarkIcon::Water, BookmarkBaseType::Water}}, + {"man_made-water_tap", {kml::BookmarkIcon::Water, BookmarkBaseType::Water}}, + {"natural-spring", {kml::BookmarkIcon::Water, BookmarkBaseType::Water}}, + + {"shop-funeral_directors", {kml::BookmarkIcon::None, BookmarkBaseType::None}} }; void ValidateKmlData(std::unique_ptr<kml::FileData> & data) @@ -544,9 +403,9 @@ BookmarkBaseType GetBookmarkBaseType(std::vector<uint32_t> const & featureTypes) do { - auto const itType = kFeatureTypeToBookmarkType.find(typeStr); - if (itType != kFeatureTypeToBookmarkType.cend()) - return itType->second; + auto const itType = kFeatureTypeToBookmarkMatchInfo.find(typeStr); + if (itType != kFeatureTypeToBookmarkMatchInfo.cend()) + return itType->second.m_type; } while (TruncType(typeStr)); } return BookmarkBaseType::None; @@ -558,9 +417,9 @@ kml::BookmarkIcon GetBookmarkIconByFeatureType(uint32_t type) do { - auto const itIcon = kFeatureTypeToBookmarkIcon.find(typeStr); - if (itIcon != kFeatureTypeToBookmarkIcon.cend()) - return itIcon->second; + auto const itIcon = kFeatureTypeToBookmarkMatchInfo.find(typeStr); + if (itIcon != kFeatureTypeToBookmarkMatchInfo.cend()) + return itIcon->second.m_icon; } while (TruncType(typeStr)); return kml::BookmarkIcon::None; |