aboutsummaryrefslogtreecommitdiff
path: root/modern/src/map/Map.js
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2021-09-03 20:38:43 -0700
committerAnton Tananaev <anton.tananaev@gmail.com>2021-09-03 20:38:43 -0700
commit7b338688fb6f2bcca5236348495e4b7398f8de00 (patch)
treec573f4d65b6ed97578b2da332e61f20ac459f503 /modern/src/map/Map.js
parentf5ed35a51a570f0bf68754ef4141c40c9b6d4233 (diff)
downloadtrackermap-web-7b338688fb6f2bcca5236348495e4b7398f8de00.tar.gz
trackermap-web-7b338688fb6f2bcca5236348495e4b7398f8de00.tar.bz2
trackermap-web-7b338688fb6f2bcca5236348495e4b7398f8de00.zip
Proper map localization
Diffstat (limited to 'modern/src/map/Map.js')
-rw-r--r--modern/src/map/Map.js37
1 files changed, 13 insertions, 24 deletions
diff --git a/modern/src/map/Map.js b/modern/src/map/Map.js
index 2b95087a..5e182a44 100644
--- a/modern/src/map/Map.js
+++ b/modern/src/map/Map.js
@@ -12,11 +12,7 @@ import {
} from './mapStyles';
import { useAttributePreference } from '../common/preferences';
import palette from '../theme/palette';
-
-// TODO fix localization
-import en from '../../../web/l10n/en.json';
-
-const t = (key) => en[key];
+import { useTranslation } from '../LocalizationProvider';
const element = document.createElement('div');
element.style.width = '100%';
@@ -24,7 +20,6 @@ element.style.height = '100%';
export const map = new maplibregl.Map({
container: element,
- style: styleOsm(),
});
let ready = false;
@@ -66,23 +61,11 @@ const initMap = async () => {
updateReadyValue(true);
};
-map.on('load', initMap);
-
map.addControl(new maplibregl.NavigationControl({
showCompass: false,
}));
const switcher = new SwitcherControl(
- [
- { title: t('mapOsm'), uri: styleOsm() },
- { title: t('mapCarto'), uri: styleCarto() },
- { title: t('mapMapboxStreets'), uri: styleMapbox('streets-v11') },
- { title: t('mapMapboxOutdoors'), uri: styleMapbox('outdoors-v11') },
- { title: t('mapMapboxSatellite'), uri: styleMapbox('satellite-v9') },
- { title: t('mapMapTilerBasic'), uri: styleMapTiler('basic', '{mapTilerKey}') },
- { title: t('mapMapTilerHybrid'), uri: styleMapTiler('hybrid', '{mapTilerKey}') },
- ],
- t('mapOsm'),
() => updateReadyValue(false),
() => {
const waiting = () => {
@@ -100,19 +83,27 @@ map.addControl(switcher);
const Map = ({ children }) => {
const containerEl = useRef(null);
+ const t = useTranslation();
const [mapReady, setMapReady] = useState(false);
const mapboxAccessToken = useAttributePreference('mapboxAccessToken');
+ const mapTilerKey = useAttributePreference('mapTilerKey');
useEffect(() => {
maplibregl.accessToken = mapboxAccessToken;
}, [mapboxAccessToken]);
- const mapTilerKey = useAttributePreference('mapTilerKey');
-
useEffect(() => {
- switcher.setVariable('mapTilerKey', mapTilerKey);
+ switcher.updateStyles([
+ { id: 'osm', title: t('mapOsm'), uri: styleOsm() },
+ { id: 'carto', title: t('mapCarto'), uri: styleCarto() },
+ { id: 'mapboxStreets', title: t('mapMapboxStreets'), uri: styleMapbox('streets-v11') },
+ { id: 'mapboxOutdoors', title: t('mapMapboxOutdoors'), uri: styleMapbox('outdoors-v11') },
+ { id: 'mapboxSatellite', title: t('mapMapboxSatellite'), uri: styleMapbox('satellite-v9') },
+ { id: 'mapTilerBasic', title: t('mapMapTilerBasic'), uri: styleMapTiler('basic', mapTilerKey) },
+ { id: 'mapTilerHybrid', title: t('mapMapTilerHybrid'), uri: styleMapTiler('hybrid', mapTilerKey) },
+ ], 'osm');
}, [mapTilerKey]);
useEffect(() => {
@@ -126,9 +117,7 @@ const Map = ({ children }) => {
useLayoutEffect(() => {
const currentEl = containerEl.current;
currentEl.appendChild(element);
- if (map) {
- map.resize();
- }
+ map.resize();
return () => {
currentEl.removeChild(element);
};