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='&copy; <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;