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