import "./map.scss"
import React, {useState} from 'react';
function Page() {
return (
<div className="test">
<Map/>
</div>
)
}
function Map() {
const [Component,
setComponent] = React.useState(() => Loading)
const [loaded, setloaded] = useState(false)
// useEffect() callbacks are only run in the browser, consequently the map
// component is loaded and rendererd only in the browser.
React.useEffect(() => {
let loadMap = async() => {
const leaflet = await import ('react-leaflet')
await import("leaflet/dist/leaflet.css")
setComponent(leaflet)
console.log(leaflet);
setloaded(true)
}
loadMap()
}, [])
const defaultPosition = [48.864716, 2.349];
return (
<React.Suspense fallback={< Loading />}>
{loaded &&
<Component.MapContainer center={defaultPosition} zoom={13}>
<Component.TileLayer
attribution='© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"/>
<Component.Marker position={defaultPosition}>
<Component.Popup>
123
</Component.Popup>
</Component.Marker>
</Component.MapContainer>
}
{!loaded && <Loading/>}
</React.Suspense>
)
}
function Loading() {
return <div>Loading map...</div>
}
export {Page}