mirror of
https://github.com/grafana/grafana.git
synced 2025-02-20 11:48:34 -06:00
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import { MapLayerRegistryItem, Registry, MapLayerOptions, GrafanaTheme2 } from '@grafana/data';
|
|
import Map from 'ol/Map';
|
|
import { carto } from './basemaps/carto';
|
|
import { config } from 'app/core/config';
|
|
import { basemapLayers } from './basemaps';
|
|
import { dataLayers } from './data';
|
|
|
|
export const DEFAULT_BASEMAP_CONFIG: MapLayerOptions = {
|
|
type: 'default',
|
|
name: '', // will get filled in with a non-empty name
|
|
config: {},
|
|
};
|
|
|
|
// Default base layer depending on the server setting
|
|
export const defaultBaseLayer: MapLayerRegistryItem = {
|
|
id: DEFAULT_BASEMAP_CONFIG.type,
|
|
name: 'Default base layer',
|
|
isBaseMap: true,
|
|
|
|
create: (map: Map, options: MapLayerOptions, theme: GrafanaTheme2) => {
|
|
const serverLayerType = config?.geomapDefaultBaseLayerConfig?.type;
|
|
if (serverLayerType) {
|
|
const layer = geomapLayerRegistry.getIfExists(serverLayerType);
|
|
if (!layer) {
|
|
throw new Error('Invalid basemap configuration on server');
|
|
}
|
|
return layer.create(map, config.geomapDefaultBaseLayerConfig!, theme);
|
|
}
|
|
|
|
// For now use carto as our default basemap
|
|
return carto.create(map, options, theme);
|
|
},
|
|
};
|
|
|
|
/**
|
|
* Registry for layer handlers
|
|
*/
|
|
export const geomapLayerRegistry = new Registry<MapLayerRegistryItem<any>>(() => [
|
|
defaultBaseLayer,
|
|
...basemapLayers, // simple basemaps
|
|
...dataLayers, // Layers with update functions
|
|
]);
|