From bd8e5d383ac4ffb3dcbd5f9073cb6a0f8a2b2142 Mon Sep 17 00:00:00 2001 From: nobkd <44443899+nobkd@users.noreply.github.com> Date: Mon, 27 Nov 2023 21:37:26 +0100 Subject: [PATCH] feat: map fullscreen control & m/ft scale --- package-lock.json | 17 +++++++++++++++++ package.json | 2 ++ src/map.html | 1 + src/map/map.ts | 8 +++++++- vite.config.ts | 8 ++++++++ 5 files changed, 35 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index dbcda75..8aedb10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,8 +13,10 @@ }, "devDependencies": { "@types/leaflet": "^1.9.8", + "@types/leaflet-fullscreen": "^1.0.9", "@types/webextension-polyfill": "^0.10.6", "@vitest/coverage-v8": "^0.34.6", + "leaflet-fullscreen": "^1.0.2", "npm-run-all": "^4.1.5", "prettier": "^3.1.0", "release-it": "^17.0.0", @@ -1312,6 +1314,15 @@ "@types/geojson": "*" } }, + "node_modules/@types/leaflet-fullscreen": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/leaflet-fullscreen/-/leaflet-fullscreen-1.0.9.tgz", + "integrity": "sha512-fureyKU1+ye+xkGFh67layhTX/wO6ZuMrYuBhJBHkek6chdzlDgE8wZNG/jjioXrEnNHdHH+jiIo5oeuF5y2Hw==", + "dev": true, + "dependencies": { + "@types/leaflet": "*" + } + }, "node_modules/@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -6754,6 +6765,12 @@ "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" }, + "node_modules/leaflet-fullscreen": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/leaflet-fullscreen/-/leaflet-fullscreen-1.0.2.tgz", + "integrity": "sha512-1Yxm8RZg6KlKX25+hbP2H/wnOAphH7hFcvuADJFb4QZTN7uOSN9Hsci5EZpow8vtNej9OGzu59Jxmn+0qKOO9Q==", + "dev": true + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", diff --git a/package.json b/package.json index a9a2abf..884b931 100644 --- a/package.json +++ b/package.json @@ -32,8 +32,10 @@ }, "devDependencies": { "@types/leaflet": "^1.9.8", + "@types/leaflet-fullscreen": "^1.0.9", "@types/webextension-polyfill": "^0.10.6", "@vitest/coverage-v8": "^0.34.6", + "leaflet-fullscreen": "^1.0.2", "npm-run-all": "^4.1.5", "prettier": "^3.1.0", "release-it": "^17.0.0", diff --git a/src/map.html b/src/map.html index ebf2f1a..ce2c739 100644 --- a/src/map.html +++ b/src/map.html @@ -6,6 +6,7 @@ + Leaflet Map diff --git a/src/map/map.ts b/src/map/map.ts index 1e2115c..a9d7998 100644 --- a/src/map/map.ts +++ b/src/map/map.ts @@ -1,4 +1,5 @@ import L from 'leaflet'; +import 'leaflet-fullscreen'; import { readPB, readQ, type MapData } from './utils/read'; import { type TileType, tileTypes } from './utils/parsePB'; @@ -44,7 +45,8 @@ if (params.has(gZoom)) { } const map: L.Map = L.map('map', { - scrollWheelZoom: false, // TODO: on pc allow ctrl + scroll + fullscreenControl: true, + scrollWheelZoom: true, // TODO: on pc allow ctrl + scroll zoom: mapData.zoom ?? 17, zoomSnap: 0.1, zoomDelta: 0.5, @@ -71,3 +73,7 @@ L.tileLayer(tileProviders[mapData.tile || tileTypes[0]].layer, { maxZoom: 19, attribution: tileProviders[mapData.tile || tileTypes[0]].attr, }).addTo(map); + +L.control.scale().addTo(map); +// TODO: fix layer loading +//L.control.layers({}, {}, { hideSingleBase: true }).addTo(map) diff --git a/vite.config.ts b/vite.config.ts index e5c000c..2ea403c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -18,6 +18,14 @@ export default defineConfig({ src: normalizePath(resolve(__dirname, 'node_modules/leaflet/dist/images')), dest: '.', }, + { + src: normalizePath(resolve(__dirname, 'node_modules/leaflet-fullscreen/dist/leaflet.fullscreen.css')), + dest: '.', + }, + { + src: normalizePath(resolve(__dirname, 'node_modules/leaflet-fullscreen/dist/*.png')), + dest: '.', + }, { src: normalizePath(resolve(__dirname, 'LICENSE')), dest: '.',