Spaces:
Runtime error
Runtime error
File size: 2,213 Bytes
b11d1b5 fbf7aed 6d4c624 b11d1b5 fbf7aed 6d4c624 b11d1b5 6d4c624 b11d1b5 fbf7aed 6d4c624 b11d1b5 6d4c624 b11d1b5 fbf7aed |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
import React, { useState, useEffect, useCallback } from 'react';
import { MapContainer, TileLayer,
useMapEvents,
Marker,
Popup ,
// useMap
} from 'react-leaflet';
import L from 'leaflet';
import 'leaflet/dist/leaflet.css';
delete L.Icon.Default.prototype._getIconUrl;
L.Icon.Default.mergeOptions({
iconRetinaUrl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/images/marker-icon-2x.png',
iconUrl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/images/marker-icon.png',
shadowUrl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/images/marker-shadow.png',
});
const ClickHandler = ({ onMapClick }) => {
useMapEvents({
click(e) {
const { lat, lng } = e.latlng;
onMapClick(lat, lng);
},
});
return null;
};
const Map = ( { onMapClick } ) => {
const [wikiContent, setWikiContent] = useState(null);
const fetchWiki = async (pageName) => {
const res = await fetch(`http://localhost:8004/wiki/${pageName}`);
const data = await res.json();
setWikiContent(data);
};
const markerPosition = [21.2514, 81.6296];
return (
<MapContainer
center={[0, 0]}
zoom={2}
style={{ height: '100vh', width: '100%' }}
>
<TileLayer
attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
/>
<ClickHandler onMapClick={onMapClick}/>
<Marker position={markerPosition} eventHandlers={{
click: () => fetchWiki("Raipur"),
}}>
<Popup minWidth={250}>
{wikiContent ? (
<>
<strong>{wikiContent.title}</strong><br />
<p style={{ fontSize: '12px' }}>{wikiContent.content}</p>
</>
) : (
"Click marker to load Wikipedia content"
)}
</Popup>
</Marker>
{/* Example marker */}
</MapContainer>
);
};
export default Map; |