import React, { useEffect, useState } from 'react'; import { MapContainer, TileLayer, Marker, Popup } from 'react-leaflet'; import L from 'leaflet'; import 'leaflet/dist/leaflet.css'; import { useTourStore } from './useTourStore'; import { X, Navigation, Image as ImageIcon } from 'lucide-react'; // Fix lỗi icon mặc định của Leaflet const DefaultIcon = L.icon({ iconUrl: 'https://unpkg.com/leaflet@1.9.4/dist/images/marker-icon.png', shadowUrl: 'https://unpkg.com/leaflet@1.9.4/dist/images/marker-shadow.png', iconSize: [25, 41], iconAnchor: [12, 41], }); L.Marker.prototype.options.icon = DefaultIcon; export const ExploreMap = ({ onBack }: { onBack: () => void }) => { const { publicTours, fetchPublicTours } = useTourStore(); const [userPos, setUserPos] = useState<[number, number]>([10.7769, 106.7009]); // Mặc định TP.HCM useEffect(() => { fetchPublicTours(); navigator.geolocation.getCurrentPosition( (pos) => setUserPos([pos.coords.latitude, pos.coords.longitude]), () => console.log("Không thể lấy vị trí người dùng") ); }, []); return (
{/* Nút quay lại */} {/* Header Overlay */}
Đang khám phá khu vực của bạn
{publicTours.map((tour) => { const place = tour.legs?.[0]?.places?.[0]; if (!place) return null; const tourImage = tour.photos?.[0]?.imageUrl || `https://picsum.photos/seed/${tour.id}/200/200`; return (
`, iconSize: [48, 48], })} >

{tour.title}

); })} ); };