mirror of
https://github.com/rastapasta/mapscii.git
synced 2024-11-21 23:53:08 +01:00
🎨 improving Styler condition parser, adding main.js
This commit is contained in:
parent
1acde4d1d3
commit
d7c7500a7f
39
LabelBuffer.coffee
Normal file
39
LabelBuffer.coffee
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
###
|
||||||
|
termap - Terminal Map Viewer
|
||||||
|
by Michael Strassburger <codepoet@cpan.org>
|
||||||
|
|
||||||
|
Using 2D spatial indexing to avoid overlapping labels and markers
|
||||||
|
Future: to detect collision on mouse interaction
|
||||||
|
###
|
||||||
|
|
||||||
|
rbush = require 'rbush'
|
||||||
|
|
||||||
|
module.exports = class LabelBuffer
|
||||||
|
tree: null
|
||||||
|
margin: 5
|
||||||
|
|
||||||
|
constructor: (@width, @height) ->
|
||||||
|
@tree = rbush()
|
||||||
|
|
||||||
|
clear: ->
|
||||||
|
@tree.clear()
|
||||||
|
|
||||||
|
project: (x, y) ->
|
||||||
|
[Math.floor(x/2), Math.floor(y/4)]
|
||||||
|
|
||||||
|
writeIfPossible: (text, x, y) ->
|
||||||
|
point = @project x, y
|
||||||
|
|
||||||
|
if @_hasSpace text, point[0], point[1]
|
||||||
|
@tree.insert @_calculateArea text, point[0], point[1]
|
||||||
|
else
|
||||||
|
false
|
||||||
|
|
||||||
|
_hasSpace: (text, x, y) ->
|
||||||
|
not @tree.collides @_calculateArea text, x, y, 0
|
||||||
|
|
||||||
|
_calculateArea: (text, x, y, margin = @margin) ->
|
||||||
|
minX: x-margin
|
||||||
|
minY: y-margin
|
||||||
|
maxX: x+margin+text.length
|
||||||
|
maxY: y+margin
|
21
main.js
Normal file
21
main.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/*#
|
||||||
|
termap - Terminal Map Viewer
|
||||||
|
by Michael Strassburger <codepoet@cpan.org>
|
||||||
|
Discover the planet in your console!
|
||||||
|
|
||||||
|
This scripts boots up the application.
|
||||||
|
|
||||||
|
TODO: params parsing and so on
|
||||||
|
#*/
|
||||||
|
|
||||||
|
require('coffee-script/register');
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const Termap = require(__dirname+'/src/Termap');
|
||||||
|
|
||||||
|
termap = new Termap();
|
||||||
|
|
||||||
|
// TODO: abstracing this class, create loader class
|
||||||
|
data = fs.readFileSync(__dirname+"/tiles/regensburg.pbf.gz");
|
||||||
|
termap.renderer.features = termap.renderer._getFeatures(termap.renderer._parseTile(data));
|
||||||
|
termap._draw();
|
@ -4,7 +4,7 @@
|
|||||||
"description": "Terminal Map Viewer",
|
"description": "Terminal Map Viewer",
|
||||||
"main": "termap.coffee",
|
"main": "termap.coffee",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "./node_modules/coffee-script/bin/coffee termap.coffee",
|
"start": "node main",
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
@ -148,7 +148,7 @@ module.exports = class Renderer
|
|||||||
|
|
||||||
_drawFeature: (layer, feature, scale) ->
|
_drawFeature: (layer, feature, scale) ->
|
||||||
# TODO: this is ugly :) need to be fixed @style
|
# TODO: this is ugly :) need to be fixed @style
|
||||||
return false if feature.properties.class is "ferry"
|
#return false if feature.properties.class is "ferry"
|
||||||
feature.type = "LineString" if layer is "building" or layer is "road"
|
feature.type = "LineString" if layer is "building" or layer is "road"
|
||||||
|
|
||||||
toDraw = []
|
toDraw = []
|
||||||
@ -169,16 +169,16 @@ module.exports = class Renderer
|
|||||||
continue unless visible
|
continue unless visible
|
||||||
toDraw.push projectedPoints
|
toDraw.push projectedPoints
|
||||||
|
|
||||||
if style = @styler.getStyleFor layer, feature, 14
|
unless style = @styler.getStyleFor layer, feature, 14
|
||||||
color = style.paint['line-color'] or style.paint['fill-color']
|
return false
|
||||||
|
|
||||||
# TODO: zoom calculation todo for perfect styling
|
color = style.paint['line-color'] or style.paint['fill-color'] or style.paint['text-color']
|
||||||
if color instanceof Object
|
|
||||||
color = color.stops[0][1]
|
|
||||||
|
|
||||||
@canvas.fillStyle = @canvas.strokeStyle = x256 utils.hex2rgb color
|
# TODO: zoom calculation todo for perfect styling
|
||||||
else
|
if color instanceof Object
|
||||||
@canvas.strokeStyle = @canvas.fillStyle = @config.layers[layer].color
|
color = color.stops[0][1]
|
||||||
|
|
||||||
|
@canvas.fillStyle = @canvas.strokeStyle = x256 utils.hex2rgb color
|
||||||
|
|
||||||
switch feature.type
|
switch feature.type
|
||||||
when "LineString"
|
when "LineString"
|
||||||
|
@ -47,10 +47,10 @@ module.exports = class Styler
|
|||||||
true
|
true
|
||||||
|
|
||||||
when "=="
|
when "=="
|
||||||
feature.properties[filter[0]] is filter[1]
|
feature.properties[filter[1]] is filter[2]
|
||||||
|
|
||||||
when "!="
|
when "!="
|
||||||
feature.properties[filter[0]] isnt filter[1]
|
feature.properties[filter[2]] isnt filter[2]
|
||||||
|
|
||||||
when "in"
|
when "in"
|
||||||
field = filter[1]
|
field = filter[1]
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
###
|
###
|
||||||
termap - Terminal Map Viewer
|
termap - Terminal Map Viewer
|
||||||
by Michael Strassburger <codepoet@cpan.org>
|
by Michael Strassburger <codepoet@cpan.org>
|
||||||
|
|
||||||
|
UI and central command center
|
||||||
###
|
###
|
||||||
|
|
||||||
keypress = require 'keypress'
|
keypress = require 'keypress'
|
||||||
|
867
styles/basic.json
Normal file
867
styles/basic.json
Normal file
@ -0,0 +1,867 @@
|
|||||||
|
{
|
||||||
|
"version": 8,
|
||||||
|
"name": "Basic",
|
||||||
|
"metadata": {
|
||||||
|
"mapbox:autocomposite": true,
|
||||||
|
"mapbox:type": "template"
|
||||||
|
},
|
||||||
|
"sources": {
|
||||||
|
"mapbox": {
|
||||||
|
"url": "mapbox://mapbox.mapbox-streets-v7",
|
||||||
|
"type": "vector"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sprite": "mapbox://sprites/mapbox/basic-v9",
|
||||||
|
"glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf",
|
||||||
|
"layers": [
|
||||||
|
{
|
||||||
|
"id": "background",
|
||||||
|
"type": "background",
|
||||||
|
"paint": {
|
||||||
|
"background-color": "#dedede"
|
||||||
|
},
|
||||||
|
"interactive": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "landuse_overlay_national_park",
|
||||||
|
"type": "fill",
|
||||||
|
"source": "mapbox",
|
||||||
|
"source-layer": "landuse_overlay",
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"class",
|
||||||
|
"national_park"
|
||||||
|
],
|
||||||
|
"paint": {
|
||||||
|
"fill-color": "#d2edae",
|
||||||
|
"fill-opacity": 0.75
|
||||||
|
},
|
||||||
|
"interactive": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "landuse_park",
|
||||||
|
"type": "fill",
|
||||||
|
"source": "mapbox",
|
||||||
|
"source-layer": "landuse",
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"class",
|
||||||
|
"park"
|
||||||
|
],
|
||||||
|
"paint": {
|
||||||
|
"fill-color": "#d2edae"
|
||||||
|
},
|
||||||
|
"interactive": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "waterway",
|
||||||
|
"type": "line",
|
||||||
|
"source": "mapbox",
|
||||||
|
"source-layer": "waterway",
|
||||||
|
"filter": [
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"LineString"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"in",
|
||||||
|
"class",
|
||||||
|
"river",
|
||||||
|
"canal"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#a0cfdf",
|
||||||
|
"line-width": {
|
||||||
|
"base": 1.4,
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
8,
|
||||||
|
0.5
|
||||||
|
],
|
||||||
|
[
|
||||||
|
20,
|
||||||
|
15
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"interactive": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "water",
|
||||||
|
"type": "fill",
|
||||||
|
"source": "mapbox",
|
||||||
|
"source-layer": "water",
|
||||||
|
"paint": {
|
||||||
|
"fill-color": "#a0cfdf"
|
||||||
|
},
|
||||||
|
"interactive": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "building",
|
||||||
|
"type": "fill",
|
||||||
|
"source": "mapbox",
|
||||||
|
"source-layer": "building",
|
||||||
|
"paint": {
|
||||||
|
"fill-color": "#d6d6d6"
|
||||||
|
},
|
||||||
|
"interactive": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"interactive": true,
|
||||||
|
"layout": {
|
||||||
|
"line-cap": "butt",
|
||||||
|
"line-join": "miter"
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"LineString"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"in",
|
||||||
|
"class",
|
||||||
|
"motorway_link",
|
||||||
|
"street",
|
||||||
|
"street_limited",
|
||||||
|
"service",
|
||||||
|
"track",
|
||||||
|
"pedestrian",
|
||||||
|
"path",
|
||||||
|
"link"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"structure",
|
||||||
|
"tunnel"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"type": "line",
|
||||||
|
"source": "mapbox",
|
||||||
|
"id": "tunnel_minor",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#efefef",
|
||||||
|
"line-width": {
|
||||||
|
"base": 1.55,
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
4,
|
||||||
|
0.25
|
||||||
|
],
|
||||||
|
[
|
||||||
|
20,
|
||||||
|
30
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"line-dasharray": [
|
||||||
|
0.36,
|
||||||
|
0.18
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"source-layer": "road"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"interactive": true,
|
||||||
|
"layout": {
|
||||||
|
"line-cap": "butt",
|
||||||
|
"line-join": "miter"
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"LineString"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"in",
|
||||||
|
"class",
|
||||||
|
"motorway",
|
||||||
|
"primary",
|
||||||
|
"secondary",
|
||||||
|
"tertiary",
|
||||||
|
"trunk"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"structure",
|
||||||
|
"tunnel"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"type": "line",
|
||||||
|
"source": "mapbox",
|
||||||
|
"id": "tunnel_major",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#fff",
|
||||||
|
"line-width": {
|
||||||
|
"base": 1.4,
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
6,
|
||||||
|
0.5
|
||||||
|
],
|
||||||
|
[
|
||||||
|
20,
|
||||||
|
30
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"line-dasharray": [
|
||||||
|
0.28,
|
||||||
|
0.14
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"source-layer": "road"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"interactive": true,
|
||||||
|
"layout": {
|
||||||
|
"line-cap": "round",
|
||||||
|
"line-join": "round"
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"LineString"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"in",
|
||||||
|
"class",
|
||||||
|
"motorway_link",
|
||||||
|
"street",
|
||||||
|
"street_limited",
|
||||||
|
"service",
|
||||||
|
"track",
|
||||||
|
"pedestrian",
|
||||||
|
"path",
|
||||||
|
"link"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"in",
|
||||||
|
"structure",
|
||||||
|
"none",
|
||||||
|
"ford"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"type": "line",
|
||||||
|
"source": "mapbox",
|
||||||
|
"id": "road_minor",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#efefef",
|
||||||
|
"line-width": {
|
||||||
|
"base": 1.55,
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
4,
|
||||||
|
0.25
|
||||||
|
],
|
||||||
|
[
|
||||||
|
20,
|
||||||
|
30
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source-layer": "road"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"interactive": true,
|
||||||
|
"layout": {
|
||||||
|
"line-cap": "round",
|
||||||
|
"line-join": "round"
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"LineString"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"in",
|
||||||
|
"class",
|
||||||
|
"motorway",
|
||||||
|
"primary",
|
||||||
|
"secondary",
|
||||||
|
"tertiary",
|
||||||
|
"trunk"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"in",
|
||||||
|
"structure",
|
||||||
|
"none",
|
||||||
|
"ford"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"type": "line",
|
||||||
|
"source": "mapbox",
|
||||||
|
"id": "road_major",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#fff",
|
||||||
|
"line-width": {
|
||||||
|
"base": 1.4,
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
6,
|
||||||
|
0.5
|
||||||
|
],
|
||||||
|
[
|
||||||
|
20,
|
||||||
|
30
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source-layer": "road"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"interactive": true,
|
||||||
|
"layout": {
|
||||||
|
"line-cap": "butt",
|
||||||
|
"line-join": "miter"
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"LineString"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"in",
|
||||||
|
"class",
|
||||||
|
"motorway_link",
|
||||||
|
"street",
|
||||||
|
"street_limited",
|
||||||
|
"service",
|
||||||
|
"track",
|
||||||
|
"pedestrian",
|
||||||
|
"path",
|
||||||
|
"link"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"structure",
|
||||||
|
"bridge"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"type": "line",
|
||||||
|
"source": "mapbox",
|
||||||
|
"id": "bridge_minor case",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#dedede",
|
||||||
|
"line-width": {
|
||||||
|
"base": 1.6,
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
12,
|
||||||
|
0.5
|
||||||
|
],
|
||||||
|
[
|
||||||
|
20,
|
||||||
|
10
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"line-gap-width": {
|
||||||
|
"base": 1.55,
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
4,
|
||||||
|
0.25
|
||||||
|
],
|
||||||
|
[
|
||||||
|
20,
|
||||||
|
30
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source-layer": "road"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"interactive": true,
|
||||||
|
"layout": {
|
||||||
|
"line-cap": "butt",
|
||||||
|
"line-join": "miter"
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"LineString"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"in",
|
||||||
|
"class",
|
||||||
|
"motorway",
|
||||||
|
"primary",
|
||||||
|
"secondary",
|
||||||
|
"tertiary",
|
||||||
|
"trunk"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"structure",
|
||||||
|
"bridge"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"type": "line",
|
||||||
|
"source": "mapbox",
|
||||||
|
"id": "bridge_major case",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#dedede",
|
||||||
|
"line-width": {
|
||||||
|
"base": 1.6,
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
12,
|
||||||
|
0.5
|
||||||
|
],
|
||||||
|
[
|
||||||
|
20,
|
||||||
|
10
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"line-gap-width": {
|
||||||
|
"base": 1.55,
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
4,
|
||||||
|
0.25
|
||||||
|
],
|
||||||
|
[
|
||||||
|
20,
|
||||||
|
30
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source-layer": "road"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"interactive": true,
|
||||||
|
"layout": {
|
||||||
|
"line-cap": "round",
|
||||||
|
"line-join": "round"
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"LineString"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"in",
|
||||||
|
"class",
|
||||||
|
"motorway_link",
|
||||||
|
"street",
|
||||||
|
"street_limited",
|
||||||
|
"service",
|
||||||
|
"track",
|
||||||
|
"pedestrian",
|
||||||
|
"path",
|
||||||
|
"link"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"structure",
|
||||||
|
"bridge"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"type": "line",
|
||||||
|
"source": "mapbox",
|
||||||
|
"id": "bridge_minor",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#efefef",
|
||||||
|
"line-width": {
|
||||||
|
"base": 1.55,
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
4,
|
||||||
|
0.25
|
||||||
|
],
|
||||||
|
[
|
||||||
|
20,
|
||||||
|
30
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source-layer": "road"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"interactive": true,
|
||||||
|
"layout": {
|
||||||
|
"line-cap": "round",
|
||||||
|
"line-join": "round"
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"LineString"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"in",
|
||||||
|
"class",
|
||||||
|
"motorway",
|
||||||
|
"primary",
|
||||||
|
"secondary",
|
||||||
|
"tertiary",
|
||||||
|
"trunk"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"structure",
|
||||||
|
"bridge"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"type": "line",
|
||||||
|
"source": "mapbox",
|
||||||
|
"id": "bridge_major",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#fff",
|
||||||
|
"line-width": {
|
||||||
|
"base": 1.4,
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
6,
|
||||||
|
0.5
|
||||||
|
],
|
||||||
|
[
|
||||||
|
20,
|
||||||
|
30
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source-layer": "road"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"interactive": true,
|
||||||
|
"layout": {
|
||||||
|
"line-cap": "round",
|
||||||
|
"line-join": "round"
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"LineString"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"<=",
|
||||||
|
"admin_level",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"maritime",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"type": "line",
|
||||||
|
"source": "mapbox",
|
||||||
|
"id": "admin_country",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#8b8a8a",
|
||||||
|
"line-width": {
|
||||||
|
"base": 1.3,
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
3,
|
||||||
|
0.5
|
||||||
|
],
|
||||||
|
[
|
||||||
|
22,
|
||||||
|
15
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source-layer": "admin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"interactive": true,
|
||||||
|
"minzoom": 5,
|
||||||
|
"layout": {
|
||||||
|
"icon-image": "{maki}-11",
|
||||||
|
"text-offset": [
|
||||||
|
0,
|
||||||
|
0.5
|
||||||
|
],
|
||||||
|
"text-field": "{name_en}",
|
||||||
|
"text-font": [
|
||||||
|
"Open Sans Semibold",
|
||||||
|
"Arial Unicode MS Bold"
|
||||||
|
],
|
||||||
|
"text-max-width": 8,
|
||||||
|
"text-anchor": "top",
|
||||||
|
"text-size": 11,
|
||||||
|
"icon-size": 1
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"Point"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"scalerank",
|
||||||
|
1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"localrank",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"type": "symbol",
|
||||||
|
"source": "mapbox",
|
||||||
|
"id": "poi_label",
|
||||||
|
"paint": {
|
||||||
|
"text-color": "#666",
|
||||||
|
"text-halo-width": 1,
|
||||||
|
"text-halo-color": "rgba(255,255,255,0.75)",
|
||||||
|
"text-halo-blur": 1
|
||||||
|
},
|
||||||
|
"source-layer": "poi_label"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"interactive": true,
|
||||||
|
"layout": {
|
||||||
|
"symbol-placement": "line",
|
||||||
|
"text-field": "{name_en}",
|
||||||
|
"text-font": [
|
||||||
|
"Open Sans Semibold",
|
||||||
|
"Arial Unicode MS Bold"
|
||||||
|
],
|
||||||
|
"text-transform": "uppercase",
|
||||||
|
"text-letter-spacing": 0.1,
|
||||||
|
"text-size": {
|
||||||
|
"base": 1.4,
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
10,
|
||||||
|
8
|
||||||
|
],
|
||||||
|
[
|
||||||
|
20,
|
||||||
|
14
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"LineString"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"in",
|
||||||
|
"class",
|
||||||
|
"motorway",
|
||||||
|
"primary",
|
||||||
|
"secondary",
|
||||||
|
"tertiary",
|
||||||
|
"trunk"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"type": "symbol",
|
||||||
|
"source": "mapbox",
|
||||||
|
"id": "road_major_label",
|
||||||
|
"paint": {
|
||||||
|
"text-color": "#666",
|
||||||
|
"text-halo-color": "rgba(255,255,255,0.75)",
|
||||||
|
"text-halo-width": 2
|
||||||
|
},
|
||||||
|
"source-layer": "road_label"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"interactive": true,
|
||||||
|
"minzoom": 8,
|
||||||
|
"layout": {
|
||||||
|
"text-field": "{name_en}",
|
||||||
|
"text-font": [
|
||||||
|
"Open Sans Semibold",
|
||||||
|
"Arial Unicode MS Bold"
|
||||||
|
],
|
||||||
|
"text-max-width": 6,
|
||||||
|
"text-size": {
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
6,
|
||||||
|
12
|
||||||
|
],
|
||||||
|
[
|
||||||
|
12,
|
||||||
|
16
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"Point"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"in",
|
||||||
|
"type",
|
||||||
|
"town",
|
||||||
|
"village",
|
||||||
|
"hamlet",
|
||||||
|
"suburb",
|
||||||
|
"neighbourhood",
|
||||||
|
"island"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"type": "symbol",
|
||||||
|
"source": "mapbox",
|
||||||
|
"id": "place_label_other",
|
||||||
|
"paint": {
|
||||||
|
"text-color": "#666",
|
||||||
|
"text-halo-color": "rgba(255,255,255,0.75)",
|
||||||
|
"text-halo-width": 1,
|
||||||
|
"text-halo-blur": 1
|
||||||
|
},
|
||||||
|
"source-layer": "place_label"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"interactive": true,
|
||||||
|
"layout": {
|
||||||
|
"text-field": "{name_en}",
|
||||||
|
"text-font": [
|
||||||
|
"Open Sans Bold",
|
||||||
|
"Arial Unicode MS Bold"
|
||||||
|
],
|
||||||
|
"text-max-width": 10,
|
||||||
|
"text-size": {
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
3,
|
||||||
|
12
|
||||||
|
],
|
||||||
|
[
|
||||||
|
8,
|
||||||
|
16
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"maxzoom": 16,
|
||||||
|
"filter": [
|
||||||
|
"all",
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"Point"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"==",
|
||||||
|
"type",
|
||||||
|
"city"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"type": "symbol",
|
||||||
|
"source": "mapbox",
|
||||||
|
"id": "place_label_city",
|
||||||
|
"paint": {
|
||||||
|
"text-color": "#666",
|
||||||
|
"text-halo-color": "rgba(255,255,255,0.75)",
|
||||||
|
"text-halo-width": 1,
|
||||||
|
"text-halo-blur": 1
|
||||||
|
},
|
||||||
|
"source-layer": "place_label"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"interactive": true,
|
||||||
|
"layout": {
|
||||||
|
"text-field": "{name_en}",
|
||||||
|
"text-font": [
|
||||||
|
"Open Sans Regular",
|
||||||
|
"Arial Unicode MS Regular"
|
||||||
|
],
|
||||||
|
"text-max-width": 10,
|
||||||
|
"text-size": {
|
||||||
|
"stops": [
|
||||||
|
[
|
||||||
|
3,
|
||||||
|
14
|
||||||
|
],
|
||||||
|
[
|
||||||
|
8,
|
||||||
|
22
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"maxzoom": 12,
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"Point"
|
||||||
|
],
|
||||||
|
"type": "symbol",
|
||||||
|
"source": "mapbox",
|
||||||
|
"id": "country_label",
|
||||||
|
"paint": {
|
||||||
|
"text-color": "#666",
|
||||||
|
"text-halo-color": "rgba(255,255,255,0.75)",
|
||||||
|
"text-halo-width": 1,
|
||||||
|
"text-halo-blur": 1
|
||||||
|
},
|
||||||
|
"source-layer": "country_label"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -988,7 +988,7 @@
|
|||||||
"type": "symbol",
|
"type": "symbol",
|
||||||
"id": "poi_label_4",
|
"id": "poi_label_4",
|
||||||
"paint": {
|
"paint": {
|
||||||
"text-color": "#666"
|
"text-color": "#aa0"
|
||||||
},
|
},
|
||||||
"source-layer": "poi_label",
|
"source-layer": "poi_label",
|
||||||
"filter": [
|
"filter": [
|
||||||
@ -1013,7 +1013,7 @@
|
|||||||
"type": "symbol",
|
"type": "symbol",
|
||||||
"id": "poi_label_3",
|
"id": "poi_label_3",
|
||||||
"paint": {
|
"paint": {
|
||||||
"text-color": "#666"
|
"text-color": "#cc0"
|
||||||
},
|
},
|
||||||
"source-layer": "poi_label",
|
"source-layer": "poi_label",
|
||||||
"filter": [
|
"filter": [
|
||||||
@ -1038,7 +1038,7 @@
|
|||||||
"type": "symbol",
|
"type": "symbol",
|
||||||
"id": "poi_label_2",
|
"id": "poi_label_2",
|
||||||
"paint": {
|
"paint": {
|
||||||
"text-color": "#666"
|
"text-color": "#ee0"
|
||||||
},
|
},
|
||||||
"source-layer": "poi_label",
|
"source-layer": "poi_label",
|
||||||
"filter": [
|
"filter": [
|
||||||
@ -1074,7 +1074,7 @@
|
|||||||
"type": "symbol",
|
"type": "symbol",
|
||||||
"id": "poi_label_1",
|
"id": "poi_label_1",
|
||||||
"paint": {
|
"paint": {
|
||||||
"text-color": "#666"
|
"text-color": "#ff0"
|
||||||
},
|
},
|
||||||
"source-layer": "poi_label",
|
"source-layer": "poi_label",
|
||||||
"filter": [
|
"filter": [
|
||||||
@ -1242,7 +1242,7 @@
|
|||||||
"type": "symbol",
|
"type": "symbol",
|
||||||
"id": "place_label_city",
|
"id": "place_label_city",
|
||||||
"paint": {
|
"paint": {
|
||||||
"text-color": "#333"
|
"text-color": "#f00"
|
||||||
},
|
},
|
||||||
"source-layer": "place_label",
|
"source-layer": "place_label",
|
||||||
"filter": [
|
"filter": [
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
fs = require 'fs'
|
|
||||||
Termap = require __dirname+'/src/Termap'
|
|
||||||
|
|
||||||
termap = new Termap()
|
|
||||||
|
|
||||||
# TODO: abstracing this class, create loader class
|
|
||||||
data = fs.readFileSync __dirname+"/tiles/regensburg.pbf.gz"
|
|
||||||
termap.renderer.features = termap.renderer._getFeatures termap.renderer._parseTile data
|
|
||||||
termap._draw()
|
|
Loading…
Reference in New Issue
Block a user