Opencyclemap stylesheet
authorAndy Allan <gravitystorm@gmail.com>
Fri, 18 Jun 2010 14:21:02 +0000 (14:21 +0000)
committerAndy Allan <gravitystorm@gmail.com>
Fri, 18 Jun 2010 14:21:02 +0000 (14:21 +0000)
resources/opencyclemap.css [new file with mode: 0644]
resources/stylesheets.xml

diff --git a/resources/opencyclemap.css b/resources/opencyclemap.css
new file mode 100644 (file)
index 0000000..56c20ab
--- /dev/null
@@ -0,0 +1,160 @@
+/*
+
+       Stylesheet that mimicks, to a certain extent, opencyclemap
+        Andy Allan, June 2010
+
+       Based heavily on:
+       MapCSS demonstration stylesheet
+       Richard Fairhurst, October 2009
+       
+*/
+
+/* This rule applies to all areas (closed ways). Note that rules are applied in the order
+  they appear in the file, so later rules may replace this one for some ways.
+  This is used as a debugger for finding unstyled areas; it's obviously oversimplistic since
+  it picks up closed-loop highways. */
+
+way :area { color: grey; width: 1; fill-color: red; fill-opacity: 0.1; }
+
+/* A set of fairly standard rules.
+  We use z-index to make sure high-priority roads appear above minor ones.
+  The default z-index is 5. If an object matches multiple rules with the same
+  z-index then the rules are "merged" (but individual properties become one or the other)  */
+
+/*way[highway=motorway],way[highway=motorway_link],
+way[highway=trunk],way[highway=trunk_link],
+way[highway=primary],way[highway=primary_link],
+way[highway=secondary],way[highway=secondary_link],
+way[highway=tertiary],way[highway=tertiary_link],
+way[highway=residential]                             { text: name; text-color: black; font-size: 7; text-position: line;}*/
+way[highway=motorway],way[highway=motorway_link]    { z-index: 9; color: #bfbfcf; width: 7; casing-color: #506077; casing-width: 9; }
+way[highway=trunk],way[highway=trunk_link]          { z-index: 9; color: #c8d8c8; width: 7; casing-color: #477147; casing-width: 9; }
+way[highway=primary],way[highway=primary_link]      { z-index: 8; color: #d8c8c8; width: 7; casing-color: #8d4346; casing-width: 9; }
+way[highway=secondary],way[highway=secondary_link]  { z-index: 7; color: #eeeec9; width: 7; casing-color: #a37b48; casing-width: 9; }
+way[highway=tertiary],way[highway=unclassified]     { z-index: 6; color: #eeeec9; width: 5; casing-color: #999999; casing-width: 7; }
+way[highway=residential]                            { z-index: 5; color: white; width: 5; casing-color: #999; casing-width: 7; }
+way[highway=service]                                { color: white; width: 3; casing-color: #999; casing-width: 5; }
+
+/* Pedestrian precincts need to be treated carefully. Only closed-loops with an explicit
+area=yes tag should be filled. The below doesn't yet work as intended. */
+way[highway=pedestrian] !:area { color: #ddddee; width: 5; casing-color: #555555; casing-width: 6; }
+way[highway=pedestrian] :area  { color: #555555; width: 1; fill-color: #ddddee; fill-opacity: 0.8; }
+
+way[highway=steps]     { color: #be6c6c; width: 2; dashes: 4, 2; }
+way[highway=footway]   { color: #be6c6c; width: 2; dashes: 6, 3; }
+way[highway=cycleway]  { color: blue; width: 1.6; dashes: 5, 4; }
+way[highway=bridleway] { z-index:9; color: #996644; width: 2; dashes: 4, 2, 2, 2; }
+way[highway=track]     { color: #996644; width: 2; dashes: 4, 2; }
+way[highway=path]      { color: lightgreen; width: 2; dashes: 2, 2; }
+
+way[waterway=river], way[waterway=canal] { color: blue; width: 2; text:name; text-color:blue; font-size:9; text-position: offset; text-offset: 7;}
+
+way[barrier] {color: #000000; width: 1}
+
+/* Fills can be solid colour or bitmap images */
+
+
+way[natural] :area                          { color: #ADD6A5; width: 1; fill-color: #ADD6A5; fill-opacity: 0.2; }
+way[landuse] :area                          { color: #efefef; width: 1; fill-color: #f5f5f5; fill-opacity: 0.3; }
+way[amenity],way[shop] :area                { color: #ADCEB5; width: 1; fill-color: #ADCEB5; fill-opacity: 0.2; }
+way[leisure],way[sport] :area               { color: #8CD6B5; width: 1; fill-color: #8CD6B5; fill-opacity: 0.2; }
+way[tourism] :area                          { color: #F7CECE; width: 1; fill-color: #F7CECE; fill-opacity: 0.2; }
+way[historic],way[ruins] :area              { color: #F7F7DE; width: 1; fill-color: #F7F7DE; fill-opacity: 0.2; }
+way[military] :area                         { color: #D6D6D6; width: 1; fill-color: #D6D6D6; fill-opacity: 0.2; }
+way[building] :area                         { color: #8d8d8d; width: 1; fill-color: #e0e0e0; fill-opacity: 0.2; }
+way[natural=water],
+way[waterway] :area               { color: blue;    width: 2; fill-color: blue;    fill-opacity: 0.2; }
+way[landuse=forest],way[natural=wood] :area { color: green;   width: 2; fill-color: green;   fill-opacity: 0.2; }
+way[leisure=pitch],way[leisure=park]        { color: #44ff44; width: 1; fill-color: #44ff44; fill-opacity: 0.2; }
+way[amenity=parking] :area                  { color: gray;    width: 1; fill-color: gray;    fill-opacity: 0.2; }
+way[public_transport=pay_scale_area] :area  { color: gray;    width: 1; fill-color: gray;    fill-opacity: 0.1; }
+
+/* Addressing. Nodes with addresses *and* match POIs should have a poi icon, so we put addressing first */ 
+
+node[addr:housenumber],
+node[addr:housename] { icon-image: circle; icon-width: 4; color: #B0E0E6; casing-color:blue; casing-width: 1; }
+way[addr:interpolation] { color: #B0E0E6; width: 3; dashes: 3,3;}
+
+/* POIs, too, can have bitmap icons - they can even be transparent */
+
+node[amenity=pub] { icon-image: icons/pub.png; text-offset: 15; font-family: DejaVu; text: name; font-size: 9; }
+/*node[place] { icon-image: icons/place.png; text-offset: 17; font-family: DejaVu; text: name; font-size: 9; font-weight: bold; text-decoration: underline; }
+node[railway=station] { icon-image: icons/station.png; text-offset: 13; font-family: DejaVu; text: name; font-size: 9; font-weight: bold; }
+node[aeroway=aerodrome] { icon-image: icons/airport.png; text-offset: 13; font-family: DejaVu; text: name; font-size: 10; }
+node[amenity=atm] { icon-image: icons/atm.png; }
+node[amenity=bank] { icon-image: icons/bank.png; text-offset: 15; text: name; }
+node[highway=bus_stop] { icon-image: icons/bus_stop.png; }
+node[amenity=cafe] { icon-image: icons/cafe.png; text-offset: 15; text: name; }
+node[shop=convenience] { icon-image: icons/convenience.png; text-offset:15; text:name; }
+node[shop=supermarket] { icon-image: icons/supermarket.png; text-offset:15; text:name; }
+node[amenity=fast_food] { icon-image: icons/fast_food.png; text-offset:15; text: name; }
+node[amenity=fire_station] { icon-image: icons/fire_station.png; }
+node[amenity=hospital] { icon-image: icons/hospital.png; }
+node[tourism=hotel] { icon-image: icons/hotel.png; }
+node[amenity=parking] { icon-image: icons/parking.png; } */
+node[amenity=bicycle_parking] { icon-image: icons/parking_cycle.png; text-offset: 15; text: capacity; text-color: blue }
+/* node[amenity=pharmacy] { icon-image: icons/pharmacy.png; }
+node[amenity=pharmacy][dispensing=yes] { icon-image: icons/pharmacy_dispensing.png; }
+node[amenity=police] { icon-image: icons/police.png; }
+node[amenity=post_box] { icon-image: icons/post_box.png; }
+node[amenity=recycling] { icon-image: icons/recycling.png; }
+node[amenity=restaurant] { icon-image: icons/restaurant.png; }
+node[amenity=school] { icon-image: icons/school.png; }
+node[amenity=taxi] { icon-image: icons/taxi.png; }
+node[amenity=telephone] { icon-image: icons/telephone.png; }
+way node[barrier=gate], way node[highway=gate] { icon-image: icons/gate.png; }
+way node[barrier=bollard] { icon-image: icons/bollard.png; }
+node[barrier=cattle_grid] { icon-image: icons/cattle_grid.png; }*/
+       
+/* We can stack styles at different z-index (depth) */
+
+way[railway=rail]
+       { z-index: 6; color: #444444; width: 5; } 
+       { z-index: 7; color: white; width: 3; dashes: 12,12; }
+way[railway=platform] { color:black; width: 2; }
+way[railway=subway]
+        { z-index: 6; color: #444444; width: 5; }
+        { z-index: 7; color: white; width: 3; dashes: 8,8; }
+
+/* Bridge */
+way[bridge=yes], way[bridge=viaduct], way[bridge=suspension]
+    { z-index: 4; color: white; width: eval('_width+3'); }
+    { z-index: 3; color: black; width: eval('_width+6'); }
+    
+/* Tunnel */
+way[tunnel=yes]
+    { z-index: 4; color: white; width: eval('_width+2'); }
+    { z-index: 3; color: black; width: eval('_width+6'); dashes: 4,4; }
+
+/* Oneway */
+way[oneway=yes] { z-index: 10; color: #6c70d5; width: 2; dashes: 10,30; line-style: arrows; }
+
+
+/* Change the road colour based on dynamically set "highlighted" tag (see earlier) */
+
+way .highlighted { color: pink; }
+
+/* Interactive editors may choose different behaviour when a user mouses-over or selects
+   an object. Potlatch 2 supports these but the stand-alone Halcyon viewer does not */
+
+way :hover     { z-index: 2; width: eval('_width+10'); color: #ffff99; }
+way :selected { z-index: 2; width: eval('_width+10'); color: yellow; opacity: 0.7;}
+way !:drawn { z-index:10; width: 0.5; color: gray; } 
+
+node :selectedway { z-index: 9; icon-image: square; icon-width: 8; color: red; }
+node :hoverway { z-index: 9; icon-image: square; icon-width: 7; color: blue; }
+node !:drawn :poi { z-index: 2; icon-image: circle; icon-width: 3; color: lightsteelblue; casing-color: black; casing-width: 1; }
+node :selected { z-index: 1; icon-image: square; icon-width: eval('_width+10'); color: yellow; }
+node :junction :selectedway { z-index: 8; icon-image: square; icon-width: 12; casing-color: black; casing-width: 1; }
+       
+/* Descendant selectors provide an easy way to style relations: this example means "any way
+   which is part of a relation whose type=route". */
+
+relation[type=route] way { z-index: 1; width: 17; color: yellow; opacity: 0.3; }
+relation[type=route][route=bicycle][network=ncn] way { z-index: 1; width: 12; color: red; opacity: 0.3; }
+relation[type=route][route=bicycle][network=rcn] way { z-index: 1; width: 12; color: cyan; opacity: 0.3; }
+relation[type=route][route=bicycle][network=lcn] way { z-index: 1; width: 12; color: blue; opacity: 0.3; }
+relation[type=route][route=bicycle][network=mtb] way { z-index: 1; width: 12; color: #48a448; opacity: 0.3; }
+
+
+
index baefd56..122e290 100755 (executable)
@@ -9,4 +9,8 @@
                <name>Wireframe</name>
                <url>wireframe.css</url>
        </stylesheet>
+    <stylesheet>
+        <name>OpenCycleMap</name>
+        <url>opencyclemap.css</url>
+    </stylesheet>
 </stylesheets>