mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-11 09:41:40 -05:00
66 lines
1.5 KiB
JavaScript
66 lines
1.5 KiB
JavaScript
import { BaseLayer } from './base_layer'
|
|
|
|
/**
|
|
* Places layer showing user-created places with tags
|
|
* Different colors based on tags
|
|
*/
|
|
export class PlacesLayer extends BaseLayer {
|
|
constructor(map, options = {}) {
|
|
super(map, { id: 'places', ...options })
|
|
}
|
|
|
|
getSourceConfig() {
|
|
return {
|
|
type: 'geojson',
|
|
data: this.data || {
|
|
type: 'FeatureCollection',
|
|
features: []
|
|
}
|
|
}
|
|
}
|
|
|
|
getLayerConfigs() {
|
|
return [
|
|
// Place circles
|
|
{
|
|
id: this.id,
|
|
type: 'circle',
|
|
source: this.sourceId,
|
|
paint: {
|
|
'circle-radius': 10,
|
|
'circle-color': [
|
|
'coalesce',
|
|
['get', 'color'], // Use tag color if available
|
|
'#6366f1' // Default indigo color
|
|
],
|
|
'circle-stroke-width': 2,
|
|
'circle-stroke-color': '#ffffff',
|
|
'circle-opacity': 0.85
|
|
}
|
|
},
|
|
|
|
// Place 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': 11,
|
|
'text-offset': [0, 1.3],
|
|
'text-anchor': 'top'
|
|
},
|
|
paint: {
|
|
'text-color': '#111827',
|
|
'text-halo-color': '#ffffff',
|
|
'text-halo-width': 2
|
|
}
|
|
}
|
|
]
|
|
}
|
|
|
|
getLayerIds() {
|
|
return [this.id, `${this.id}-labels`]
|
|
}
|
|
}
|