@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
TypeScript
/**
* 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