11import { Feature , Map } from 'ol'
22import { Path } from '@/api/graphhopper'
3- import { FeatureCollection } from 'geojson'
4- import { useEffect } from 'react'
3+ import { useEffect , useRef , useState } from 'react'
54import VectorLayer from 'ol/layer/Vector'
65import VectorSource from 'ol/source/Vector'
7- import { GeoJSON } from 'ol/format'
86import { Stroke , Style } from 'ol/style'
97import { fromLonLat } from 'ol/proj'
108import { Select } from 'ol/interaction'
@@ -21,18 +19,43 @@ const selectedPathLayerKey = 'selectedPathLayer'
2119const accessNetworkLayerKey = 'accessNetworkLayer'
2220
2321export default function usePathsLayer ( map : Map , paths : Path [ ] , selectedPath : Path , queryPoints : QueryPoint [ ] ) {
22+ const [ showPaths , setShowPaths ] = useState ( true )
23+
2424 useEffect ( ( ) => {
2525 removeCurrentPathLayers ( map )
26- addUnselectedPathsLayer (
27- map ,
28- paths . filter ( p => p != selectedPath ) ,
29- )
30- addSelectedPathsLayer ( map , selectedPath )
31- addAccessNetworkLayer ( map , selectedPath , queryPoints )
26+ if ( showPaths ) {
27+ addUnselectedPathsLayer (
28+ map ,
29+ paths . filter ( p => p != selectedPath ) ,
30+ )
31+ addSelectedPathsLayer ( map , selectedPath )
32+ addAccessNetworkLayer ( map , selectedPath , queryPoints )
33+ }
3234 return ( ) => {
3335 removeCurrentPathLayers ( map )
3436 }
35- } , [ map , paths , selectedPath ] )
37+ } , [ map , paths , selectedPath , showPaths ] )
38+
39+ useEffect ( ( ) => {
40+ const target = map . getTargetElement ( )
41+ if ( ! target ) return
42+ const handleKeyDown = ( e : KeyboardEvent ) => {
43+ if ( e . key === 'h' ) setShowPaths ( false )
44+ }
45+
46+ const handleKeyUp = ( e : KeyboardEvent ) => {
47+ if ( e . key === 'h' ) setShowPaths ( true )
48+ }
49+
50+ target . tabIndex = 0
51+
52+ target . addEventListener ( 'keydown' , handleKeyDown )
53+ target . addEventListener ( 'keyup' , handleKeyUp )
54+ return ( ) => {
55+ target . removeEventListener ( 'keydown' , handleKeyDown )
56+ target . removeEventListener ( 'keyup' , handleKeyUp )
57+ }
58+ } , [ ] ) // run only once when component is initialized
3659}
3760
3861function removeCurrentPathLayers ( map : Map ) {
0 commit comments