diff --git a/client/src/components/map/MapLayers/MapLayers.tsx b/client/src/components/map/MapLayers/MapLayers.tsx index 8bc2a59..e495f6c 100644 --- a/client/src/components/map/MapLayers/MapLayers.tsx +++ b/client/src/components/map/MapLayers/MapLayers.tsx @@ -1,6 +1,7 @@ -import { Checkbox, Flex, NavLink, Stack } from '@mantine/core' +import { Checkbox, Flex, NavLink, Slider, Stack } from '@mantine/core' +import BaseLayer from 'ol/layer/Base' import Map from 'ol/Map' -import React from 'react' +import React, { useEffect, useState } from 'react' interface MapLayersProps { map: React.MutableRefObject @@ -12,16 +13,49 @@ const MapLayers = ({ return ( {map.current?.getLayers().getArray() && map.current?.getLayers().getArray().map((layer, index) => ( - - layer.getLayerState().visible ? layer.setVisible(false) : layer.setVisible(true)} - /> - { console.log(layer.getLayerState()) }} /> - + ))} ) } +interface LayerSettingProps { + index: number; + layer: BaseLayer; +} + +const LayerSetting = ({ + index, + layer +}: LayerSettingProps) => { + const [opacity, setOpacity] = useState(layer.getOpacity()) + const [visible, setVisible] = useState(layer.getLayerState().visible) + + useEffect(() => { + layer.setVisible(visible) + }, [visible, layer]) + + useEffect(() => { + layer.setOpacity(opacity) + }, [opacity, layer]) + + return ( + + setVisible(e.currentTarget.checked)} + /> + setOpacity(value)} + /> + { console.log(layer.getLayerState()) }} /> + + ) +} + export default MapLayers \ No newline at end of file diff --git a/client/src/components/map/MapSources.ts b/client/src/components/map/MapSources.ts index e398ac9..9e261dc 100644 --- a/client/src/components/map/MapSources.ts +++ b/client/src/components/map/MapSources.ts @@ -20,6 +20,11 @@ const yandexMapsSatelliteSource = new XYZ({ projection: yandexProjection, }) +const customMapSource = new XYZ({ + url: `${import.meta.env.VITE_API_EMS_URL}/tiles/tile/custom/{z}/{x}/{y}`, + attributions: 'Custom map data' +}) + const regionsLayerSource = new VectorSource({ url: 'sakha_republic.geojson', format: new GeoJSON(), @@ -28,5 +33,6 @@ const regionsLayerSource = new VectorSource({ export { googleMapsSatelliteSource, yandexMapsSatelliteSource, - regionsLayerSource + regionsLayerSource, + customMapSource } \ No newline at end of file