forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			82 lines
		
	
	
		
			No EOL
		
	
	
		
			2.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			No EOL
		
	
	
		
			2.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import {Layout} from "../Layout";
 | |
| import {LayerDefinition} from "../LayerDefinition";
 | |
| import {Or, Tag} from "../../Logic/TagsFilter";
 | |
| import {TagRenderingOptions} from "../TagRenderingOptions";
 | |
| 
 | |
| 
 | |
| export class SmoothnessLayer extends LayerDefinition {
 | |
| 
 | |
|     constructor() {
 | |
|         super("smoothness");
 | |
|         this.name = "smoothness";
 | |
|         this.minzoom = 17;
 | |
|         this.overpassFilter = new Or([
 | |
|             new Tag("highway","unclassified"),
 | |
|             new Tag("highway", "residential"),
 | |
|             new Tag("highway", "cycleway"),
 | |
|             new Tag("highway", "footway"),
 | |
|             new Tag("highway", "path"),
 | |
|             new Tag("highway", "tertiary")
 | |
|         ]);
 | |
|         
 | |
|         this.elementsToShow = [
 | |
|             new TagRenderingOptions({
 | |
|                 question: "How smooth is this road to rollerskate on",
 | |
|                 mappings: [
 | |
|                     {k: new Tag("smoothness","bad"), txt: "It's horrible"},
 | |
|                     {k: new Tag("smoothness","intermediate"), txt: "It is passable by rollerscate, but only if you have to"},
 | |
|                     {k: new Tag("smoothness","good"), txt: "Good, but it has some friction or holes"},
 | |
|                     {k: new Tag("smoothness","very_good"), txt: "Quite good and enjoyable"},
 | |
|                     {k: new Tag("smoothness","excellent"), txt: "Excellent - this is where you'd want to drive 24/7"},
 | |
|                 ]
 | |
|             })
 | |
|         ]
 | |
|         
 | |
|         this.style = (properties) => {
 | |
|             let color = "#000000";
 | |
|             if(new Tag("smoothness","bad").matchesProperties(properties)){
 | |
|                 color = "#ff0000";
 | |
|             }
 | |
|             if(new Tag("smoothness","intermediate").matchesProperties(properties)){
 | |
|                 color = "#ffaa00";
 | |
|             }
 | |
|             if(new Tag("smoothness","good").matchesProperties(properties)){
 | |
|                 color = "#ccff00";
 | |
|             }
 | |
|             if(new Tag("smoothness","very_good").matchesProperties(properties)){
 | |
|                 color = "#00aa00";
 | |
|             }
 | |
|             if(new Tag("smoothness","excellent").matchesProperties(properties)){
 | |
|                 color = "#00ff00";
 | |
|             }
 | |
|             
 | |
|             return {
 | |
|                 color: color,
 | |
|                 icon: undefined,
 | |
|                 weight: 8
 | |
|             }
 | |
|             
 | |
|         }
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| export class Smoothness extends Layout {
 | |
|     constructor() {
 | |
|         super(
 | |
|             "smoothness",
 | |
|             ["en"   ],
 | |
|             "Smoothness while rollerskating",
 | |
|             [new SmoothnessLayer()],
 | |
|             17,
 | |
|             51.2,
 | |
|             3.2,
 | |
|             "Give smoothness feedback for rollerskating"
 | |
|         );
 | |
|         this.widenFactor = 0.005
 | |
|         this.hideFromOverview = true;
 | |
|         this.enableAdd = false;
 | |
|     }
 | |
| } |