diff --git a/data/core.yaml b/data/core.yaml index eada4050f..f177a42b5 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -950,7 +950,7 @@ en: navigation_zoom: "You can zoom in or out by scrolling with the mouse wheel or trackpad, or by clicking the {plus} / {minus} buttons along the side of the map. You can also use the `+`, `-` keys on your keyboard." features_h: "Map Features" features: "We use the word *features* to describe things that appear on the map, such as roads, buildings, or points of interest. Anything in the real world can be mapped as a feature on OpenStreetMap. Map features are represented on the map using *points*, *lines*, or *areas*." - nodes_ways: "In OpenStreetmap, points are sometimes called *nodes*, and lines and areas are sometimes called *ways*." + nodes_ways: "In OpenStreetMap, points are sometimes called *nodes*, and lines and areas are sometimes called *ways*." editing: title: "Editing & Saving" select_h: "Select" @@ -1077,7 +1077,7 @@ en: sources: "By default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is chosen as the background image. Depending on where you are editing, other imagery sources will be available. Some may be newer or have higher resolution, so it is always useful to check and see which layer is the best one to use as a mapping reference." offsets_h: "Adjusting Imagery Offset" offset: "Imagery is sometimes offset slightly from accurate map data. If you see a lot of roads or buildings shifted from the background imagery, it may be the imagery that's incorrect, so don't move them all to match the background. Instead, you can adjust the background so that it matches the existing data by expanding the \"Adjust Imagery Offset\" section at the bottom of the Background Settings pane." - offset_change: "Click on the small triangles to adjust the imagery offset in small steps, or hold the left mouse button and drag within the gray square to slide the imagery into alignment." + offset_change: "Click on the small triangles to adjust the imagery offset in small steps, or hold the {leftclick} left mouse button and drag within the gray square to slide the imagery into alignment." streetlevel: title: Street Level Photos intro: "Street level photos are useful for mapping traffic signs, businesses, and other details that you can't see from satellite and aerial images. The iD editor supports street level photos from [Bing Streetside](https://www.microsoft.com/en-us/maps/streetside), [Mapillary](https://www.mapillary.com), and [OpenStreetCam](https://www.openstreetcam.org)." diff --git a/data/presets.yaml b/data/presets.yaml index 2e7a821fc..3300bc040 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -412,7 +412,7 @@ en: # cycle_network=* label: Network cycleway: - # 'cycleway:left=*, cycleway:right=*' + # 'cycleway=*, cycleway:left=*, cycleway:right=*' label: Bike Lanes options: # lane=yes @@ -4280,7 +4280,7 @@ en: landuse/forest: # landuse=forest name: Managed Forest - # 'terms: cut,forest,lumber,tree' + # 'terms: cut,forest,forestry,lumber,silviculture,tree' terms: '' landuse/garages: # landuse=garages diff --git a/data/presets/fields.json b/data/presets/fields.json index 106bcf550..89362966f 100644 --- a/data/presets/fields.json +++ b/data/presets/fields.json @@ -75,7 +75,7 @@ "currency_multi": {"key": "currency:", "type": "multiCombo", "label": "Currency Types"}, "cutting": {"key": "cutting", "type": "typeCombo", "label": "Type", "placeholder": "Default"}, "cycle_network": {"key": "cycle_network", "type": "networkCombo", "label": "Network"}, - "cycleway": {"keys": ["cycleway:left", "cycleway:right"], "reference": {"key": "cycleway"}, "type": "cycleway", "label": "Bike Lanes", "placeholder": "none", "strings": {"types": {"cycleway:left": "Left side", "cycleway:right": "Right side"}, "options": {"none": {"title": "None", "description": "No bike lane"}, "lane": {"title": "Standard bike lane", "description": "A bike lane separated from auto traffic by a painted line"}, "shared_lane": {"title": "Shared bike lane", "description": "A bike lane with no separation from auto traffic"}, "track": {"title": "Bike track", "description": "A bike lane separated from traffic by a physical barrier"}, "share_busway": {"title": "Bike lane shared with bus", "description": "A bike lane shared with a bus lane"}, "opposite_lane": {"title": "Opposite bike lane", "description": "A bike lane that travels in the opposite direction of traffic"}, "opposite": {"title": "Contraflow bike lane", "description": "A bike lane that travels in both directions on a one-way street"}}}}, + "cycleway": {"keys": ["cycleway", "cycleway:left", "cycleway:right"], "reference": {"key": "cycleway"}, "type": "cycleway", "label": "Bike Lanes", "placeholder": "none", "strings": {"types": {"cycleway:left": "Left side", "cycleway:right": "Right side"}, "options": {"none": {"title": "None", "description": "No bike lane"}, "lane": {"title": "Standard bike lane", "description": "A bike lane separated from auto traffic by a painted line"}, "shared_lane": {"title": "Shared bike lane", "description": "A bike lane with no separation from auto traffic"}, "track": {"title": "Bike track", "description": "A bike lane separated from traffic by a physical barrier"}, "share_busway": {"title": "Bike lane shared with bus", "description": "A bike lane shared with a bus lane"}, "opposite_lane": {"title": "Opposite bike lane", "description": "A bike lane that travels in the opposite direction of traffic"}, "opposite": {"title": "Contraflow bike lane", "description": "A bike lane that travels in both directions on a one-way street"}}}}, "dance/style": {"key": "dance:style", "type": "semiCombo", "label": "Dance Styles"}, "date": {"key": "date", "type": "check", "label": "Date"}, "delivery": {"key": "delivery", "type": "check", "label": "Delivery"}, diff --git a/data/presets/fields/cycleway.json b/data/presets/fields/cycleway.json index e011b0566..07a687a90 100644 --- a/data/presets/fields/cycleway.json +++ b/data/presets/fields/cycleway.json @@ -1,5 +1,5 @@ { - "keys": ["cycleway:left", "cycleway:right"], + "keys": ["cycleway", "cycleway:left", "cycleway:right"], "reference": {"key": "cycleway"}, "type": "cycleway", "label": "Bike Lanes", diff --git a/data/presets/presets.json b/data/presets/presets.json index 58b79300b..57e51a83f 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -49,7 +49,7 @@ "amenity/animal_breeding": {"icon": "maki-veterinary", "fields": ["name", "operator", "address", "building_area", "opening_hours", "animal_breeding"], "moreFields": ["website", "phone", "email", "fax", "wheelchair"], "geometry": ["point", "area"], "terms": ["breeding", "bull", "cat", "cow", "dog", "horse", "husbandry", "kitten", "livestock", "pet breeding", "puppy", "reptile"], "tags": {"amenity": "animal_breeding"}, "name": "Animal Breeding Facility"}, "amenity/animal_shelter": {"icon": "maki-veterinary", "fields": ["name", "operator", "address", "building_area", "opening_hours", "animal_shelter"], "moreFields": ["website", "phone", "email", "fax", "wheelchair"], "geometry": ["point", "area"], "terms": ["adoption", "aspca", "cat", "dog", "horse", "kitten", "pet care", "pet rescue", "puppy", "raptor", "reptile", "rescue", "spca"], "tags": {"amenity": "animal_shelter"}, "name": "Animal Shelter"}, "amenity/arts_centre": {"icon": "maki-theatre", "fields": ["name", "address", "building_area", "opening_hours", "website"], "moreFields": ["fee", "payment_multi", "website", "phone", "email", "fax", "wheelchair"], "geometry": ["point", "area"], "terms": [], "tags": {"amenity": "arts_centre"}, "name": "Arts Center"}, - "amenity/atm": {"icon": "maki-bank", "fields": ["operator", "network", "cash_in", "currency_multi", "drive_through"], "moreFields": ["name", "brand", "lit", "wheelchair"], "geometry": ["point", "vertex"], "terms": ["money", "cash", "machine"], "tags": {"amenity": "atm"}, "name": "ATM"}, + "amenity/atm": {"icon": "maki-bank", "fields": ["operator", "network", "cash_in", "currency_multi", "drive_through"], "moreFields": ["name", "brand", "lit", "opening_hours", "wheelchair"], "geometry": ["point", "vertex"], "terms": ["money", "cash", "machine"], "tags": {"amenity": "atm"}, "name": "ATM"}, "amenity/bank": {"icon": "maki-bank", "fields": ["name", "operator", "address", "building_area", "atm", "drive_through"], "moreFields": ["opening_hours", "currency_multi", "website", "phone", "email", "fax", "wheelchair"], "geometry": ["point", "area"], "terms": ["credit union", "check", "deposit", "fund", "investment", "repository", "reserve", "safe", "savings", "stock", "treasury", "trust", "vault"], "tags": {"amenity": "bank"}, "name": "Bank"}, "amenity/bar": {"icon": "maki-bar", "fields": ["name", "address", "building_area", "outdoor_seating", "brewery"], "moreFields": ["smoking", "opening_hours", "payment_multi", "website", "phone", "email", "fax", "wheelchair"], "geometry": ["point", "area"], "terms": ["dive", "beer", "bier", "booze"], "tags": {"amenity": "bar"}, "name": "Bar"}, "amenity/bbq": {"icon": "maki-bbq", "fields": ["covered", "fuel", "access_simple"], "moreFields": ["lit"], "geometry": ["point"], "terms": ["bbq", "grill"], "tags": {"amenity": "bbq"}, "name": "Barbecue/Grill"}, @@ -177,7 +177,7 @@ "amenity/telephone": {"icon": "maki-telephone", "fields": ["operator", "phone", "fee", "payment_multi", "booth"], "moreFields": ["covered", "indoor", "lit", "wheelchair"], "geometry": ["point", "vertex"], "tags": {"amenity": "telephone"}, "terms": ["phone"], "name": "Telephone"}, "amenity/theatre": {"icon": "maki-theatre", "fields": ["name", "operator", "address", "building_area"], "moreFields": ["internet_access", "internet_access/fee", "internet_access/ssid", "payment_multi", "website", "phone", "email", "fax", "wheelchair"], "geometry": ["point", "area"], "terms": ["theatre", "performance", "play", "musical"], "tags": {"amenity": "theatre"}, "name": "Theater"}, "amenity/theatre/type/amphi": {"icon": "maki-theatre", "fields": ["name", "operator", "address", "lit"], "geometry": ["point", "area"], "terms": ["open air", "outdoor", "greek", "ampi"], "tags": {"amenity": "theatre", "theatre:type": "amphi"}, "name": "Amphitheatre"}, - "amenity/toilets": {"icon": "maki-toilet", "fields": ["toilets/disposal", "building_area", "access_simple", "gender", "diaper", "wheelchair"], "moreFields": ["operator", "fee", "payment_multi"], "geometry": ["point", "vertex", "area"], "terms": ["bathroom", "restroom", "outhouse", "privy", "head", "lavatory", "latrine", "water closet", "WC", "W.C."], "tags": {"amenity": "toilets"}, "name": "Toilets"}, + "amenity/toilets": {"icon": "maki-toilet", "fields": ["toilets/disposal", "building_area", "access_simple", "gender", "diaper", "wheelchair"], "moreFields": ["fee", "opening_hours", "operator", "payment_multi"], "geometry": ["point", "vertex", "area"], "terms": ["bathroom", "restroom", "outhouse", "privy", "head", "lavatory", "latrine", "water closet", "WC", "W.C."], "tags": {"amenity": "toilets"}, "name": "Toilets"}, "amenity/townhall": {"icon": "maki-town-hall", "fields": ["name", "operator", "address", "building_area"], "moreFields": ["website", "phone", "email", "fax", "wheelchair"], "geometry": ["point", "area"], "terms": ["village", "city", "government", "courthouse", "municipal"], "tags": {"amenity": "townhall"}, "name": "Town Hall"}, "amenity/university": {"icon": "maki-college", "fields": ["{amenity/college}"], "moreFields": ["{amenity/college}"], "geometry": ["point", "area"], "terms": ["college", "graduate school", "PhD program", "master's degree program"], "tags": {"amenity": "university"}, "name": "University Grounds"}, "amenity/vehicle_inspection": {"icon": "maki-car", "fields": ["name", "operator", "address", "building_area", "opening_hours"], "moreFields": ["payment_multi", "website", "phone", "email", "fax", "wheelchair"], "geometry": ["point", "area"], "terms": ["car inspection"], "tags": {"amenity": "vehicle_inspection"}, "name": "Vehicle Inspection"}, @@ -488,7 +488,7 @@ "landuse/construction": {"icon": "temaki-tools", "fields": ["name", "construction", "operator"], "moreFields": ["address", "website", "phone", "email", "fax"], "geometry": ["area"], "tags": {"landuse": "construction"}, "terms": [], "name": "Construction"}, "landuse/farmland": {"icon": "maki-farm", "fields": ["name", "operator", "crop", "produce"], "moreFields": ["address", "website", "phone", "email", "fax"], "geometry": ["area"], "tags": {"landuse": "farmland"}, "terms": ["crop", "grow", "plant"], "name": "Farmland"}, "landuse/farmyard": {"icon": "maki-farm", "fields": ["name", "operator", "crop"], "moreFields": ["address", "website", "phone", "email", "fax"], "geometry": ["area"], "tags": {"landuse": "farmyard"}, "terms": ["crop", "grow", "plant"], "name": "Farmyard"}, - "landuse/forest": {"icon": "maki-park-alt1", "fields": ["name", "leaf_type", "leaf_cycle", "produce"], "moreFields": ["address", "website", "phone", "email", "fax"], "geometry": ["area"], "tags": {"landuse": "forest"}, "terms": ["cut", "forest", "lumber", "tree"], "name": "Managed Forest"}, + "landuse/forest": {"icon": "maki-park-alt1", "fields": ["name", "leaf_type", "leaf_cycle", "produce"], "moreFields": ["address", "website", "phone", "email", "fax"], "geometry": ["area"], "tags": {"landuse": "forest"}, "terms": ["cut", "forest", "forestry", "lumber", "silviculture", "tree"], "name": "Managed Forest"}, "landuse/garages": {"icon": "fas-warehouse", "geometry": ["area"], "fields": ["name"], "moreFields": ["address", "website", "phone", "email", "fax"], "tags": {"landuse": "garages"}, "terms": [], "name": "Garage Landuse"}, "landuse/grass": {"geometry": ["area"], "tags": {"landuse": "grass"}, "terms": [], "name": "Grass"}, "landuse/greenfield": {"geometry": ["area"], "fields": ["name"], "tags": {"landuse": "greenfield"}, "terms": [], "matchScore": 0.9, "name": "Greenfield"}, @@ -837,7 +837,7 @@ "seamark/buoy_lateral/green": {"geometry": ["point", "vertex"], "terms": ["lateral buoy", "buoy lateral", "cevni", "channel marker", "iala", "lateral mark"], "tags": {"seamark:type": "buoy_lateral", "seamark:buoy_lateral:colour": "green"}, "name": "Green Buoy"}, "seamark/buoy_lateral/red": {"geometry": ["point", "vertex"], "terms": ["lateral buoy", "buoy lateral", "cevni", "channel marker", "iala", "lateral mark"], "tags": {"seamark:type": "buoy_lateral", "seamark:buoy_lateral:colour": "red"}, "name": "Red Buoy"}, "seamark/mooring": {"fields": ["ref", "operator", "seamark/mooring/category", "seamark/type"], "geometry": ["point"], "terms": ["dolphin", "pile", "bollard", "buoy", "post"], "tags": {"seamark:type": "mooring"}, "name": "Mooring"}, - "shop": {"icon": "maki-shop", "fields": ["name", "shop", "operator", "address", "building_area", "payment_multi"], "moreFields": ["opening_hours", "brand", "website", "phone", "email", "fax", "wheelchair"], "geometry": ["point", "area"], "tags": {"shop": "*"}, "terms": [], "name": "Shop"}, + "shop": {"icon": "maki-shop", "fields": ["name", "shop", "operator", "address", "building_area", "opening_hours", "payment_multi"], "moreFields": ["brand", "currency_multi", "website", "phone", "email", "fax", "wheelchair"], "geometry": ["point", "area"], "tags": {"shop": "*"}, "terms": [], "name": "Shop"}, "shop/fishmonger": {"icon": "maki-shop", "geometry": ["point", "area"], "tags": {"shop": "fishmonger"}, "reference": {"key": "shop", "value": "seafood"}, "name": "Fishmonger", "searchable": false}, "shop/furnace": {"icon": "maki-shop", "geometry": ["point", "area"], "terms": ["oven", "stove"], "tags": {"shop": "furnace"}, "name": "Furnace Store", "searchable": false}, "shop/vacant": {"icon": "maki-shop", "fields": ["name", "address", "building_area"], "geometry": ["point", "area"], "tags": {"shop": "vacant"}, "name": "Vacant Shop", "searchable": false}, diff --git a/data/presets/presets/amenity/atm.json b/data/presets/presets/amenity/atm.json index d716b854a..134753c5c 100644 --- a/data/presets/presets/amenity/atm.json +++ b/data/presets/presets/amenity/atm.json @@ -11,6 +11,7 @@ "name", "brand", "lit", + "opening_hours", "wheelchair" ], "geometry": [ diff --git a/data/presets/presets/amenity/toilets.json b/data/presets/presets/amenity/toilets.json index dd6bb682d..7ec25aa0c 100644 --- a/data/presets/presets/amenity/toilets.json +++ b/data/presets/presets/amenity/toilets.json @@ -9,8 +9,9 @@ "wheelchair" ], "moreFields": [ - "operator", "fee", + "opening_hours", + "operator", "payment_multi" ], "geometry": [ diff --git a/data/presets/presets/landuse/forest.json b/data/presets/presets/landuse/forest.json index 0065ab736..567a442bf 100644 --- a/data/presets/presets/landuse/forest.json +++ b/data/presets/presets/landuse/forest.json @@ -22,7 +22,9 @@ "terms": [ "cut", "forest", + "forestry", "lumber", + "silviculture", "tree" ], "name": "Managed Forest" diff --git a/data/presets/presets/shop.json b/data/presets/presets/shop.json index c1e7ba240..0e5850906 100644 --- a/data/presets/presets/shop.json +++ b/data/presets/presets/shop.json @@ -6,11 +6,12 @@ "operator", "address", "building_area", + "opening_hours", "payment_multi" ], "moreFields": [ - "opening_hours", "brand", + "currency_multi", "website", "phone", "email", diff --git a/data/taginfo.json b/data/taginfo.json index d68b660e3..c059765a7 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -1153,6 +1153,13 @@ {"key": "currency:", "description": "🄵 Currency Types"}, {"key": "cutting", "description": "🄵 Type, 🄵 Structure"}, {"key": "cycle_network", "description": "🄵 Network"}, + {"key": "cycleway", "value": "none", "description": "🄵 Bike Lanes"}, + {"key": "cycleway", "value": "lane", "description": "🄵 Bike Lanes"}, + {"key": "cycleway", "value": "shared_lane", "description": "🄵 Bike Lanes"}, + {"key": "cycleway", "value": "track", "description": "🄵 Bike Lanes"}, + {"key": "cycleway", "value": "share_busway", "description": "🄵 Bike Lanes"}, + {"key": "cycleway", "value": "opposite_lane", "description": "🄵 Bike Lanes"}, + {"key": "cycleway", "value": "opposite", "description": "🄵 Bike Lanes"}, {"key": "cycleway:left", "value": "none", "description": "🄵 Bike Lanes"}, {"key": "cycleway:left", "value": "lane", "description": "🄵 Bike Lanes"}, {"key": "cycleway:left", "value": "shared_lane", "description": "🄵 Bike Lanes"}, diff --git a/dist/locales/en.json b/dist/locales/en.json index a93abebf8..7775b2472 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -1170,7 +1170,7 @@ "navigation_zoom": "You can zoom in or out by scrolling with the mouse wheel or trackpad, or by clicking the {plus} / {minus} buttons along the side of the map. You can also use the `+`, `-` keys on your keyboard.", "features_h": "Map Features", "features": "We use the word *features* to describe things that appear on the map, such as roads, buildings, or points of interest. Anything in the real world can be mapped as a feature on OpenStreetMap. Map features are represented on the map using *points*, *lines*, or *areas*.", - "nodes_ways": "In OpenStreetmap, points are sometimes called *nodes*, and lines and areas are sometimes called *ways*." + "nodes_ways": "In OpenStreetMap, points are sometimes called *nodes*, and lines and areas are sometimes called *ways*." }, "editing": { "title": "Editing & Saving", @@ -1305,7 +1305,7 @@ "sources": "By default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is chosen as the background image. Depending on where you are editing, other imagery sources will be available. Some may be newer or have higher resolution, so it is always useful to check and see which layer is the best one to use as a mapping reference.", "offsets_h": "Adjusting Imagery Offset", "offset": "Imagery is sometimes offset slightly from accurate map data. If you see a lot of roads or buildings shifted from the background imagery, it may be the imagery that's incorrect, so don't move them all to match the background. Instead, you can adjust the background so that it matches the existing data by expanding the \"Adjust Imagery Offset\" section at the bottom of the Background Settings pane.", - "offset_change": "Click on the small triangles to adjust the imagery offset in small steps, or hold the left mouse button and drag within the gray square to slide the imagery into alignment." + "offset_change": "Click on the small triangles to adjust the imagery offset in small steps, or hold the {leftclick} left mouse button and drag within the gray square to slide the imagery into alignment." }, "streetlevel": { "title": "Street Level Photos", @@ -5664,7 +5664,7 @@ }, "landuse/forest": { "name": "Managed Forest", - "terms": "cut,forest,lumber,tree" + "terms": "cut,forest,forestry,lumber,silviculture,tree" }, "landuse/garages": { "name": "Garage Landuse", diff --git a/modules/ui/field.js b/modules/ui/field.js index 856b9e41a..822fd5818 100644 --- a/modules/ui/field.js +++ b/modules/ui/field.js @@ -69,6 +69,14 @@ export function uiField(context, presetField, entity, options) { function isPresent() { return _some(field.keys, function(key) { + if (field.type === 'multiCombo') { + for (var tagKey in _tags) { + if (tagKey.indexOf(key) === 0) { + return true; + } + } + return false; + } return _tags[key] !== undefined; }); } diff --git a/modules/ui/fields/cycleway.js b/modules/ui/fields/cycleway.js index db10edfca..da596784b 100644 --- a/modules/ui/fields/cycleway.js +++ b/modules/ui/fields/cycleway.js @@ -34,9 +34,10 @@ export function uiFieldCycleway(field, context) { .attr('class', 'labeled-inputs') .merge(div); + var keys = ['cycleway:left', 'cycleway:right']; items = div.selectAll('li') - .data(field.keys); + .data(keys); var enter = items.enter() .append('li')