mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-14 23:17:33 +08:00
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { LEAFLET_TILE_SOURCES } from '@/consts/map.ts';
|
|
import { getMapProvider } from '@/lib/server_settings.ts';
|
|
|
|
import type { MapProvider, MapInstance } from './base.ts';
|
|
import { LeafletMapProvider } from './leaflet.ts';
|
|
import { GoogleMapProvider } from './googlemap.ts';
|
|
import { BaiduMapProvider } from './baidumap.ts';
|
|
import { AmapMapProvider } from './amap.ts';
|
|
|
|
let mapProvider: MapProvider | null = null;
|
|
|
|
export function initMapProvider(language?: string): void {
|
|
const mapProviderType = getMapProvider();
|
|
|
|
if (LEAFLET_TILE_SOURCES[mapProviderType] || mapProviderType === 'custom') {
|
|
mapProvider = new LeafletMapProvider(mapProviderType);
|
|
} else if (mapProviderType === 'googlemap') {
|
|
mapProvider = new GoogleMapProvider();
|
|
} else if (mapProviderType === 'baidumap') {
|
|
mapProvider = new BaiduMapProvider();
|
|
} else if (mapProviderType === 'amap') {
|
|
mapProvider = new AmapMapProvider();
|
|
}
|
|
|
|
if (mapProvider) {
|
|
mapProvider.asyncLoadAssets(language);
|
|
}
|
|
}
|
|
|
|
export function getMapWebsite(): string {
|
|
return mapProvider?.getWebsite() || '';
|
|
}
|
|
|
|
export function isSupportGetGeoLocationByClick(): boolean {
|
|
return mapProvider?.isSupportGetGeoLocationByClick() || false;
|
|
}
|
|
|
|
export function createMapInstance(): MapInstance | null {
|
|
return mapProvider?.createMapInstance() || null;
|
|
}
|