mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-15 15:37:33 +08:00
support custom map tile server url
This commit is contained in:
@@ -40,7 +40,7 @@ import {
|
||||
} from './amap.js';
|
||||
|
||||
export function loadMapAssets(language) {
|
||||
if (mapConstants.leafletTileSources[getMapProvider()]) {
|
||||
if (mapConstants.leafletTileSources[getMapProvider()] || getMapProvider() === 'custom') {
|
||||
return loadLeafletMapAssets(language);
|
||||
} else if (getMapProvider() === 'googlemap') {
|
||||
return loadGoogleMapAssets(language);
|
||||
@@ -52,7 +52,7 @@ export function loadMapAssets(language) {
|
||||
}
|
||||
|
||||
export function createMapHolder() {
|
||||
if (mapConstants.leafletTileSources[getMapProvider()]) {
|
||||
if (mapConstants.leafletTileSources[getMapProvider()] || getMapProvider() === 'custom') {
|
||||
return createLeafletMapHolder(getMapProvider());
|
||||
} else if (getMapProvider() === 'googlemap') {
|
||||
return createGoogleMapHolder(getMapProvider());
|
||||
@@ -70,7 +70,7 @@ export function initMapInstance(mapHolder, mapContainer, options) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mapConstants.leafletTileSources[getMapProvider()]) {
|
||||
if (mapConstants.leafletTileSources[getMapProvider()] || getMapProvider() === 'custom') {
|
||||
createLeafletMapInstance(mapHolder, mapContainer, options);
|
||||
} else if (mapHolder.mapProvider === 'googlemap') {
|
||||
createGoogleMapInstance(mapHolder, mapContainer, options);
|
||||
@@ -86,7 +86,7 @@ export function setMapCenterTo(mapHolder, center, zoomLevel) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mapConstants.leafletTileSources[getMapProvider()]) {
|
||||
if (mapConstants.leafletTileSources[getMapProvider()] || getMapProvider() === 'custom') {
|
||||
setLeafletMapCenterTo(mapHolder, center, zoomLevel);
|
||||
} else if (mapHolder.mapProvider === 'googlemap') {
|
||||
setGoogleMapCenterTo(mapHolder, center, zoomLevel);
|
||||
@@ -102,7 +102,7 @@ export function setMapCenterMarker(mapHolder, position) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mapConstants.leafletTileSources[getMapProvider()]) {
|
||||
if (mapConstants.leafletTileSources[getMapProvider()] || getMapProvider() === 'custom') {
|
||||
setLeafletMapCenterMaker(mapHolder, position);
|
||||
} else if (mapHolder.mapProvider === 'googlemap') {
|
||||
setGoogleMapCenterMaker(mapHolder, position);
|
||||
@@ -118,7 +118,7 @@ export function removeMapCenterMarker(mapHolder) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mapConstants.leafletTileSources[getMapProvider()]) {
|
||||
if (mapConstants.leafletTileSources[getMapProvider()] || getMapProvider() === 'custom') {
|
||||
removeLeafletMapCenterMaker(mapHolder);
|
||||
} else if (mapHolder.mapProvider === 'googlemap') {
|
||||
removeGoogleMapCenterMaker(mapHolder);
|
||||
|
||||
+28
-5
@@ -1,5 +1,12 @@
|
||||
import mapConstants from '@/consts/map.js';
|
||||
import { isMapDataFetchProxyEnabled, getTomTomMapAPIKey } from '@/lib/server_settings.js';
|
||||
import {
|
||||
isMapDataFetchProxyEnabled,
|
||||
getCustomMapTileServerUrl,
|
||||
getCustomMapMinZoomLevel,
|
||||
getCustomMapMaxZoomLevel,
|
||||
getCustomMapDefaultZoomLevel,
|
||||
getTomTomMapAPIKey
|
||||
} from '@/lib/server_settings.js';
|
||||
import services from '@/lib/services.js';
|
||||
|
||||
const leafletHolder = {
|
||||
@@ -16,7 +23,7 @@ export function loadLeafletMapAssets() {
|
||||
export function createLeafletMapHolder(mapProvider) {
|
||||
const mapTileSource = mapConstants.leafletTileSources[mapProvider];
|
||||
|
||||
if (!mapTileSource) {
|
||||
if (mapProvider !== 'custom' && !mapTileSource) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -24,8 +31,8 @@ export function createLeafletMapHolder(mapProvider) {
|
||||
mapProvider: mapProvider,
|
||||
dependencyLoaded: !!leafletHolder.leaflet,
|
||||
inited: false,
|
||||
defaultZoomLevel: mapTileSource.defaultZoomLevel,
|
||||
minZoomLevel: mapTileSource.minZoom,
|
||||
defaultZoomLevel: mapProvider !== 'custom' ? mapTileSource.defaultZoomLevel : getCustomMapDefaultZoomLevel(),
|
||||
minZoomLevel: mapProvider !== 'custom' ? mapTileSource.minZoom : getCustomMapMinZoomLevel(),
|
||||
leafletInstance: null,
|
||||
leafletTileLayer: null,
|
||||
leafletZoomControl: null,
|
||||
@@ -46,7 +53,13 @@ export function createLeafletMapInstance(mapHolder, mapContainer, options) {
|
||||
attributionControl: false,
|
||||
zoomControl: false
|
||||
});
|
||||
let mapTileSource = Object.assign({}, mapConstants.leafletTileSources[mapHolder.mapProvider]);
|
||||
let mapTileSource = null;
|
||||
|
||||
if (mapHolder.mapProvider !== 'custom') {
|
||||
mapTileSource = Object.assign({}, mapConstants.leafletTileSources[mapHolder.mapProvider]);
|
||||
} else {
|
||||
mapTileSource = createCustomMapSource();
|
||||
}
|
||||
|
||||
if (isMapDataFetchProxyEnabled()) {
|
||||
mapTileSource.tileUrlFormat = services.generateMapProxyTileImageUrl(mapHolder.mapProvider, options.language);
|
||||
@@ -137,3 +150,13 @@ export function removeLeafletMapCenterMaker(mapHolder) {
|
||||
mapHolder.leafletCenterMarker.remove();
|
||||
mapHolder.leafletCenterMarker = null;
|
||||
}
|
||||
|
||||
function createCustomMapSource() {
|
||||
return {
|
||||
tileUrlFormat: getCustomMapTileServerUrl(),
|
||||
tileUrlSubDomains: '',
|
||||
minZoom: getCustomMapMinZoomLevel(),
|
||||
maxZoom: getCustomMapMaxZoomLevel(),
|
||||
defaultZoomLevel: getCustomMapDefaultZoomLevel()
|
||||
};
|
||||
}
|
||||
|
||||
@@ -53,6 +53,25 @@ export function isMapDataFetchProxyEnabled() {
|
||||
return getServerSetting('mp') === '1';
|
||||
}
|
||||
|
||||
export function getCustomMapTileServerUrl() {
|
||||
return getServerDecodedSetting('cmsu');
|
||||
}
|
||||
|
||||
export function getCustomMapMinZoomLevel() {
|
||||
const zoomLevelSettings = (getServerSetting('cmzl') || '').split('-');
|
||||
return (zoomLevelSettings && zoomLevelSettings[0]) ? parseInt(zoomLevelSettings[0]) : 1;
|
||||
}
|
||||
|
||||
export function getCustomMapMaxZoomLevel() {
|
||||
const zoomLevelSettings = (getServerSetting('cmzl') || '').split('-');
|
||||
return (zoomLevelSettings && zoomLevelSettings[1]) ? parseInt(zoomLevelSettings[1]) : 18;
|
||||
}
|
||||
|
||||
export function getCustomMapDefaultZoomLevel() {
|
||||
const zoomLevelSettings = (getServerSetting('cmzl') || '').split('-');
|
||||
return (zoomLevelSettings && zoomLevelSettings[2]) ? parseInt(zoomLevelSettings[2]) : 14;
|
||||
}
|
||||
|
||||
export function getTomTomMapAPIKey() {
|
||||
return getServerDecodedSetting('tmak');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user