import React, { useEffect, useState } from 'react'; import { View, StyleSheet, Text } from 'react-native'; import MapView, { Marker } from 'react-native-maps'; import { useRouter } from 'expo-router'; import { getPharmacies } from '../../services/pharmacies'; import { LoadingSpinner } from '../../components/LoadingSpinner'; import { colors, spacing, borderRadius } from '../../constants/theme'; import { Pharmacy } from '../../types'; export default function MapScreen() { const router = useRouter(); const [pharmacies, setPharmacies] = useState([]); const [isLoading, setIsLoading] = useState(true); const [region, setRegion] = useState({ latitude: 40.4168, // Madrid default longitude: -3.7038, latitudeDelta: 0.0922, longitudeDelta: 0.0421, }); useEffect(() => { const fetchPharmacies = async () => { try { const data = await getPharmacies(); setPharmacies(data); // Center map on first pharmacy if available if (data.length > 0) { setRegion({ latitude: data[0].latitude, longitude: data[0].longitude, latitudeDelta: 0.0922, longitudeDelta: 0.0421, }); } } catch (error) { console.error('Error fetching pharmacies:', error); } finally { setIsLoading(false); } }; fetchPharmacies(); }, []); if (isLoading) { return ; } return ( {pharmacies.map((pharmacy) => ( router.push(`/pharmacy/${pharmacy.id}`)} /> ))} {pharmacies.length} farmacias en el mapa ); } const styles = StyleSheet.create({ container: { flex: 1, }, map: { flex: 1, }, legend: { position: 'absolute', bottom: spacing.lg, left: spacing.md, right: spacing.md, backgroundColor: colors.card, borderRadius: borderRadius.lg, padding: spacing.sm + 4, alignItems: 'center', shadowColor: '#000', shadowOffset: { width: 0, height: 4 }, shadowOpacity: 0.08, shadowRadius: 20, elevation: 4, }, legendText: { fontSize: 14, color: colors.text, }, });