11import React , { useState , useEffect } from "react" ;
22import MapGL , { Source , Layer , ViewportProps , MapRequest } from "react-map-gl" ;
3+ import type mapboxgl from "mapbox-gl" ;
34import "mapbox-gl/dist/mapbox-gl.css" ;
45// eslint-disable-next-line import/no-extraneous-dependencies
56import { FeatureCollection } from "geojson" ;
@@ -18,6 +19,7 @@ interface State {
1819 origin : [ number , number ] ;
1920 destination : [ number , number ] ;
2021 route : FeatureCollection ;
22+ basemapStyle : string | object ;
2123}
2224
2325const initialOrigin : [ number , number ] = [ 60.16295 , 24.93071 ] ;
@@ -33,6 +35,12 @@ const initialState: State = {
3335 bearing : 0 ,
3436 pitch : 0 ,
3537 } ,
38+ basemapStyle : {
39+ layers : [ ] ,
40+ sources : { } ,
41+ version : 8 ,
42+ glyphs : "https://fonts.openmaptiles.org/{fontstack}/{range}.pbf" ,
43+ } ,
3644} ;
3745
3846const transformRequest = ( originalURL ?: string ) : MapRequest => {
@@ -49,6 +57,17 @@ const transformRequest = (originalURL?: string): MapRequest => {
4957const App : React . FC = ( ) => {
5058 const [ state , setState ] = useState ( initialState ) ;
5159
60+ useEffect ( ( ) => {
61+ const asyncAction = async ( ) : Promise < void > => {
62+ const response = await fetch (
63+ "https://raw.githubusercontent.com/HSLdevcom/hsl-map-style/master/simple-style.json"
64+ ) ;
65+ const style = ( await response . json ( ) ) as mapboxgl . Style ;
66+ setState ( ( prevState ) => ( { ...prevState , basemapStyle : style } ) ) ;
67+ } ;
68+ asyncAction ( ) ;
69+ } , [ ] ) ;
70+
5271 useEffect ( ( ) => {
5372 setState (
5473 ( prevState ) : State => ( {
@@ -88,7 +107,7 @@ const App: React.FC = () => {
88107 { ...state . viewport }
89108 width = "100%"
90109 height = "90%"
91- mapStyle = "https://raw.githubusercontent.com/HSLdevcom/hsl-map-style/master/simple-style.json"
110+ mapStyle = { state . basemapStyle }
92111 transformRequest = { transformRequest }
93112 onViewportChange = { ( viewport ) : void =>
94113 setState ( ( prevState ) : State => ( { ...prevState , viewport } ) )
0 commit comments