UNPKG

@chauffleet/expo-custom-map

Version:

Open source custom map library for Expo/React Native. Use your own tiles without Google Maps, Mapbox, or API keys. Created by ChaufFleet.

206 lines 6.43 kB
/** * Configuration et optimisations de performance pour la librairie de cartes */ export declare const PERFORMANCE_CONSTANTS: { readonly TARGET_FPS: 60; readonly MIN_FRAME_TIME: 16.67; readonly DEFAULT_TILE_CACHE_SIZE: 100; readonly MAX_MEMORY_USAGE: 256; readonly MEMORY_WARNING_THRESHOLD: 0.8; readonly GESTURE_THROTTLE_MS: 16; readonly GESTURE_DEBOUNCE_MS: 100; readonly ZOOM_THROTTLE_MS: 32; readonly PAN_THROTTLE_MS: 16; readonly MAX_MARKERS_WITHOUT_CLUSTERING: 500; readonly CLUSTER_UPDATE_THROTTLE_MS: 200; readonly TILE_LOAD_THROTTLE_MS: 50; readonly VIEWPORT_BUFFER_RATIO: 0.2; readonly MAX_CONCURRENT_TILE_DOWNLOADS: 4; readonly TILE_PRELOAD_RADIUS: 2; readonly PRELOAD_DELAY_MS: 100; readonly DEFAULT_ANIMATION_DURATION: 300; readonly SMOOTH_ZOOM_STEPS: 5; readonly ANIMATION_EASING: "easeOutCubic"; }; export declare class MemoryManager { private static instance; private memoryWarningCallbacks; private isMonitoring; private monitoringInterval?; static getInstance(): MemoryManager; /** * Démarre la surveillance de la mémoire */ startMonitoring(): void; /** * Arrête la surveillance de la mémoire */ stopMonitoring(): void; /** * Ajoute un callback pour les alertes mémoire */ onMemoryWarning(callback: () => void): () => void; /** * Force le nettoyage de la mémoire */ forceCleanup(): void; private checkMemoryUsage; private triggerMemoryWarning; } export declare class FrameRateManager { private frameTimeHistory; private lastFrameTime; private dropThresholds; /** * Enregistre le temps d'une frame */ recordFrame(): number; /** * Calcule le FPS moyen */ getAverageFPS(): number; /** * Détecte les baisses de performance */ detectPerformanceIssues(): { severity: 'none' | 'minor' | 'major' | 'severe'; fps: number; recommendation: string; }; /** * Recommandations automatiques d'optimisation */ getOptimizationRecommendations(): { reduceClustering: boolean; reduceMarkers: boolean; reduceTileQuality: boolean; disableAnimations: boolean; }; } export declare class RenderOptimizer { private static viewportBounds; /** * Met à jour les limites du viewport */ static updateViewportBounds(bounds: { minX: number; maxX: number; minY: number; maxY: number; }): void; /** * Vérifie si un élément est visible dans le viewport */ static isInViewport(x: number, y: number, bufferRatio?: number): boolean; /** * Filtre les marqueurs visibles avec optimisation */ static filterVisibleMarkers<T extends { coordinate: [number, number]; }>(markers: T[], coordinateToScreen: (coord: [number, number]) => { x: number; y: number; }): T[]; /** * Optimise la liste des tuiles à charger */ static optimizeTileLoading(tiles: Array<{ x: number; y: number; z: number; priority: number; }>, maxConcurrent?: number): Array<{ x: number; y: number; z: number; priority: number; }>; } export declare class ClusterOptimizer { private static lastUpdate; private static cachedClusters; /** * Détermine si le clustering doit être recalculé */ static shouldUpdateClusters(markersCount: number, zoom: number, forceUpdate?: boolean): boolean; /** * Met à jour le cache des clusters */ static updateClustersCache(clusters: any[]): void; /** * Obtient les clusters depuis le cache */ static getCachedClusters(): any[]; /** * Calcule la distance optimale pour le clustering basée sur le zoom */ static getOptimalClusterDistance(zoom: number, baseDistance?: number): number; } export declare class ThrottleUtils { private static throttleCache; /** * Throttle une fonction avec une clé unique */ static throttle<T extends (...args: any[]) => any>(func: T, delay: number, key: string): T; /** * Debounce une fonction avec une clé unique */ static debounce<T extends (...args: any[]) => any>(func: T, delay: number, key: string): T; /** * Nettoie le cache de throttling */ static clearCache(): void; } export declare class AdaptiveConfig { private static currentConfig; /** * Met à jour la configuration basée sur les performances */ static updateConfigForPerformance(frameRateManager: FrameRateManager, markersCount: number): { enableClustering: boolean; clusterRadius: number; maxMarkersWithoutClustering: number; tileLoadThrottle: number; enableHighDPI: boolean; enableAnimations: boolean; }; /** * Obtient la configuration actuelle */ static getCurrentConfig(): typeof this.currentConfig; /** * Réinitialise la configuration aux valeurs par défaut */ static resetToDefaults(): void; } export declare const PerformanceOptimizations: { Constants: { readonly TARGET_FPS: 60; readonly MIN_FRAME_TIME: 16.67; readonly DEFAULT_TILE_CACHE_SIZE: 100; readonly MAX_MEMORY_USAGE: 256; readonly MEMORY_WARNING_THRESHOLD: 0.8; readonly GESTURE_THROTTLE_MS: 16; readonly GESTURE_DEBOUNCE_MS: 100; readonly ZOOM_THROTTLE_MS: 32; readonly PAN_THROTTLE_MS: 16; readonly MAX_MARKERS_WITHOUT_CLUSTERING: 500; readonly CLUSTER_UPDATE_THROTTLE_MS: 200; readonly TILE_LOAD_THROTTLE_MS: 50; readonly VIEWPORT_BUFFER_RATIO: 0.2; readonly MAX_CONCURRENT_TILE_DOWNLOADS: 4; readonly TILE_PRELOAD_RADIUS: 2; readonly PRELOAD_DELAY_MS: 100; readonly DEFAULT_ANIMATION_DURATION: 300; readonly SMOOTH_ZOOM_STEPS: 5; readonly ANIMATION_EASING: "easeOutCubic"; }; MemoryManager: MemoryManager; FrameRateManager: FrameRateManager; RenderOptimizer: typeof RenderOptimizer; ClusterOptimizer: typeof ClusterOptimizer; ThrottleUtils: typeof ThrottleUtils; AdaptiveConfig: typeof AdaptiveConfig; }; export default PerformanceOptimizations; //# sourceMappingURL=PerformanceOptimizations.d.ts.map