vuepress-plugin-photomap
Version:
VuePress2插件,用于在文章中插入照片地图组件,类似Apple相册的PhotoMap功能
112 lines (111 loc) • 2.93 kB
TypeScript
/**
* PhotoMap插件类型定义
*/
export interface GPSData {
latitude: number;
longitude: number;
altitude?: number;
direction?: number;
}
export interface PhotoData {
src: string;
alt: string;
gps?: GPSData;
width?: number;
height?: number;
hasGPS: boolean;
error?: string;
}
export interface PhotoMapOptions {
mapStyle?: string;
defaultZoom?: number;
maxZoom?: number;
markerSize?: number;
clusterRadius?: number;
enablePhotoSwipe?: boolean;
photoSwipeOptions?: any;
enableTerrain?: boolean;
enableSatelliteHybrid?: boolean;
enableAtmosphere?: boolean;
terrainExaggeration?: number;
mapTilerApiKey?: string;
mapType?: 'satellite' | 'terrain' | 'simple';
enable3D?: boolean;
showStyleSwitcher?: boolean;
}
export interface PhotoMapProps {
images?: Array<{
src: string;
alt: string;
}>;
height?: string;
showPhotoList?: boolean;
mapStyle?: string;
defaultZoom?: number;
maxZoom?: number;
markerSize?: number;
enablePhotoSwipe?: boolean;
enableTerrain?: boolean;
enableSatelliteHybrid?: boolean;
enableAtmosphere?: boolean;
terrainExaggeration?: number;
mapTilerApiKey?: string;
mapType?: 'satellite' | 'terrain' | 'simple';
enable3D?: boolean;
showStyleSwitcher?: boolean;
}
export interface MapOptions {
style?: string;
defaultZoom?: number;
maxZoom?: number;
markerSize?: number;
clusterRadius?: number;
enableTerrain?: boolean;
enableSatelliteHybrid?: boolean;
enableAtmosphere?: boolean;
terrainExaggeration?: number;
mapTilerApiKey?: string;
mapType?: 'satellite' | 'terrain' | 'simple';
}
export interface PhotoSwipeOptions {
enablePhotoSwipe?: boolean;
photoSwipeOptions?: any;
}
export interface CoordinateInfo {
latitude: number;
longitude: number;
altitude?: number;
}
export interface DMSCoordinate {
degrees: number;
minutes: number;
seconds: number;
direction: 'N' | 'S' | 'E' | 'W';
}
export interface ImageInfo {
src: string;
alt: string;
width: number;
height: number;
}
export declare enum PhotoMapErrorType {
IMAGE_LOAD_FAILED = "IMAGE_LOAD_FAILED",
EXIF_PARSE_FAILED = "EXIF_PARSE_FAILED",
NO_GPS_DATA = "NO_GPS_DATA",
INVALID_COORDINATES = "INVALID_COORDINATES",
MAP_INIT_FAILED = "MAP_INIT_FAILED",
PHOTOSWIPE_INIT_FAILED = "PHOTOSWIPE_INIT_FAILED"
}
export interface PhotoMapEvents {
onMapReady?: () => void;
onPhotosLoaded?: (photos: PhotoData[]) => void;
onMarkerClick?: (photo: PhotoData, index: number) => void;
onPhotoSwipeOpen?: (photo: PhotoData, index: number) => void;
onError?: (error: PhotoMapErrorType, message: string) => void;
}
declare global {
interface Window {
__PHOTOMAP_OPTIONS__?: PhotoMapOptions;
__PHOTOMAP_DEBUG__?: boolean;
}
}