From 3eb1bb2e3f3d43cda2efe92754be4285dac6dbfd Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sun, 12 Jun 2022 07:30:52 -0700 Subject: Add OpenWeather overlay --- .../common/attributes/useCommonUserAttributes.js | 4 ++ modern/src/map/overlay/useMapOverlays.js | 43 ++++++++++++++++++++-- 2 files changed, 44 insertions(+), 3 deletions(-) (limited to 'modern') diff --git a/modern/src/common/attributes/useCommonUserAttributes.js b/modern/src/common/attributes/useCommonUserAttributes.js index ecb39daa..658f8668 100644 --- a/modern/src/common/attributes/useCommonUserAttributes.js +++ b/modern/src/common/attributes/useCommonUserAttributes.js @@ -17,6 +17,10 @@ export default (t) => useMemo(() => ({ name: t('mapBingKey'), type: 'string', }, + openWeatherKey: { + name: t('mapOpenWeatherKey'), + type: 'string', + }, notificationTokens: { name: t('attributeNotificationTokens'), type: 'string', diff --git a/modern/src/map/overlay/useMapOverlays.js b/modern/src/map/overlay/useMapOverlays.js index ede1e5b9..1a917ba2 100644 --- a/modern/src/map/overlay/useMapOverlays.js +++ b/modern/src/map/overlay/useMapOverlays.js @@ -1,24 +1,61 @@ import { useSelector } from 'react-redux'; import { useTranslation } from '../../common/components/LocalizationProvider'; +import { useAttributePreference } from '../../common/util/preferences'; -const sourceCustom = (url) => ({ +const sourceCustom = (urls) => ({ type: 'raster', - tiles: [url], + tiles: urls, tileSize: 256, }); export default () => { const t = useTranslation(); + const openWeatherKey = useAttributePreference('openWeatherKey'); const customMapOverlay = useSelector((state) => state.session.server?.overlayUrl); return [ { id: 'openSeaMap', title: t('mapOpenSeaMap'), - source: sourceCustom('http://tiles.openseamap.org/seamark/{z}/{x}/{y}.png'), + source: sourceCustom(['http://tiles.openseamap.org/seamark/{z}/{x}/{y}.png']), available: true, }, + { + id: 'openWeatherClouds', + title: t('mapOpenWeatherClouds'), + source: sourceCustom([`https://tile.openweathermap.org/map/clouds_new/{z}/{x}/{y}.png?appid=${openWeatherKey}`]), + available: !!openWeatherKey, + attribute: 'openWeatherKey', + }, + { + id: 'openWeatherPrecipitation', + title: t('mapOpenWeatherPrecipitation'), + source: sourceCustom([`https://tile.openweathermap.org/map/precipitation_new/{z}/{x}/{y}.png?appid=${openWeatherKey}`]), + available: !!openWeatherKey, + attribute: 'openWeatherKey', + }, + { + id: 'openWeatherPressure', + title: t('mapOpenWeatherPressure'), + source: sourceCustom([`https://tile.openweathermap.org/map/pressure_new/{z}/{x}/{y}.png?appid=${openWeatherKey}`]), + available: !!openWeatherKey, + attribute: 'openWeatherKey', + }, + { + id: 'openWeatherWind', + title: t('mapOpenWeatherWind'), + source: sourceCustom([`https://tile.openweathermap.org/map/wind_new/{z}/{x}/{y}.png?appid=${openWeatherKey}`]), + available: !!openWeatherKey, + attribute: 'openWeatherKey', + }, + { + id: 'openWeatherTemperature', + title: t('mapOpenWeatherTemperature'), + source: sourceCustom([`https://tile.openweathermap.org/map/temp_new/{z}/{x}/{y}.png?appid=${openWeatherKey}`]), + available: !!openWeatherKey, + attribute: 'openWeatherKey', + }, { id: 'custom', title: t('mapOverlayCustom'), -- cgit v1.2.3