Merge branch 'feature/kakaomap_setting' into 'develop'
Feature/kakaomap setting - setting the basic layout of frontend - display the kakao map in main page - display the kakao map in main page - add search location box - create the marker to each map - implement InfoWindow - add display infowindow function for each marker See merge request !3
Showing
6 changed files
with
348 additions
and
2 deletions
This diff is collapsed. Click to expand it.
| ... | @@ -6,8 +6,12 @@ | ... | @@ -6,8 +6,12 @@ |
| 6 | "@testing-library/jest-dom": "^4.2.4", | 6 | "@testing-library/jest-dom": "^4.2.4", |
| 7 | "@testing-library/react": "^9.3.2", | 7 | "@testing-library/react": "^9.3.2", |
| 8 | "@testing-library/user-event": "^7.1.2", | 8 | "@testing-library/user-event": "^7.1.2", |
| 9 | + "bootstrap": "^3.4.1", | ||
| 10 | + "daum-map-api": "^1.0.2", | ||
| 9 | "react": "^16.13.1", | 11 | "react": "^16.13.1", |
| 12 | + "react-bootstrap": "^1.0.1", | ||
| 10 | "react-dom": "^16.13.1", | 13 | "react-dom": "^16.13.1", |
| 14 | + "react-kakao-maps": "0.0.13", | ||
| 11 | "react-router-dom": "^5.2.0", | 15 | "react-router-dom": "^5.2.0", |
| 12 | "react-scripts": "3.4.1" | 16 | "react-scripts": "3.4.1" |
| 13 | }, | 17 | }, | ... | ... |
| ... | @@ -10,6 +10,16 @@ | ... | @@ -10,6 +10,16 @@ |
| 10 | content="Web site created using create-react-app" | 10 | content="Web site created using create-react-app" |
| 11 | /> | 11 | /> |
| 12 | <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> | 12 | <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> |
| 13 | + <script | ||
| 14 | + type="text/javascript" | ||
| 15 | + src="//dapi.kakao.com/v2/maps/sdk.js?appkey=61abec34d0855ba1d434ea222263d4a5&libraries=services,clusterer,drawing" | ||
| 16 | + ></script> | ||
| 17 | + <link | ||
| 18 | + rel="stylesheet" | ||
| 19 | + href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" | ||
| 20 | + integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" | ||
| 21 | + crossorigin="anonymous" | ||
| 22 | + /> | ||
| 13 | <!-- | 23 | <!-- |
| 14 | manifest.json provides metadata used when your web app is installed on a | 24 | manifest.json provides metadata used when your web app is installed on a |
| 15 | user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ | 25 | user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ |
| ... | @@ -24,7 +34,7 @@ | ... | @@ -24,7 +34,7 @@ |
| 24 | work correctly both with client-side routing and a non-root public URL. | 34 | work correctly both with client-side routing and a non-root public URL. |
| 25 | Learn how to configure a non-root public URL by running `npm run build`. | 35 | Learn how to configure a non-root public URL by running `npm run build`. |
| 26 | --> | 36 | --> |
| 27 | - <title>React App</title> | 37 | + <title>HowsTheWeather</title> |
| 28 | </head> | 38 | </head> |
| 29 | <body> | 39 | <body> |
| 30 | <noscript>You need to enable JavaScript to run this app.</noscript> | 40 | <noscript>You need to enable JavaScript to run this app.</noscript> | ... | ... |
| ... | @@ -15,13 +15,14 @@ | ... | @@ -15,13 +15,14 @@ |
| 15 | 15 | ||
| 16 | .App-header { | 16 | .App-header { |
| 17 | background-color: #282c34; | 17 | background-color: #282c34; |
| 18 | - min-height: 100vh; | 18 | + min-height: 13vh; |
| 19 | display: flex; | 19 | display: flex; |
| 20 | flex-direction: column; | 20 | flex-direction: column; |
| 21 | align-items: center; | 21 | align-items: center; |
| 22 | justify-content: center; | 22 | justify-content: center; |
| 23 | font-size: calc(10px + 2vmin); | 23 | font-size: calc(10px + 2vmin); |
| 24 | color: white; | 24 | color: white; |
| 25 | + font-weight: bold; | ||
| 25 | } | 26 | } |
| 26 | 27 | ||
| 27 | .App-link { | 28 | .App-link { | ... | ... |
frontend/src/home.css
0 → 100644
| 1 | +.Home { | ||
| 2 | + text-align: center; | ||
| 3 | +} | ||
| 4 | + | ||
| 5 | +.Home-logo { | ||
| 6 | + height: 40vmin; | ||
| 7 | + pointer-events: none; | ||
| 8 | +} | ||
| 9 | + | ||
| 10 | +@media (prefers-reduced-motion: no-preference) { | ||
| 11 | + .Home-logo { | ||
| 12 | + animation: Home-logo-spin infinite 20s linear; | ||
| 13 | + } | ||
| 14 | +} | ||
| 15 | + | ||
| 16 | +.Home-header { | ||
| 17 | + background-color: #282c34; | ||
| 18 | + min-height: 13vh; | ||
| 19 | + display: flex; | ||
| 20 | + flex-direction: column; | ||
| 21 | + align-items: center; | ||
| 22 | + justify-content: center; | ||
| 23 | + font-size: calc(10px + 2vmin); | ||
| 24 | + color: white; | ||
| 25 | + font-weight: bold; | ||
| 26 | +} | ||
| 27 | + | ||
| 28 | +.Home-link { | ||
| 29 | + color: #61dafb; | ||
| 30 | +} | ||
| 31 | + | ||
| 32 | +@keyframes Home-logo-spin { | ||
| 33 | + from { | ||
| 34 | + transform: rotate(0deg); | ||
| 35 | + } | ||
| 36 | + to { | ||
| 37 | + transform: rotate(360deg); | ||
| 38 | + } | ||
| 39 | +} | ||
| 40 | + | ||
| 41 | +.strong { | ||
| 42 | + font-size: calc(10px + 1vmin); | ||
| 43 | + font-weight: bold; | ||
| 44 | +} | ||
| 45 | +.map_wrap, | ||
| 46 | +.map_wrap * { | ||
| 47 | + margin: 0; | ||
| 48 | + padding: 0; | ||
| 49 | + font-family: "Malgun Gothic", dotum, "돋움", sans-serif; | ||
| 50 | + font-size: 12px; | ||
| 51 | +} | ||
| 52 | +.map_wrap a, | ||
| 53 | +.map_wrap a:hover, | ||
| 54 | +.map_wrap a:active { | ||
| 55 | + color: #000; | ||
| 56 | + text-decoration: none; | ||
| 57 | +} | ||
| 58 | +.map_wrap { | ||
| 59 | + position: relative; | ||
| 60 | + width: 100%; | ||
| 61 | + height: 500px; | ||
| 62 | +} | ||
| 63 | + | ||
| 64 | +#menu_wrap { | ||
| 65 | + position: absolute; | ||
| 66 | + top: 0; | ||
| 67 | + left: 0; | ||
| 68 | + bottom: 0; | ||
| 69 | + width: 250px; | ||
| 70 | + margin: 10px 0 30px 10px; | ||
| 71 | + padding: 5px; | ||
| 72 | + overflow-y: auto; | ||
| 73 | + background: rgba(53, 53, 53, 0.8); | ||
| 74 | + z-index: 1; | ||
| 75 | + font-size: 12px; | ||
| 76 | + border-radius: 10px; | ||
| 77 | +} | ||
| 78 | +.bg_white { | ||
| 79 | + background: #fff; | ||
| 80 | +} | ||
| 81 | +x #menu_wrap hr { | ||
| 82 | + display: block; | ||
| 83 | + height: 1px; | ||
| 84 | + border: 0; | ||
| 85 | + border-top: 2px solid #5f5f5f; | ||
| 86 | + margin: 3px 0; | ||
| 87 | +} | ||
| 88 | +#menu_wrap .option { | ||
| 89 | + text-align: center; | ||
| 90 | + color: #ffffff; | ||
| 91 | + font-weight: bold; | ||
| 92 | +} | ||
| 93 | +#menu_wrap .option p { | ||
| 94 | + margin: 10px 0; | ||
| 95 | +} | ||
| 96 | +#menu_wrap .option button { | ||
| 97 | + margin-left: 5px; | ||
| 98 | +} | ||
| 99 | + | ||
| 100 | +#placesList li { | ||
| 101 | + list-style: none; | ||
| 102 | +} | ||
| 103 | +#placesList .item { | ||
| 104 | + position: relative; | ||
| 105 | + border-bottom: 1px solid #888; | ||
| 106 | + overflow: hidden; | ||
| 107 | + cursor: pointer; | ||
| 108 | + min-height: 65px; | ||
| 109 | +} | ||
| 110 | +#placesList .item span { | ||
| 111 | + display: block; | ||
| 112 | + margin-top: 4px; | ||
| 113 | +} | ||
| 114 | +#placesList .item h5, | ||
| 115 | +#placesList .item .info { | ||
| 116 | + text-overflow: ellipsis; | ||
| 117 | + overflow: hidden; | ||
| 118 | + white-space: nowrap; | ||
| 119 | +} | ||
| 120 | +#placesList .item .info { | ||
| 121 | + padding: 10px 0 10px 55px; | ||
| 122 | + color: #ffffff; | ||
| 123 | +} | ||
| 124 | +#placesList .info .gray { | ||
| 125 | + color: #eaeaea; | ||
| 126 | +} | ||
| 127 | +#placesList .info .jibun { | ||
| 128 | + padding-left: 26px; | ||
| 129 | + background: url(http://t1.daumcdn.net/localimg/localimages/07/mapapidoc/places_jibun.png) | ||
| 130 | + no-repeat; | ||
| 131 | +} | ||
| 132 | +#placesList .info .tel { | ||
| 133 | + color: #ffbb00; | ||
| 134 | + font-weight: bold; | ||
| 135 | +} | ||
| 136 | +#placesList .item .markerbg { | ||
| 137 | + float: left; | ||
| 138 | + position: absolute; | ||
| 139 | + width: 36px; | ||
| 140 | + height: 37px; | ||
| 141 | + margin: 10px 0 0 10px; | ||
| 142 | + background: url(http://t1.daumcdn.net/localimg/localimages/07/mapapidoc/marker_number_blue.png) | ||
| 143 | + no-repeat; | ||
| 144 | +} | ||
| 145 | +#placesList .item .marker_1 { | ||
| 146 | + background-position: 0 -10px; | ||
| 147 | +} | ||
| 148 | +#placesList .item .marker_2 { | ||
| 149 | + background-position: 0 -56px; | ||
| 150 | +} | ||
| 151 | +#placesList .item .marker_3 { | ||
| 152 | + background-position: 0 -102px; | ||
| 153 | +} | ||
| 154 | +#placesList .item .marker_4 { | ||
| 155 | + background-position: 0 -148px; | ||
| 156 | +} | ||
| 157 | +#placesList .item .marker_5 { | ||
| 158 | + background-position: 0 -194px; | ||
| 159 | +} | ||
| 160 | +#placesList .item .marker_6 { | ||
| 161 | + background-position: 0 -240px; | ||
| 162 | +} | ||
| 163 | +#placesList .item .marker_7 { | ||
| 164 | + background-position: 0 -286px; | ||
| 165 | +} | ||
| 166 | +#placesList .item .marker_8 { | ||
| 167 | + background-position: 0 -332px; | ||
| 168 | +} | ||
| 169 | +#placesList .item .marker_9 { | ||
| 170 | + background-position: 0 -378px; | ||
| 171 | +} | ||
| 172 | +#placesList .item .marker_10 { | ||
| 173 | + background-position: 0 -423px; | ||
| 174 | +} | ||
| 175 | +#placesList .item .marker_11 { | ||
| 176 | + background-position: 0 -470px; | ||
| 177 | +} | ||
| 178 | +#placesList .item .marker_12 { | ||
| 179 | + background-position: 0 -516px; | ||
| 180 | +} | ||
| 181 | +#placesList .item .marker_13 { | ||
| 182 | + background-position: 0 -562px; | ||
| 183 | +} | ||
| 184 | +#placesList .item .marker_14 { | ||
| 185 | + background-position: 0 -608px; | ||
| 186 | +} | ||
| 187 | +#placesList .item .marker_15 { | ||
| 188 | + background-position: 0 -654px; | ||
| 189 | +} | ||
| 190 | +#pagination { | ||
| 191 | + margin: 10px auto; | ||
| 192 | + text-align: center; | ||
| 193 | +} | ||
| 194 | +#pagination a { | ||
| 195 | + display: inline-block; | ||
| 196 | + margin-right: 10px; | ||
| 197 | +} | ||
| 198 | +#pagination .on { | ||
| 199 | + font-weight: bold; | ||
| 200 | + cursor: default; | ||
| 201 | + color: #777; | ||
| 202 | +} | ||
| 203 | + | ||
| 204 | +.wraps { | ||
| 205 | + position: absolute; | ||
| 206 | + left: 0; | ||
| 207 | + bottom: 40px; | ||
| 208 | + width: 288px; | ||
| 209 | + height: 132px; | ||
| 210 | + margin-left: -144px; | ||
| 211 | + text-align: left; | ||
| 212 | + overflow: hidden; | ||
| 213 | + font-size: 12px; | ||
| 214 | + font-family: "Malgun Gothic", dotum, "돋움", sans-serif; | ||
| 215 | + line-height: 1.5; | ||
| 216 | +} | ||
| 217 | +.wraps * { | ||
| 218 | + padding: 0; | ||
| 219 | + margin: 0; | ||
| 220 | +} | ||
| 221 | +.wraps .infos { | ||
| 222 | + width: 286px; | ||
| 223 | + height: 120px; | ||
| 224 | + border-radius: 5px; | ||
| 225 | + border-bottom: 2px solid #ccc; | ||
| 226 | + border-right: 1px solid #ccc; | ||
| 227 | + overflow: hidden; | ||
| 228 | + background: #fff; | ||
| 229 | +} | ||
| 230 | +.wraps .infos:nth-child(1) { | ||
| 231 | + border: 0; | ||
| 232 | + box-shadow: 0px 1px 2px #888; | ||
| 233 | +} | ||
| 234 | +.infos .title { | ||
| 235 | + padding: 5px 0 0 10px; | ||
| 236 | + height: 30px; | ||
| 237 | + background: #eee; | ||
| 238 | + border-bottom: 1px solid #ddd; | ||
| 239 | + font-size: 18px; | ||
| 240 | + font-weight: bold; | ||
| 241 | +} | ||
| 242 | +.infos .close { | ||
| 243 | + position: absolute; | ||
| 244 | + top: 10px; | ||
| 245 | + right: 10px; | ||
| 246 | + color: #888; | ||
| 247 | + width: 17px; | ||
| 248 | + height: 17px; | ||
| 249 | + background: url("http://t1.daumcdn.net/localimg/localimages/07/mapapidoc/overlay_close.png"); | ||
| 250 | +} | ||
| 251 | +.infos .close:hover { | ||
| 252 | + cursor: pointer; | ||
| 253 | +} | ||
| 254 | +.infos .body { | ||
| 255 | + position: relative; | ||
| 256 | + overflow: hidden; | ||
| 257 | +} | ||
| 258 | +.infos .desc { | ||
| 259 | + position: relative; | ||
| 260 | + margin: 13px 0 0 90px; | ||
| 261 | + height: 75px; | ||
| 262 | +} | ||
| 263 | +.desc .ellipsis { | ||
| 264 | + overflow: hidden; | ||
| 265 | + text-overflow: ellipsis; | ||
| 266 | + white-space: nowrap; | ||
| 267 | +} | ||
| 268 | +.desc .jibun { | ||
| 269 | + font-size: 11px; | ||
| 270 | + color: #888; | ||
| 271 | + margin-top: -2px; | ||
| 272 | +} | ||
| 273 | +.infos .img { | ||
| 274 | + position: absolute; | ||
| 275 | + top: 6px; | ||
| 276 | + left: 5px; | ||
| 277 | + width: 73px; | ||
| 278 | + height: 71px; | ||
| 279 | + border: 1px solid #ddd; | ||
| 280 | + color: #888; | ||
| 281 | + overflow: hidden; | ||
| 282 | +} | ||
| 283 | +.infos:after { | ||
| 284 | + content: ""; | ||
| 285 | + position: absolute; | ||
| 286 | + margin-left: -12px; | ||
| 287 | + left: 50%; | ||
| 288 | + bottom: 0; | ||
| 289 | + width: 22px; | ||
| 290 | + height: 12px; | ||
| 291 | + background: url("http://t1.daumcdn.net/localimg/localimages/07/mapapidoc/vertex_white.png"); | ||
| 292 | +} | ||
| 293 | +.infos .link { | ||
| 294 | + color: #5085bb; | ||
| 295 | +} | ||
| 296 | + | ||
| 297 | +#footer { | ||
| 298 | + position: absolute; | ||
| 299 | + bottom: 0; | ||
| 300 | + width: 100%; | ||
| 301 | + height: 100px; | ||
| 302 | + background: #ccc; | ||
| 303 | +} | ||
| 304 | + | ||
| 305 | +.left-box { | ||
| 306 | + float: left; | ||
| 307 | + width: 20%; | ||
| 308 | +} | ||
| 309 | +.left-box h5 { | ||
| 310 | + font-size: 1rem; | ||
| 311 | + font-style: italic; | ||
| 312 | + padding-left: 10px; | ||
| 313 | +} | ||
| 314 | +.right-box { | ||
| 315 | + float: right; | ||
| 316 | + width: 80%; | ||
| 317 | +} | ||
| 318 | +.right-box h5 { | ||
| 319 | + font-size: 1rem; | ||
| 320 | + font-style: italic; | ||
| 321 | + padding-left: 10px; | ||
| 322 | +} | ||
| 323 | +#middle { | ||
| 324 | + text-align: center; | ||
| 325 | +} | ||
| 326 | +.info-button { | ||
| 327 | + border-radius: 4px; | ||
| 328 | + background-color: #4641d9; | ||
| 329 | + width: 100px; | ||
| 330 | + color: white; | ||
| 331 | +} |
This diff is collapsed. Click to expand it.
-
Please register or login to post a comment