npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@chauffleet/expo-custom-map

v1.0.12

Published

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

Downloads

91

Readme

🗺️ Expo Custom Map

Une bibliothèque de carte personnalisée ultra-fluide pour React Native et Expo, optimisée pour offrir une expérience comparable à Google Maps.

✨ Caractéristiques

  • 🚀 Fluidité Google Maps - Gestes natifs ultra-optimisés avec react-native-gesture-handler
  • ⚡ Performance 60fps - Animations sur UI Thread avec react-native-reanimated
  • 📱 Expo Compatible - Fonctionne parfaitement dans l'environnement Expo
  • 🎯 Gestes Intuitifs - Pan, pinch-to-zoom, inertie fluide
  • 🗂️ Cache Intelligent - Système de cache des tuiles optimisé
  • 🔧 TypeScript - Support complet TypeScript avec types robustes

🚀 Installation

npm install @chauffleet/expo-custom-map

Dépendances requises

npx expo install react-native-gesture-handler react-native-reanimated

📖 Utilisation de base

import React from 'react';
import { View } from 'react-native';
import { CustomMapView } from '@chauffleet/expo-custom-map';

export default function App() {
  return (
    <View style={{ flex: 1 }}>
      <CustomMapView
        style={{ flex: 1 }}
        initialRegion={{
          latitude: 48.8566,   // Paris
          longitude: 2.3522,
          latitudeDelta: 0.0922,
          longitudeDelta: 0.0421,
        }}
        tileUrlTemplate="https://tile.openstreetmap.org/{z}/{x}/{y}.png"
        onRegionChange={(region) => console.log('Région:', region)}
        onRegionChangeComplete={(region) => console.log('Fini:', region)}
      >
        {/* Vos composants personnalisés */}
      </CustomMapView>
    </View>
  );
}

🎛️ Props de CustomMapView

| Prop | Type | Défaut | Description | |------|------|--------|-------------| | initialRegion | MapRegion | Paris | Région initiale de la carte | | tileUrlTemplate | string | OpenStreetMap | Template d'URL pour les tuiles | | onRegionChange | (region: MapRegion) => void | - | Callback pendant le mouvement | | onRegionChangeComplete | (region: MapRegion) => void | - | Callback à la fin du mouvement | | style | ViewStyle | - | Style du conteneur | | children | ReactNode | - | Éléments enfants (marqueurs, etc.) |

🔧 Configuration avancée

Fournisseurs de tuiles

// OpenStreetMap (défaut)
tileUrlTemplate="https://tile.openstreetmap.org/{z}/{x}/{y}.png"

// Mapbox (nécessite une clé API)
tileUrlTemplate="https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/{z}/{x}/{y}?access_token=YOUR_TOKEN"

// CartoDB Positron
tileUrlTemplate="https://cartodb-basemaps-a.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png"

Hooks disponibles

import { useMapPerformance, useAdvancedTileCache, useFluidGestures } from '@chauffleet/expo-custom-map';

// Monitoring des performances
const { stats, startMonitoring } = useMapPerformance();

// Cache intelligent des tuiles
const { preloadRegion, getCacheStats } = useAdvancedTileCache();

// Gestes personnalisés
const { gestureState } = useFluidGestures({
  enableInertia: true,
  zoomSensitivity: 1.2
});

🎨 Composants

TileLayer

Système de rendu des tuiles ultra-optimisé avec cache intelligent.

MarkerComponent

Marqueurs personnalisables avec gestion des événements.

ClusterMarker

Regroupement automatique des marqueurs pour de meilleures performances.

⚡ Optimisations

  • UI Thread - Toutes les animations s'exécutent sur l'UI thread
  • Memoization - Cache agressif des calculs coûteux
  • Lazy Loading - Chargement intelligent des tuiles
  • Memory Management - Gestion automatique de la mémoire
  • Gesture Optimization - Minimal runOnJS() calls

🔧 Développement

# Cloner le repo
git clone https://github.com/chauffleet/expo-custom-map.git

# Installer les dépendances
npm install

# Compiler
npm run build

# Tester
npm test

# Exemple
npm run example

📱 Exemples

Voir le fichier Example.tsx pour un exemple d'utilisation complète.

🐛 Dépannage

Gestes qui ne fonctionnent pas

Assurez-vous d'avoir installé react-native-gesture-handler et suivi la configuration Expo.

Performance faible

  • Vérifiez que react-native-reanimated est correctement configuré
  • Utilisez les hooks de performance pour identifier les goulots d'étranglement

Tuiles qui ne se chargent pas

Vérifiez le template d'URL des tuiles et votre connexion réseau.

📄 Licence

MIT - Voir le fichier LICENSE

🤝 Contribution

Les contributions sont bienvenues ! Voir CONTRIBUTING.md

🔗 Liens


Développé avec ❤️ pour la communauté React Native et Expo