mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-11 09:41:40 -05:00
68 lines
1.3 KiB
JavaScript
68 lines
1.3 KiB
JavaScript
|
|
import { BaseLayer } from './base_layer'
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Areas layer for user-defined regions
|
||
|
|
*/
|
||
|
|
export class AreasLayer extends BaseLayer {
|
||
|
|
constructor(map, options = {}) {
|
||
|
|
super(map, { id: 'areas', ...options })
|
||
|
|
}
|
||
|
|
|
||
|
|
getSourceConfig() {
|
||
|
|
return {
|
||
|
|
type: 'geojson',
|
||
|
|
data: this.data || {
|
||
|
|
type: 'FeatureCollection',
|
||
|
|
features: []
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
getLayerConfigs() {
|
||
|
|
return [
|
||
|
|
// Area fills
|
||
|
|
{
|
||
|
|
id: `${this.id}-fill`,
|
||
|
|
type: 'fill',
|
||
|
|
source: this.sourceId,
|
||
|
|
paint: {
|
||
|
|
'fill-color': '#ff0000',
|
||
|
|
'fill-opacity': 0.4
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
// Area outlines
|
||
|
|
{
|
||
|
|
id: `${this.id}-outline`,
|
||
|
|
type: 'line',
|
||
|
|
source: this.sourceId,
|
||
|
|
paint: {
|
||
|
|
'line-color': '#ff0000',
|
||
|
|
'line-width': 3
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
// Area labels
|
||
|
|
{
|
||
|
|
id: `${this.id}-labels`,
|
||
|
|
type: 'symbol',
|
||
|
|
source: this.sourceId,
|
||
|
|
layout: {
|
||
|
|
'text-field': ['get', 'name'],
|
||
|
|
'text-font': ['Open Sans Bold', 'Arial Unicode MS Bold'],
|
||
|
|
'text-size': 14
|
||
|
|
},
|
||
|
|
paint: {
|
||
|
|
'text-color': '#111827',
|
||
|
|
'text-halo-color': '#ffffff',
|
||
|
|
'text-halo-width': 2
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
|
||
|
|
getLayerIds() {
|
||
|
|
return [`${this.id}-fill`, `${this.id}-outline`, `${this.id}-labels`]
|
||
|
|
}
|
||
|
|
}
|