Cartes (maps)
Carte avec marqueurs (react-native-maps, repli web), position de l’utilisateur (expo-location), ouverture dans Plans/Maps.
Fiche technique
Section intitulée « Fiche technique »| 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 |
Mise en place et usage
Section intitulée « Mise en place et usage »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 selondefaultLocale). - É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 forbiddenpourErrorState) ;sortByDistance(places, here.data),formatDistance(distanceKm(a, b), locale). - Itinéraire :
openInMaps({ latitude, longitude }, nom). - Colonnes :
lat:float, lng:floatdansg table. - Build Android : clé Google Maps (API « Maps SDK for Android ») dans
GOOGLE_MAPS_ANDROID_API_KEY(.enven local,eas env:createpour EAS), sinon la carte est vide hors Expo Go. iOS : rien à faire (Apple Plans).
Configuration
Section intitulée « Configuration »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