Concept for rendering maproulette tasks

This commit is contained in:
Robin van der Linde 2022-07-09 21:41:33 +00:00 committed by GitHub
parent 063d7e4637
commit a7f2c26a1d
2 changed files with 167 additions and 0 deletions

View file

@ -82,6 +82,28 @@ export default class GeoJsonSource implements FeatureSourceForLayer, Tiled {
Utils.downloadJsonCached(url, 60 * 60)
.then(json => {
self.state.setData("loaded")
// TODO: move somewhere else, just for testing
// Check for maproulette data
if (url.startsWith("https://maproulette.org/api/v2/")) {
console.log("MapRoulette data detected")
const data = json;
let maprouletteFeatures: any[] = [];
data.forEach(element => {
maprouletteFeatures.push({
type: "Feature",
geometry: {
type: "Point",
coordinates: [element.point.lng, element.point.lat]
},
properties: {
// Map all properties to the feature
...element,
}
});
});
json.features = maprouletteFeatures;
}
if (json.features === undefined || json.features === null) {
return;
}

View file

@ -0,0 +1,145 @@
{
"id": "maproulette",
"title": {
"en": "MapRoulette Test"
},
"description": {
"en": "MapRoulette Test"
},
"version": "1.0.0",
"hideFromOverview": true,
"icon": "./assets/svg/bug.svg",
"maintainer": "",
"startLat": 0,
"startLon": 0,
"startZoom": 4,
"layers": [
{
"id": "maproulette",
"source": {
"geoJson": "https://maproulette.org/api/v2/tasks/box/{x_min}/{y_min}/{x_max}/{y_max}",
"geoJsonZoomLevel": 16,
"osmTags": "id~*"
},
"mapRendering": [
{
"location": [
"point",
"centroid"
],
"icon": {
"render": "pin:white",
"mappings": [
{
"if": "status=0",
"then": "pin:#959DFF"
},
{
"if": "status=1",
"then": "pin:#65D2DA"
},
{
"if": "status=2",
"then": "pin:#F7BB59"
},
{
"if": "status=3",
"then": "pin:#F7BB59"
},
{
"if": "status=4",
"then": "pin:#737373"
},
{
"if": "status=5",
"then": "pin:#CCB186"
},
{
"if": "status=6",
"then": "pin:#FF5E63"
},
{
"if": "status=9",
"then": "pin:#FF349C"
}
]
},
"iconSize": "40,40,center"
}
],
"tagRenderings": [
{
"id": "link",
"render": "<a href='https://maproulette.org/challenge/{parentId}/task/{id}'>View this task</a>"
},
{
"id": "status",
"render": "Current status: {status}",
"mappings": [
{
"if": "status=0",
"then": {
"en": "Task is created"
}
},
{
"if": "status=1",
"then": {
"en": "Task is fixed"
}
},
{
"if": "status=2",
"then": {
"en": "Task is a false positive"
}
},
{
"if": "status=3",
"then": {
"en": "Task is skipped"
}
},
{
"if": "status=4",
"then": {
"en": "Task is deleted"
}
},
{
"if": "status=5",
"then": {
"en": "Task is already fixed"
}
},
{
"if": "status=6",
"then": {
"en": "Task is marked as too hard"
}
},
{
"if": "status=9",
"then": {
"en": "Task is disabled"
}
}
]
},
"all_tags"
],
"description": {
"en": "Layer showing all tasks in MapRoulette"
},
"minzoom": 15,
"name": {
"en": "MapRoulette Tasks"
},
"title": {
"render": {
"en": "MapRoulette Item: {parentName}"
}
}
}
]
}