1- import { useCallback } from 'react'
1+ import { useEffect } from 'react'
22
3- import { ViewDispatch } from '@eplant/View'
43import { useTheme } from '@mui/material'
54import {
6- APIProvider ,
75 Map ,
86 MapCameraChangedEvent ,
97 MapEvent ,
@@ -15,33 +13,32 @@ import GeneDistributionChart from '../eFP/Viewer/GeneDistributionChart'
1513import Legend from '../eFP/Viewer/legend'
1614
1715import MapMarker from './MapMarker'
18- import { WorldEFPAction , WorldEFPData , WorldEFPState } from './types'
16+ import { WorldEFPData , WorldEFPState } from './types'
1917
2018interface MapContainerProps {
2119 activeData : WorldEFPData
2220 state : WorldEFPState
23- dispatch : ViewDispatch < WorldEFPAction >
21+ setState : ( state : WorldEFPState ) => void
2422}
25- const MapContainer = ( { activeData, state, dispatch } : MapContainerProps ) => {
23+ const MapContainer = ( { activeData, state, setState } : MapContainerProps ) => {
2624 const theme = useTheme ( )
2725 const map = useMap ( 'WorldEFP' )
2826
27+ // set map state on load from cache, url or default
28+ useEffect ( ( ) => {
29+ map ?. moveCamera ( { zoom : state . zoom , center : state . position } )
30+ } , [ map ] )
31+
2932 const hangleDragEnd = ( event : MapEvent ) => {
3033 const mapPos = map ?. getCenter ( )
3134 if ( ! mapPos ) return
3235
3336 const coords = { lat : mapPos . lat ( ) , lng : mapPos . lng ( ) }
34- dispatch ( {
35- type : 'set-map-position' ,
36- position : coords ,
37- } )
37+ setState ( { ...state , position : coords } )
3838 }
3939
4040 const handleZoom = ( event : MapCameraChangedEvent ) => {
41- dispatch ( {
42- type : 'set-map-zoom' ,
43- zoom : event . detail . zoom ,
44- } )
41+ setState ( { ...state , zoom : event . detail . zoom } )
4542 }
4643
4744 return (
0 commit comments