-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathBufferStops.tsx
60 lines (54 loc) · 1.74 KB
/
BufferStops.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import React, { FC } from 'react';
import { useSelector } from 'react-redux';
import { Source, SymbolLayer } from 'react-map-gl/maplibre';
import { getInfraID } from 'reducers/osrdconf/selectors';
import { RootState } from 'reducers';
import { Theme, OmitLayer } from 'types';
import { MAP_URL } from 'common/Map/const';
import OrderedLayer from 'common/Map/Layers/OrderedLayer';
export function getBufferStopsLayerProps(params: { sourceTable?: string }): OmitLayer<SymbolLayer> {
const res: OmitLayer<SymbolLayer> = {
type: 'symbol',
minzoom: 12,
layout: {
'text-field': '{extensions_sncf_kp}',
'text-font': ['Roboto Condensed'],
'text-size': 10,
'text-offset': [1, 0.2],
'icon-image': 'HEURTOIR',
'icon-size': 0.2,
'text-anchor': 'left',
'icon-rotation-alignment': 'viewport',
'icon-allow-overlap': false,
'icon-ignore-placement': false,
'text-allow-overlap': false,
},
paint: {
'text-color': '#333',
},
};
if (typeof params.sourceTable === 'string') res['source-layer'] = params.sourceTable;
return res;
}
interface BufferStopsProps {
colors: Theme;
layerOrder: number;
}
const BufferStops: FC<BufferStopsProps> = ({ layerOrder }) => {
const infraID = useSelector(getInfraID);
const { layersSettings } = useSelector((state: RootState) => state.map);
return layersSettings.bufferstops ? (
<Source
id="osrd_bufferstop_geo"
type="vector"
url={`${MAP_URL}/layer/buffer_stops/mvt/geo/?infra=${infraID}`}
>
<OrderedLayer
{...getBufferStopsLayerProps({ sourceTable: 'buffer_stops' })}
id="chartis/osrd_bufferstop/geo"
layerOrder={layerOrder}
/>
</Source>
) : null;
};
export default BufferStops;