Skip to content

Cartes (maps)

This content is not available in your language yet.

Carte avec marqueurs (react-native-maps, repli web), position de l’utilisateur (expo-location), ouverture dans Plans/Maps.

Paquet @daroms/module-maps
Activer bun daroms module add maps
Requiert aucun module
Dépendances natives react-native-maps, expo-location
Routes ajoutées aucune
Onglets aucun
Migrations aucune
Edge functions aucune
Variables d’environnement GOOGLE_MAPS_ANDROID_API_KEY
Gate de navigation non
Section de réglages non

Carte avec marqueurs (react-native-maps : Apple Plans sur iOS, Google Maps sur Android ; fonctionne dans Expo Go), position de l’utilisateur (expo-location), distances. Sur le web (daroms shot), une zone de repli remplace la carte.

  • Activer : bun daroms module add maps.
  • Configuration (modules.maps) : center (repli, défaut Paris), span (zoom, 0.05), locationPermission (texte iOS, défaut selon defaultLocale).
  • Écran : <Map label={t('places.map')} markers={places.map((p) => ({ id: p.id, latitude: p.lat, longitude: p.lng, title: p.name }))} onMarkerPress={(m) => router.push(\/place/${m.id}`)} ratio={4 / 3} /> (flex={1}` pour une carte plein écran).
  • Position : const here = useCurrentLocation({ enabled: nearby }) (permission demandée à l’usage ; refus = AppError forbidden pour ErrorState) ; sortByDistance(places, here.data), formatDistance(distanceKm(a, b), locale).
  • Itinéraire : openInMaps({ latitude, longitude }, nom).
  • Colonnes : lat:float, lng:float dans g table.
  • Build Android : clé Google Maps (API « Maps SDK for Android ») dans GOOGLE_MAPS_ANDROID_API_KEY (.env en local, eas env:create pour EAS), sinon la carte est vide hors Expo Go. iOS : rien à faire (Apple Plans).

Dans app.manifest.ts > modules['maps'], validée par modules/maps/config.ts au démarrage.

Clé Schéma zod Rôle
center point.default({ latitude: 48.8566, longitude: 2.3522 }) Centre par défaut quand il n’y a ni marqueur ni position (Paris).
span z.number().positive().default(0.05) Zoom par défaut : degrés de latitude visibles (0.05 = un quartier, 0.5 = une ville).
locationPermission z.string().optional() Texte iOS de la permission de localisation (plugin) : défaut selon la langue par défaut de l’app.

Valeurs écrites par module add :

{
"span": 0.05
}
import { distanceKm, formatDistance, regionFor } from '@daroms/module-maps'
  • Valeurs : distanceKm, formatDistance, regionFor, sortByDistance, getCurrentLocation, openInMaps, useCurrentLocation, Map

  • Types : LatLng, Region, MapMarker, MapProps