@ -1,7 +1,7 @@
var OverpassLayer = require ( 'overpass-layer' )
function cssStyle ( style ) {
var ret = ''
let ret = ''
if ( 'color' in style ) {
ret += 'stroke: ' + style . color + ';'
}
@ -35,22 +35,15 @@ function cssStyle (style) {
}
function markerLine ( data ) {
var ret = '<svg anchorX="13" anchorY="8" width="25" height="15">'
let styles = parseOptions ( data )
if ( ! ( 'styles' in data ) ) {
data = {
style : data ,
styles : [ 'default' ]
}
}
let ret = '<svg anchorX="13" anchorY="8" width="25" height="15">'
for ( var i = 0 ; i < data . styles . length ; i ++ ) {
var k = data . styles [ i ]
var style = ( k === 'default' ? data . style : data [ 'style:' + k ] ) || { }
var y = 8.0 + parseFloat ( 'offset' in style ? style . offset : 0 )
styles . forEach ( style => {
let y = 8.0 + parseFloat ( 'offset' in style ? style . offset : 0 )
ret += '<line x1="0" y1="' + y + '" x2="25" y2="' + y + '" style="' + cssStyle ( style ) + '"/>'
}
} )
ret += '</svg>'
@ -58,42 +51,81 @@ function markerLine (data) {
}
function markerPolygon ( data ) {
var ret = '<svg anchorX="13" anchorY="8" width="25" height="25">'
if ( ! ( 'styles' in data ) ) {
data = {
style : data ,
styles : [ 'default' ]
}
}
let ret = '<svg anchorX="13" anchorY="8" width="25" height="25">'
for ( var i = 0 ; i < data . styles . length ; i ++ ) {
var k = data . styles [ i ]
var style = ( k === 'default' ? data . style : data [ 'style:' + k ] ) || { }
let styles = parseOptions ( data )
styles . forEach ( style => {
ret += '<rect x="3" y="3" width="18" height="18" style="' + cssStyle ( style ) + '"/>'
}
} )
ret += '</svg>'
return ret
}
function markerCircle ( data ) {
let styles = parseOptions ( data )
let c = styles
. map ( style => ( style . size || style . radius || 12 ) + ( style . width / 2 ) )
. sort ( ) [ 0 ]
let ret = '<svg anchorX="' + ( c + 0.5 ) + ' anchorY="' + ( c + 0.5 ) + '" width="' + ( c * 2 ) + '" height="' + ( c * 2 ) + '">'
styles . forEach ( style => {
ret += '<circle cx="' + c + '" cy="' + c + '" r="' + ( style . radius || 12 ) + '" style="' + cssStyle ( style ) + '"/>'
} )
ret += '</svg>'
return ret
}
function markerCircle ( style ) {
var fillColor = 'fillColor' in style ? style . fillColor : '#f2756a'
var color = 'color' in style ? style . color : '#000000'
var width = 'width' in style ? style . width : 1
var radius = 'radius' in style ? style . radius : 12
function markerPointer ( data ) {
let ret = '<svg anchorX="13" anchorY="45" width="25" height="45" signAnchorX="0" signAnchorY="-31">'
let styles = parseOptions ( data )
styles . forEach ( style => {
ret += '<path d="M0.5,12.5 A 12,12 0 0 1 24.5,12.5 C 24.5,23 13,30 12.5,44.5 C 12,30 0.5,23 0.5,12.5" style="' + cssStyle ( style ) + '"/>'
} )
ret += '</svg>'
return '<svg anchorX="13" anchorY="13" width="25" height="25"><circle cx="12.5" cy="12.5" r=' + radius + ' style="stroke: ' + color + '; stroke-width: ' + width + '; fill: ' + fillColor + ';"/></svg>'
return ret
}
function markerPointer ( style ) {
var fillColor = 'fillColor' in style ? style . fillColor : '#f2756a'
var color = 'color' in style ? style . color : '#000000'
var width = 'width' in style ? style . width : 1
function parseOptions ( data ) {
if ( ! data || ! ( 'style' in data ) && ! ( 'styles' in data ) ) {
let ret = [
{ fillColor : '#f2756a' , color : '#000000' , width : 1 , radius : 12 , fillOpacity : 1 } ,
]
if ( data && data . color ) {
ret [ 0 ] . fillColor = data . color
ret [ 0 ] . fillOpacity = 0.2
}
if ( data ) for ( let k in data ) {
ret [ 0 ] [ k ] = data [ k ]
}
return ret
}
if ( ! ( 'styles' in data ) ) {
data = {
style : data ,
styles : [ 'default' ]
}
}
if ( typeof data . styles === 'string' ) {
data . styles = data . styles . split ( /,/g )
}
return '<svg anchorX="13" anchorY="45" width="25" height="45" signAnchorX="0" signAnchorY="-31"><path d="M0.5,12.5 A 12,12 0 0 1 24.5,12.5 C 24.5,23 13,30 12.5,44.5 C 12,30 0.5,23 0.5,12.5" style="stroke: ' + color + '; stroke-width: ' + width + '; fill: ' + fillColor + ';"/></svg>'
return data . styles . map ( k => ( k === 'default' ? data . style : data [ 'style:' + k ] ) || { } )
}
OverpassLayer . twig . extendFunction ( 'markerLine' , markerLine )