diff --git a/indexer/osm_editor.cpp b/indexer/osm_editor.cpp index bfcb49bb6c..d018104acd 100644 --- a/indexer/osm_editor.cpp +++ b/indexer/osm_editor.cpp @@ -68,76 +68,77 @@ struct TypeDescription TEditableFields const fields; bool const name; + // Address == true implies Street, House Number, Phone, Fax, Opening Hours, Website, EMail, Postcode. bool const address; }; static unordered_map const gEditableTypes = { - {"aeroway-aerodrome", {{EType::FMD_ELE, EType::FMD_PHONE_NUMBER, EType::FMD_OPERATOR}, false, true}}, - {"aeroway-airport", {{EType::FMD_ELE, EType::FMD_PHONE_NUMBER, EType::FMD_OPERATOR}, false, true}}, - {"amenity-atm", {{}, true, false}}, - {"amenity-bank", {{EType::FMD_OPERATOR, EType::FMD_OPEN_HOURS, EType::FMD_WEBSITE, EType::FMD_OPERATOR}, true, true}}, - {"amenity-bar", {{EType::FMD_OPEN_HOURS}, true, true}}, - {"amenity-bicycle_rental", {{EType::FMD_OPERATOR}, false, true}}, - {"amenity-bureau_de_change", {{EType::FMD_OPEN_HOURS}, true, true}}, - {"amenity-bus_station", {{EType::FMD_OPERATOR}, true, false}}, - {"amenity-cafe", {{EType::FMD_OPEN_HOURS, EType::FMD_PHONE_NUMBER, EType::FMD_WEBSITE, EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, - {"amenity-car_rental", {{EType::FMD_OPERATOR}, true, false}}, + {"aeroway-aerodrome", {{EType::FMD_ELE, EType::FMD_OPERATOR}, false, true}}, + {"aeroway-airport", {{EType::FMD_ELE, EType::FMD_OPERATOR}, false, true}}, + {"amenity-atm", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE}, true, false}}, + {"amenity-bank", {{EType::FMD_OPERATOR}, true, true}}, + {"amenity-bar", {{EType::FMD_CUISINE, EType::FMD_INTERNET}, true, true}}, + {"amenity-bicycle_rental", {{EType::FMD_OPERATOR}, true, false}}, + {"amenity-bureau_de_change", {{EType::FMD_OPERATOR}, true, true}}, + {"amenity-bus_station", {{EType::FMD_OPERATOR}, true, true}}, + {"amenity-cafe", {{EType::FMD_CUISINE, EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"amenity-car_rental", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, {"amenity-car_sharing", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE}, true, false}}, - {"amenity-casino", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE, EType::FMD_OPEN_HOURS}, true, false}}, - {"amenity-cinema", {{EType::FMD_OPERATOR, EType::FMD_PHONE_NUMBER, EType::FMD_WEBSITE}, true, true}}, - {"amenity-college", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE, EType::FMD_WEBSITE}, true, true}}, - {"amenity-doctors", {{}, true, true}}, - {"amenity-drinking_water", {{EType::FMD_OPERATOR}, true, false}}, - {"amenity-embassy", {{EType::FMD_PHONE_NUMBER, EType::FMD_WEBSITE}, true, false}}, - {"amenity-fast_food", {{EType::FMD_OPERATOR, EType::FMD_CUISINE}, true, false}}, - {"amenity-ferry_terminal", {{EType::FMD_OPERATOR}, true, false}}, - {"amenity-fire_station", {{}, true, false}}, + {"amenity-casino", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"amenity-cinema", {{EType::FMD_OPERATOR}, true, true}}, + {"amenity-college", {{EType::FMD_OPERATOR}, true, true}}, + {"amenity-doctors", {{EType::FMD_INTERNET}, true, true}}, + {"amenity-drinking_water", {{}, true, false}}, + {"amenity-embassy", {{}, true, true}}, + {"amenity-fast_food", {{EType::FMD_OPERATOR, EType::FMD_CUISINE}, true, true}}, + {"amenity-ferry_terminal", {{EType::FMD_OPERATOR}, true, true}}, + {"amenity-fire_station", {{}, true, true}}, {"amenity-fountain", {{}, true, false}}, - {"amenity-fuel", {{EType::FMD_OPERATOR, EType::FMD_OPEN_HOURS, EType::FMD_PHONE_NUMBER, EType::FMD_HEIGHT /*maxheight?*/, EType::FMD_WEBSITE}, true, true }}, + {"amenity-fuel", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, {"amenity-grave_yard", {{}, true, false}}, - {"amenity-hospital", {{EType::FMD_WEBSITE, EType::FMD_PHONE_NUMBER}, true, true}}, - {"amenity-hunting_stand", {{EType::FMD_HEIGHT}, false, false}}, - {"amenity-kindergarten", {{EType::FMD_WEBSITE, EType::FMD_PHONE_NUMBER, EType::FMD_OPERATOR, EType::FMD_WEBSITE}, true, true}}, - {"amenity-library", {{EType::FMD_PHONE_NUMBER, EType::FMD_WEBSITE, EType::FMD_FAX_NUMBER, EType::FMD_FAX_NUMBER, EType::FMD_EMAIL}, true, true}}, - {"amenity-marketplace", {{EType::FMD_OPERATOR, EType::FMD_OPEN_HOURS}, true, false}}, - {"amenity-nightclub", {{EType::FMD_WEBSITE, EType::FMD_PHONE_NUMBER, EType::FMD_OPEN_HOURS, EType::FMD_OPERATOR}, true, true}}, - {"amenity-parking", {{EType::FMD_OPERATOR}, true, false}}, - {"amenity-pharmacy", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE}, true, true}}, - {"amenity-place_of_worship", {{EType::FMD_OPEN_HOURS, EType::FMD_WEBSITE}, true, false}}, - {"amenity-police", {{EType::FMD_OPERATOR, EType::FMD_PHONE_NUMBER, EType::FMD_WEBSITE, EType::FMD_OPEN_HOURS}, true, true}}, - {"amenity-post_box", {{EType::FMD_OPERATOR}, true, false}}, - {"amenity-post_office", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE, EType::FMD_PHONE_NUMBER}, true, true}}, - {"amenity-pub", {{EType::FMD_OPERATOR, EType::FMD_OPEN_HOURS, EType::FMD_CUISINE, EType::FMD_PHONE_NUMBER, EType::FMD_EMAIL, EType::FMD_WEBSITE, EType::FMD_FAX_NUMBER}, true, true}}, - {"amenity-recycling", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE}, true, false}}, - {"amenity-restaurant", {{EType::FMD_OPERATOR, EType::FMD_CUISINE, EType::FMD_OPEN_HOURS, EType::FMD_PHONE_NUMBER, EType::FMD_WEBSITE}, true, true}}, - {"amenity-school", {{EType::FMD_OPERATOR, EType::FMD_WIKIPEDIA}, true, true}}, - {"amenity-taxi", {{EType::FMD_OPERATOR, EType::FMD_PHONE_NUMBER}, true, false}}, + {"amenity-hospital", {{}, true, true}}, + {"amenity-hunting_stand", {{EType::FMD_HEIGHT}, true, false}}, + {"amenity-kindergarten", {{EType::FMD_OPERATOR}, true, true}}, + {"amenity-library", {{EType::FMD_INTERNET}, true, true}}, + {"amenity-marketplace", {{EType::FMD_OPERATOR}, true, true}}, + {"amenity-nightclub", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"amenity-parking", {{EType::FMD_OPERATOR}, true, true}}, + {"amenity-pharmacy", {{EType::FMD_OPERATOR}, true, true}}, + {"amenity-place_of_worship", {{}, true, true}}, + {"amenity-police", {{}, true, true}}, + {"amenity-post_box", {{EType::FMD_OPERATOR, EType::FMD_POSTCODE}, true, false}}, + {"amenity-post_office", {{EType::FMD_OPERATOR, EType::FMD_POSTCODE, EType::FMD_INTERNET}, true, true}}, + {"amenity-pub", {{EType::FMD_OPERATOR, EType::FMD_CUISINE, EType::FMD_INTERNET}, true, true}}, + {"amenity-recycling", {{EType::FMD_OPERATOR}, true, false}}, + {"amenity-restaurant", {{EType::FMD_OPERATOR, EType::FMD_CUISINE, EType::FMD_INTERNET}, true, true}}, + {"amenity-school", {{EType::FMD_OPERATOR}, true, true}}, + {"amenity-taxi", {{EType::FMD_OPERATOR}, true, false}}, {"amenity-telephone", {{EType::FMD_OPERATOR, EType::FMD_PHONE_NUMBER}, false, false}}, - {"amenity-theatre", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE, EType::FMD_PHONE_NUMBER}, true, true}}, - {"amenity-toilets", {{EType::FMD_OPEN_HOURS, EType::FMD_OPERATOR}, true, false}}, - {"amenity-townhall", {{EType::FMD_OPERATOR}, true, true}}, - {"amenity-university", {{EType::FMD_OPERATOR, EType::FMD_PHONE_NUMBER, EType::FMD_WEBSITE, EType::FMD_FAX_NUMBER, EType::FMD_EMAIL, }, true, true}}, + {"amenity-theatre", {{}, true, true}}, + {"amenity-toilets", {{EType::FMD_OPERATOR, EType::FMD_OPEN_HOURS}, true, false}}, + {"amenity-townhall", {{}, true, true}}, + {"amenity-university", {{}, true, true}}, {"amenity-waste_disposal", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE}, false, false}}, {"highway-bus_stop", {{EType::FMD_OPERATOR}, true, false}}, - {"historic-archaeological_site", {{}, true, false}}, + {"historic-archaeological_site", {{EType::FMD_WIKIPEDIA}, true, false}}, {"historic-castle", {{EType::FMD_WIKIPEDIA}, true, false}}, - {"historic-memorial", {{}, true, false}}, - {"historic-monument", {{}, true, false}}, - {"historic-ruins", {{}, true, false}}, - {"internet-access", {{EType::FMD_INTERNET /*??*/}, false, false}}, - {"internet-access|wlan", {{EType::FMD_INTERNET /*??*/}, false, false}}, - {"landuse-cemetery", {{}, true, false}}, - {"leisure-garden", {{}, true, false}}, - {"leisure-sports_centre", {{}, true, true}}, - {"leisure-stadium", {{EType::FMD_WIKIPEDIA, EType::FMD_WEBSITE, EType::FMD_OPERATOR}, true, true}}, - {"leisure-swimming_pool", {{EType::FMD_OPEN_HOURS, EType::FMD_OPERATOR}, true, false}}, + {"historic-memorial", {{EType::FMD_WIKIPEDIA}, true, false}}, + {"historic-monument", {{EType::FMD_WIKIPEDIA}, true, false}}, + {"historic-ruins", {{EType::FMD_WIKIPEDIA}, true, false}}, + {"internet-access", {{EType::FMD_INTERNET}, false, false}}, + {"internet-access|wlan", {{EType::FMD_INTERNET}, false, false}}, + {"landuse-cemetery", {{EType::FMD_WIKIPEDIA}, true, false}}, + {"leisure-garden", {{EType::FMD_OPEN_HOURS, EType::FMD_INTERNET}, true, false}}, + {"leisure-sports_centre", {{EType::FMD_INTERNET}, true, true}}, + {"leisure-stadium", {{EType::FMD_WIKIPEDIA, EType::FMD_OPERATOR}, true, true}}, + {"leisure-swimming_pool", {{EType::FMD_OPERATOR}, true, true}}, {"natural-peak", {{EType::FMD_WIKIPEDIA, EType::FMD_ELE}, true, false}}, - {"natural-spring", {{}, true, false}}, - {"natural-waterfall", {{}, true, false}}, - {"office-company", {{}, true, false}}, - {"office-government", {{}, true, false}}, - {"office-lawyer", {{EType::FMD_OPEN_HOURS, EType::FMD_PHONE_NUMBER, EType::FMD_FAX_NUMBER, EType::FMD_WEBSITE, EType::FMD_EMAIL}, true, false}}, - {"office-telecommunication", {{EType::FMD_OPEN_HOURS, EType::FMD_OPERATOR}, true, false}}, + {"natural-spring", {{EType::FMD_WIKIPEDIA}, true, false}}, + {"natural-waterfall", {{EType::FMD_WIKIPEDIA}, true, false}}, + {"office-company", {{}, true, true}}, + {"office-government", {{}, true, true}}, + {"office-lawyer", {{}, true, true}}, + {"office-telecommunication", {{EType::FMD_INTERNET, EType::FMD_OPERATOR}, true, true}}, {"place-farm", {{EType::FMD_WIKIPEDIA}, true, false}}, {"place-hamlet", {{EType::FMD_WIKIPEDIA}, true, false}}, {"place-village", {{EType::FMD_WIKIPEDIA}, true, false}}, @@ -145,50 +146,50 @@ static unordered_map const gEditableTypes = { {"railway-station", {{EType::FMD_OPERATOR}, true, false}}, {"railway-subway_entrance", {{}, true, false}}, {"railway-tram_stop", {{EType::FMD_OPERATOR}, true, false}}, - {"shop-alcohol", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-bakery", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-beauty", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-beverages", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-bicycle", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE, EType::FMD_OPEN_HOURS}, true, true}}, - {"shop-books", {{EType::FMD_OPEN_HOURS, EType::FMD_OPERATOR}, true, false}}, - {"shop-butcher", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-car", {{EType::FMD_OPERATOR, EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-car_repair", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE, EType::FMD_PHONE_NUMBER}, true, true}}, - {"shop-chemist", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-clothes", {{EType::FMD_OPERATOR, EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-computer", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-confectionery", {{EType::FMD_OPEN_HOURS}, true, false }}, - {"shop-convenience", {{EType::FMD_OPERATOR, EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-department_store", {{EType::FMD_OPERATOR, EType::FMD_OPEN_HOURS}, false, false}}, - {"shop-doityourself", {{EType::FMD_OPERATOR, EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-electronics", {{EType::FMD_OPEN_HOURS, EType::FMD_OPERATOR}, true, false}}, - {"shop-florist", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-furniture", {{EType::FMD_OPEN_HOURS}, false, false}}, - {"shop-garden_centre", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-gift", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-greengrocer", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-hairdresser", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-hardware", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-jewelry", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-kiosk", {{EType::FMD_OPERATOR, EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-laundry", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-mall", {{EType::FMD_OPERATOR, EType::FMD_OPEN_HOURS}, true, true}}, - {"shop-mobile_phone", {{EType::FMD_OPERATOR, EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-optician", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-shoes", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-sports", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"shop-supermarket", {{EType::FMD_OPEN_HOURS, EType::FMD_OPERATOR}, true, false}}, - {"shop-toys", {{EType::FMD_OPEN_HOURS}, true, false}}, - {"tourism-alpine_hut", {{EType::FMD_ELE, EType::FMD_OPEN_HOURS, EType::FMD_OPERATOR}, true, false}}, + {"shop-alcohol", {{EType::FMD_INTERNET}, true, true}}, + {"shop-bakery", {{EType::FMD_INTERNET}, true, true}}, + {"shop-beauty", {{EType::FMD_INTERNET}, true, true}}, + {"shop-beverages", {{EType::FMD_INTERNET}, true, true}}, + {"shop-bicycle", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"shop-books", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"shop-butcher", {{EType::FMD_INTERNET}, true, true}}, + {"shop-car", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"shop-car_repair", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"shop-chemist", {{EType::FMD_INTERNET}, true, true}}, + {"shop-clothes", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"shop-computer", {{EType::FMD_INTERNET}, true, true}}, + {"shop-confectionery", {{EType::FMD_INTERNET}, true, true }}, + {"shop-convenience", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"shop-department_store", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, false, true}}, + {"shop-doityourself", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"shop-electronics", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"shop-florist", {{EType::FMD_INTERNET}, true, true}}, + {"shop-furniture", {{EType::FMD_INTERNET}, false, true}}, + {"shop-garden_centre", {{EType::FMD_INTERNET}, true, true}}, + {"shop-gift", {{EType::FMD_INTERNET}, true, true}}, + {"shop-greengrocer", {{EType::FMD_INTERNET}, true, true}}, + {"shop-hairdresser", {{EType::FMD_INTERNET}, true, true}}, + {"shop-hardware", {{EType::FMD_INTERNET}, true, true}}, + {"shop-jewelry", {{EType::FMD_INTERNET}, true, true}}, + {"shop-kiosk", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"shop-laundry", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"shop-mall", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"shop-mobile_phone", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"shop-optician", {{EType::FMD_INTERNET}, true, true}}, + {"shop-shoes", {{EType::FMD_INTERNET}, true, true}}, + {"shop-sports", {{EType::FMD_INTERNET}, true, true}}, + {"shop-supermarket", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"shop-toys", {{EType::FMD_INTERNET}, true, true}}, + {"tourism-alpine_hut", {{EType::FMD_ELE, EType::FMD_OPEN_HOURS, EType::FMD_OPERATOR, EType::FMD_WEBSITE, EType::FMD_INTERNET}, true, false}}, {"tourism-artwork", {{EType::FMD_WEBSITE, EType::FMD_WIKIPEDIA}, true, false}}, - {"tourism-camp_site", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE, EType::FMD_OPEN_HOURS}, true, false}}, - {"tourism-caravan_site", {{EType::FMD_WEBSITE, EType::FMD_OPERATOR}, true, false}}, - {"tourism-guest_house", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE}, true, false}}, - {"tourism-hostel", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE}, true, true}}, - {"tourism-hotel", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE, EType::FMD_PHONE_NUMBER}, true, true}}, + {"tourism-camp_site", {{EType::FMD_OPERATOR, EType::FMD_WEBSITE, EType::FMD_OPEN_HOURS, EType::FMD_INTERNET}, true, false}}, + {"tourism-caravan_site", {{EType::FMD_WEBSITE, EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, false}}, + {"tourism-guest_house", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"tourism-hostel", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"tourism-hotel", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, {"tourism-information", {{}, true, false}}, - {"tourism-motel", {{EType::FMD_OPERATOR}, true, true}}, - {"tourism-museum", {{EType::FMD_OPERATOR, EType::FMD_OPEN_HOURS}, true, false}}, + {"tourism-motel", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, + {"tourism-museum", {{EType::FMD_OPERATOR, EType::FMD_INTERNET}, true, true}}, {"tourism-viewpoint", {{}, true, false}}, {"waterway-waterfall", {{EType::FMD_HEIGHT}, true, false}}}; @@ -495,6 +496,15 @@ vector Editor::EditableMetadataForType(FeatureType const & feat { for (auto field : desc->fields) fields.insert(field); + // If address is editable, many metadata fields are editable too. + if (desc->address) + { + fields.insert(EType::FMD_EMAIL); + fields.insert(EType::FMD_OPEN_HOURS); + fields.insert(EType::FMD_PHONE_NUMBER); + fields.insert(EType::FMD_POSTCODE); + fields.insert(EType::FMD_WEBSITE); + } } } return {begin(fields), end(fields)};