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;
 | 
						|
    }
 | 
						|
} |