diff options
author | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2018-05-15 14:18:24 +0300 |
---|---|---|
committer | Aleksey Belousov <beloal@users.noreply.github.com> | 2018-05-16 21:37:36 +0300 |
commit | 076cffef794bef7cee14503ed7cbc030f7721d61 (patch) | |
tree | 9f47bde49c898ac2b743a436ad67413fc81ff1ce /map/bookmark_helpers.cpp | |
parent | 7230fc84fb632d0e3d1608a7550951a80f8db1a0 (diff) |
Assign a bookmark icon automatically based on feature types.
Diffstat (limited to 'map/bookmark_helpers.cpp')
-rw-r--r-- | map/bookmark_helpers.cpp | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/map/bookmark_helpers.cpp b/map/bookmark_helpers.cpp index e98ad14256..2d1cf2088f 100644 --- a/map/bookmark_helpers.cpp +++ b/map/bookmark_helpers.cpp @@ -12,8 +12,223 @@ #include "coding/file_reader.hpp" #include "coding/file_writer.hpp" +#include <map> + namespace { +std::map<std::string, kml::BookmarkIcon> const kBookmarkTypeToIcon = { + {"amenity-bbq", kml::BookmarkIcon::Food}, + {"tourism-picnic_site", kml::BookmarkIcon::Food}, + {"leisure-picnic_table", kml::BookmarkIcon::Food}, + {"amenity-cafe", kml::BookmarkIcon::Food}, + {"amenity-restaurant", kml::BookmarkIcon::Food}, + {"amenity-fast_food", kml::BookmarkIcon::Food}, + {"amenity-food_court", kml::BookmarkIcon::Food}, + {"amenity-bar", kml::BookmarkIcon::Food}, + {"amenity-pub", kml::BookmarkIcon::Food}, + {"amenity-biergarten", kml::BookmarkIcon::Food}, + + {"waterway-waterfall", kml::BookmarkIcon::Sights}, + {"historic-tomb", kml::BookmarkIcon::Sights}, + {"historic-boundary_stone", kml::BookmarkIcon::Sights}, + {"historic-ship", kml::BookmarkIcon::Sights}, + {"historic-archaeological_site", kml::BookmarkIcon::Sights}, + {"historic-monument", kml::BookmarkIcon::Sights}, + {"historic-memorial", kml::BookmarkIcon::Sights}, + {"amenity-place_of_worship", kml::BookmarkIcon::Sights}, + {"tourism-attraction", kml::BookmarkIcon::Sights}, + {"tourism-theme_park", kml::BookmarkIcon::Sights}, + {"tourism-viewpoint", kml::BookmarkIcon::Sights}, + {"historic-fort", kml::BookmarkIcon::Sights}, + {"historic-castle", kml::BookmarkIcon::Sights}, + {"tourism-artwork", kml::BookmarkIcon::Sights}, + {"historic-ruins", kml::BookmarkIcon::Sights}, + {"historic-wayside_shrine", kml::BookmarkIcon::Sights}, + {"historic-wayside_cross", kml::BookmarkIcon::Sights}, + + {"tourism-gallery", kml::BookmarkIcon::Museum}, + {"tourism-museum", kml::BookmarkIcon::Museum}, + {"amenity-arts_centre", kml::BookmarkIcon::Museum}, + + {"sport", kml::BookmarkIcon::Entertainment}, + {"sport-multi", kml::BookmarkIcon::Entertainment}, + {"leisure-playground", kml::BookmarkIcon::Entertainment}, + {"leisure-water_park", kml::BookmarkIcon::Entertainment}, + {"amenity-casino", kml::BookmarkIcon::Entertainment}, + {"sport-archery", kml::BookmarkIcon::Entertainment}, + {"sport-shooting", kml::BookmarkIcon::Entertainment}, + {"sport-australian_football", kml::BookmarkIcon::Entertainment}, + {"sport-bowls", kml::BookmarkIcon::Entertainment}, + {"sport-curling", kml::BookmarkIcon::Entertainment}, + {"sport-cricket", kml::BookmarkIcon::Entertainment}, + {"sport-baseball", kml::BookmarkIcon::Entertainment}, + {"sport-basketball", kml::BookmarkIcon::Entertainment}, + {"sport-american_football", kml::BookmarkIcon::Entertainment}, + {"sport-athletics", kml::BookmarkIcon::Entertainment}, + {"sport-golf", kml::BookmarkIcon::Entertainment}, + {"sport-gymnastics", kml::BookmarkIcon::Entertainment}, + {"sport-tennis", kml::BookmarkIcon::Entertainment}, + {"sport-skiing", kml::BookmarkIcon::Entertainment}, + {"sport-soccer", kml::BookmarkIcon::Entertainment}, + {"amenity-nightclub", kml::BookmarkIcon::Entertainment}, + {"amenity-cinema", kml::BookmarkIcon::Entertainment}, + {"amenity-theatre", kml::BookmarkIcon::Entertainment}, + {"leisure-stadium", kml::BookmarkIcon::Entertainment}, + + {"boundary-national_park", kml::BookmarkIcon::Park}, + {"leisure-nature_reserve", kml::BookmarkIcon::Park}, + {"landuse-forest", kml::BookmarkIcon::Park}, + + {"natural-beach", kml::BookmarkIcon::Swim}, + {"sport-diving", kml::BookmarkIcon::Swim}, + {"sport-scuba_diving", kml::BookmarkIcon::Swim}, + {"sport-swimming", kml::BookmarkIcon::Swim}, + {"leisure-swimming_pool", kml::BookmarkIcon::Swim}, + + {"natural-cave_entrance", kml::BookmarkIcon::Mountain}, + {"natural-peak", kml::BookmarkIcon::Mountain}, + {"natural-volcano", kml::BookmarkIcon::Mountain}, + {"natural-rock", kml::BookmarkIcon::Mountain}, + {"natural-bare_rock", kml::BookmarkIcon::Mountain}, + + {"amenity-veterinary", kml::BookmarkIcon::Animals}, + {"leisure-dog_park", kml::BookmarkIcon::Animals}, + {"tourism-zoo", kml::BookmarkIcon::Animals}, + + {"tourism-apartment", kml::BookmarkIcon::Hotel}, + {"tourism-chalet", kml::BookmarkIcon::Hotel}, + {"tourism-guest_house", kml::BookmarkIcon::Hotel}, + {"tourism-alpine_hut", kml::BookmarkIcon::Hotel}, + {"tourism-wilderness_hut", kml::BookmarkIcon::Hotel}, + {"tourism-hostel", kml::BookmarkIcon::Hotel}, + {"tourism-motel", kml::BookmarkIcon::Hotel}, + {"tourism-resort", kml::BookmarkIcon::Hotel}, + {"tourism-hotel", kml::BookmarkIcon::Hotel}, + {"sponsored-booking", kml::BookmarkIcon::Hotel}, + + {"amenity-kindergarten", kml::BookmarkIcon::Building}, + {"amenity-school", kml::BookmarkIcon::Building}, + {"office", kml::BookmarkIcon::Building}, + {"amenity-library", kml::BookmarkIcon::Building}, + {"amenity-courthouse", kml::BookmarkIcon::Building}, + {"amenity-college", kml::BookmarkIcon::Building}, + {"amenity-police", kml::BookmarkIcon::Building}, + {"amenity-prison", kml::BookmarkIcon::Building}, + {"amenity-embassy", kml::BookmarkIcon::Building}, + {"office-lawyer", kml::BookmarkIcon::Building}, + {"building-train_station", kml::BookmarkIcon::Building}, + {"building-university", kml::BookmarkIcon::Building}, + + + {"amenity-atm", kml::BookmarkIcon::Exchange}, + {"amenity-bureau_de_change", kml::BookmarkIcon::Exchange}, + {"amenity-bank", kml::BookmarkIcon::Exchange}, + + {"amenity-vending_machine", kml::BookmarkIcon::Shop}, + {"shop", kml::BookmarkIcon::Shop}, + {"amenity-marketplace", kml::BookmarkIcon::Shop}, + {"craft", kml::BookmarkIcon::Shop}, + {"shop-pawnbroker", kml::BookmarkIcon::Shop}, + {"shop-supermarket", kml::BookmarkIcon::Shop}, + {"shop-car_repair", kml::BookmarkIcon::Shop}, + {"shop-mall", kml::BookmarkIcon::Shop}, + {"highway-services", kml::BookmarkIcon::Shop}, + {"shop-stationery", kml::BookmarkIcon::Shop}, + {"shop-variety_store", kml::BookmarkIcon::Shop}, + {"shop-alcohol", kml::BookmarkIcon::Shop}, + {"shop-wine", kml::BookmarkIcon::Shop}, + {"shop-books", kml::BookmarkIcon::Shop}, + {"shop-bookmaker", kml::BookmarkIcon::Shop}, + {"shop-bakery", kml::BookmarkIcon::Shop}, + {"shop-beauty", kml::BookmarkIcon::Shop}, + {"shop-cosmetics", kml::BookmarkIcon::Shop}, + {"shop-beverages", kml::BookmarkIcon::Shop}, + {"shop-bicycle", kml::BookmarkIcon::Shop}, + {"shop-butcher", kml::BookmarkIcon::Shop}, + {"shop-car", kml::BookmarkIcon::Shop}, + {"shop-motorcycle", kml::BookmarkIcon::Shop}, + {"shop-car_parts", kml::BookmarkIcon::Shop}, + {"shop-car_repair", kml::BookmarkIcon::Shop}, + {"shop-tyres", kml::BookmarkIcon::Shop}, + {"shop-chemist", kml::BookmarkIcon::Shop}, + {"shop-clothes", kml::BookmarkIcon::Shop}, + {"shop-computer", kml::BookmarkIcon::Shop}, + {"shop-tattoo", kml::BookmarkIcon::Shop}, + {"shop-erotic", kml::BookmarkIcon::Shop}, + {"shop-funeral_directors", kml::BookmarkIcon::Shop}, + {"shop-confectionery", kml::BookmarkIcon::Shop}, + {"shop-chocolate", kml::BookmarkIcon::Shop}, + {"amenity-ice_cream", kml::BookmarkIcon::Shop}, + {"shop-convenience", kml::BookmarkIcon::Shop}, + {"shop-copyshop", kml::BookmarkIcon::Shop}, + {"shop-photo", kml::BookmarkIcon::Shop}, + {"shop-pet", kml::BookmarkIcon::Shop}, + {"shop-department_store", kml::BookmarkIcon::Shop}, + {"shop-doityourself", kml::BookmarkIcon::Shop}, + {"shop-electronics", kml::BookmarkIcon::Shop}, + {"shop-florist", kml::BookmarkIcon::Shop}, + {"shop-furniture", kml::BookmarkIcon::Shop}, + {"shop-garden_centre", kml::BookmarkIcon::Shop}, + {"shop-gift", kml::BookmarkIcon::Shop}, + {"shop-music", kml::BookmarkIcon::Shop}, + {"shop-video", kml::BookmarkIcon::Shop}, + {"shop-musical_instrument", kml::BookmarkIcon::Shop}, + {"shop-greengrocer", kml::BookmarkIcon::Shop}, + {"shop-hairdresser", kml::BookmarkIcon::Shop}, + {"shop-hardware", kml::BookmarkIcon::Shop}, + {"shop-jewelry", kml::BookmarkIcon::Shop}, + {"shop-kiosk", kml::BookmarkIcon::Shop}, + {"shop-laundry", kml::BookmarkIcon::Shop}, + {"shop-dry_cleaning", kml::BookmarkIcon::Shop}, + {"shop-mobile_phone", kml::BookmarkIcon::Shop}, + {"shop-optician", kml::BookmarkIcon::Shop}, + {"shop-outdoor", kml::BookmarkIcon::Shop}, + {"shop-seafood", kml::BookmarkIcon::Shop}, + {"shop-shoes", kml::BookmarkIcon::Shop}, + {"shop-sports", kml::BookmarkIcon::Shop}, + {"shop-ticket", kml::BookmarkIcon::Shop}, + {"shop-toys", kml::BookmarkIcon::Shop}, + {"shop-fabric", kml::BookmarkIcon::Shop}, + {"shop-alcohol", kml::BookmarkIcon::Shop}, + + {"amenity-place_of_worship-christian", kml::BookmarkIcon::Christianity}, + {"landuse-cemetery-christian", kml::BookmarkIcon::Christianity}, + {"amenity-grave_yard-christian", kml::BookmarkIcon::Christianity}, + + {"amenity-place_of_worship-jewish", kml::BookmarkIcon::Judaism}, + + {"amenity-place_of_worship-buddhist", kml::BookmarkIcon::Buddhism}, + + {"amenity-place_of_worship-muslim", kml::BookmarkIcon::Islam}, + + {"amenity-parking", kml::BookmarkIcon::Parking}, + {"vending-parking_tickets", kml::BookmarkIcon::Parking}, + {"tourism-caravan_site", kml::BookmarkIcon::Parking}, + {"amenity-bicycle_parking", kml::BookmarkIcon::Parking}, + {"amenity-taxi", kml::BookmarkIcon::Parking}, + {"amenity-car_sharing", kml::BookmarkIcon::Parking}, + {"tourism-camp_site", kml::BookmarkIcon::Parking}, + {"amenity-motorcycle_parking", kml::BookmarkIcon::Parking}, + + {"amenity-fuel", kml::BookmarkIcon::Gas}, + {"amenity-charging_station", kml::BookmarkIcon::Gas}, + + {"amenity-fountain", kml::BookmarkIcon::Water}, + {"natural-spring", kml::BookmarkIcon::Water}, + {"amenity-drinking_water", kml::BookmarkIcon::Water}, + {"man_made-water_tap", kml::BookmarkIcon::Water}, + {"amenity-water_point", kml::BookmarkIcon::Water}, + + {"amenity-dentist", kml::BookmarkIcon::Medicine}, + {"amenity-clinic", kml::BookmarkIcon::Medicine}, + {"amenity-doctors", kml::BookmarkIcon::Medicine}, + {"amenity-hospital", kml::BookmarkIcon::Medicine}, + {"amenity-pharmacy", kml::BookmarkIcon::Medicine}, + {"amenity-clinic", kml::BookmarkIcon::Medicine}, + {"amenity-childcare", kml::BookmarkIcon::Medicine}, + {"emergency-defibrillator", kml::BookmarkIcon::Medicine} +}; + void ValidateKmlData(std::unique_ptr<kml::FileData> & data) { if (!data) @@ -148,6 +363,13 @@ void SaveFeatureTypes(feature::TypesHolder const & types, kml::BookmarkData & bm for (auto it = copy.begin(); it != copy.end(); ++it) { bmData.m_featureTypes.push_back(c.GetIndexForType(*it)); + if (bmData.m_icon == kml::BookmarkIcon::None) + { + auto const typeStr = c.GetReadableObjectName(*it); + auto const itIcon = kBookmarkTypeToIcon.find(typeStr); + if (itIcon != kBookmarkTypeToIcon.cend()) + bmData.m_icon = itIcon->second; + } } } |