11import styled from 'styled-components' ;
22import { useRecoilValue , useRecoilState } from 'recoil' ;
3- import { storeInfoList , centerLatAndLng , zoomLevel , storeCardVisible , stationCardVisible , locationStoreId } from '../model/locationAtom.jsx' ;
3+ import {
4+ storeInfoList ,
5+ centerLatAndLng ,
6+ zoomLevel ,
7+ storeCardVisible ,
8+ stationCardVisible ,
9+ locationStoreId ,
10+ } from '../model/locationAtom.jsx' ;
411import { GoogleMap , MarkerF , OverlayView } from '@react-google-maps/api' ;
512import { googleMapStyles } from '../../../shared/styles/googleMapStyles.js' ;
613import MarkerIcon from '../../../shared/assets/images/location/marker.png' ;
714import AwardMarkerIcon from '../../../shared/assets/images/location/awardMarker.png' ;
8- // import useDevice from '../../../shared/hooks/useDevice.js';
15+ import useDevice from '../../../shared/hooks/useDevice.js' ;
916
1017function GoogleMapComponent ( ) {
1118 // 중앙 좌표
@@ -47,65 +54,63 @@ function GoogleMapComponent() {
4754 disableDefaultUI : true , // 기본 설정 초기화
4855 } ;
4956
57+ // 반응형 함수
58+ const { isMobile } = useDevice ( ) ;
59+
5060 return (
51- < MapWrapper >
52- < GoogleMap
53- mapContainerStyle = { containerStyle }
54- center = { adjustedCenter }
55- zoom = { zoomLevelState }
56- options = { options }
57- >
58- {
59- storeList . map ( ( store ) => (
60- < div key = { store . storeId } >
61- < MarkerF
62- position = { { lat : store . latitude , lng : store . longitude } }
63- icon = { {
64- url : store . isAwarded ? AwardMarkerIcon : MarkerIcon ,
65- scaledSize : new window . google . maps . Size ( 22.8 , 32.4 ) ,
66- // scaledSize: new window.google.maps.Size(38, 54), // 원래 사이즈
67- } }
68- onClick = { ( ) => {
69- handleStoreSelect ( store . storeId ) ;
70- setCenterLatAndLng ( { lat : store . latitude , lng : store . longitude } ) ;
71- setZoomLevel ( 18 ) ;
72- } }
73- />
74- < OverlayView
75- position = { { lat : store . latitude , lng : store . longitude } }
76- mapPaneName = { OverlayView . OVERLAY_MOUSE_TARGET }
77- >
78- < CafeNameBox
79- onClick = { ( ) => {
80- handleStoreSelect ( store . storeId ) ;
81- setCenterLatAndLng ( { lat : store . latitude , lng : store . longitude } ) ;
82- setZoomLevel ( 18 ) ;
83- } }
84- >
85- < CafeNameText > { store . storeName } </ CafeNameText >
86- </ CafeNameBox >
87- </ OverlayView >
88- </ div >
89- ) )
90- }
91- </ GoogleMap >
92- </ MapWrapper >
93- )
61+ < MapWrapper isMobile = { isMobile } >
62+ < GoogleMap mapContainerStyle = { containerStyle } center = { adjustedCenter } zoom = { zoomLevelState } options = { options } >
63+ { storeList . map ( ( store ) => (
64+ < div key = { store . storeId } >
65+ < MarkerF
66+ position = { { lat : store . latitude , lng : store . longitude } }
67+ icon = { {
68+ url : store . isAwarded ? AwardMarkerIcon : MarkerIcon ,
69+ scaledSize : new window . google . maps . Size ( 22.8 , 32.4 ) ,
70+ // scaledSize: new window.google.maps.Size(38, 54), // 원래 사이즈
71+ } }
72+ onClick = { ( ) => {
73+ handleStoreSelect ( store . storeId ) ;
74+ setCenterLatAndLng ( { lat : store . latitude , lng : store . longitude } ) ;
75+ setZoomLevel ( 18 ) ;
76+ } }
77+ />
78+ < OverlayView
79+ position = { { lat : store . latitude , lng : store . longitude } }
80+ mapPaneName = { OverlayView . OVERLAY_MOUSE_TARGET }
81+ >
82+ < CafeNameBox
83+ onClick = { ( ) => {
84+ handleStoreSelect ( store . storeId ) ;
85+ setCenterLatAndLng ( { lat : store . latitude , lng : store . longitude } ) ;
86+ setZoomLevel ( 18 ) ;
87+ } }
88+ >
89+ < CafeNameText > { store . storeName } </ CafeNameText >
90+ </ CafeNameBox >
91+ </ OverlayView >
92+ </ div >
93+ ) ) }
94+ </ GoogleMap >
95+ </ MapWrapper >
96+ ) ;
9497}
9598
9699export default GoogleMapComponent ;
97100
98101// CSS
99102const MapWrapper = styled . div `
100103 width: 100vw;
101- height: calc(100vh - 5.625rem - 2.375rem); // 100vh-헤더-풋터
104+ height: calc(
105+ 100vh - ${ ( { isMobile } ) => ( isMobile ? '4.375rem - 1.625rem' : '5.625rem - 2.375rem' ) }
106+ ); // 100vh-헤더-풋터
102107 position: absolute;
103108` ;
104109
105110const CafeNameBox = styled . div `
106111 padding: 0.25em 0.375em;
107112 width: 5.5em;
108- background: rgba(81, 93, 186, 0.70 );
113+ background: rgba(81, 93, 186, 0.7 );
109114 position: absolute;
110115 transform: translate(-50%, 10%);
111116 display: flex;
@@ -116,7 +121,7 @@ const CafeNameBox = styled.div`
116121` ;
117122
118123const CafeNameText = styled . div `
119- color: #FFF ;
124+ color: #fff ;
120125 font-family: 'Pretendard-Bold';
121126 font-size: 0.75em;
122127 line-height: normal;
0 commit comments