1 |
eb408fe9
|
Vaclav Honzik
|
import React, { useEffect, useRef, useState } from 'react'
|
2 |
|
|
import mapboxgl, { LngLatLike, Popup } from 'mapbox-gl'
|
3 |
|
|
|
4 |
|
|
|
5 |
|
|
const coords = {
|
6 |
|
|
lng: 7.3700,
|
7 |
|
|
lat: 60.0400
|
8 |
|
|
}
|
9 |
|
|
|
10 |
|
|
// Adapted from
|
11 |
|
|
// https://docs.mapbox.com/help/tutorials/use-mapbox-gl-js-with-react/
|
12 |
|
|
const MapBoxExample = () => {
|
13 |
|
|
|
14 |
|
|
const [lng, setLng] = useState(coords.lng)
|
15 |
|
|
const [lat, setLat] = useState(coords.lat)
|
16 |
|
|
const [zoom, setZoom] = useState(1)
|
17 |
|
|
|
18 |
|
|
// TODO type
|
19 |
|
|
const map = useRef<any>(null)
|
20 |
|
|
const mapContainer = useRef<any>(null)
|
21 |
|
|
|
22 |
|
|
// Function to add markers to the map
|
23 |
|
|
const addMarkers = () => {
|
24 |
|
|
for (let i = 1; i <= 10; i += 1) { //
|
25 |
|
|
new mapboxgl.Marker()
|
26 |
|
|
.setLngLat([i * .5 + coords.lng, i * .5 + coords.lat])
|
27 |
|
|
.setPopup(new Popup()
|
28 |
|
|
.setHTML(`<h3>HELLO POPUP ${ i } ☀️🍕😂😅</h3>`))
|
29 |
|
|
.addTo(map.current as mapboxgl.Map)
|
30 |
|
|
}
|
31 |
|
|
}
|
32 |
|
|
|
33 |
|
|
useEffect(() => {
|
34 |
|
|
if (map.current) {
|
35 |
|
|
return
|
36 |
|
|
}
|
37 |
|
|
|
38 |
|
|
map.current = new mapboxgl.Map({
|
39 |
|
|
container: mapContainer.current,
|
40 |
|
|
center: [lng, lat],
|
41 |
|
|
accessToken: process.env.REACT_APP_MAPS_API_KEY,
|
42 |
|
|
style: 'mapbox://styles/mapbox/streets-v11',
|
43 |
|
|
zoom: zoom
|
44 |
|
|
})
|
45 |
|
|
|
46 |
|
|
map.current.addControl(new mapboxgl.NavigationControl())
|
47 |
|
|
|
48 |
|
|
addMarkers()
|
49 |
|
|
})
|
50 |
|
|
|
51 |
|
|
console.log('Whatup')
|
52 |
|
|
|
53 |
|
|
return (
|
54 |
|
|
<div>
|
55 |
|
|
<h1>Hello Map</h1>
|
56 |
|
|
<div ref={ mapContainer } style={ { height: '700px' } }/>
|
57 |
|
|
</div>
|
58 |
|
|
)
|
59 |
|
|
}
|
60 |
|
|
|
61 |
|
|
export default MapBoxExample
|