ํ ์ด ํ๋ก์ ํธ: ๋ฒ์ค์ผ ์ด๋์๋? ์งํ ์ํฉ ์ ๋ฆฌ
- October 10, 2019
- 2 minute read
ํฌํด์ฉ์ผ๋ก ์ฐ๊ธฐ ์ํด ์ด์ฌํ ๋ง๋ค๊ณ ์๋ ํ๋ก์ ํธ๋ค. Nodejs, API๋ ์ด๋ฒ ๊ธฐํ์ ์ฒ์ ์ฌ์ฉํด๋ดค๋๋ฐ, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์๊ณ ๋๋๊น ์๊ฐ๋ณด๋ค ๋ฏ์ค์ง ์์๋ค. ํ์ง๋ง ์ด์ ๋ง ๋ฐฐ์๊ฐ๋ฉด์ ๋ง๋ค๋ค๋ณด๋ ๋ญ๊ฐ๋ฅผ ํ๋ ๋ง๋ค๋ฉด ์ค๋ฅ๋ ํ๋ ์๊ฒจ์ ๋๋ฒ๊น ์ ์๊ฐ์ ์์ฒญ ์ฐ๊ณ ์๋ค. ์ฝ๋๋ ์ ๋ฆฌ๋์ด์ผ ํ ๋ถ๋ถ์ด ๋๋ฌด ๋ง๋ค. ใ ใ ๊ทธ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ฐํ๋ ๊ธฐ๋ฅ๋ค์ ๊ตฌํ๋์ด์ ์ข ์ ๋ฆฌ๋ฅผ ํด๋ณด๋ ค๊ณ ํฌ์คํ ์ ํด ๋ณธ๋ค.
์ฌ์ฉ์ ์์น ์ขํ ์กฐํ
- HTML5 Web API > geolocation API๋ฅผ ์ฌ์ฉํด์ ์ฌ์ฉ์์ ์ขํ๋ฅผ ์กฐํํ๋ค.
- Kakao ์ง๋ API๋ก ์ขํ๋ฅผ ๋๋ก๋ช ์ฃผ์๋ก ๋ณํํ์ฌ ์ถ๋ ฅํ๋ค.
- 1๋ฒ ๊ณผ์ ์์ ์ป์ด๋ธ ์ขํ๋ localStorage์ ์ ์ฅ๋๋ค. ํ๋ฉด์ด ๊ฐฑ์ ๋๋ฉด API ์๋ต ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์ฐ์ ์ถ๋ ฅํ๊ธฐ ์ํจ์ด๋ค.
- ํผ ์ ์ถ ์ ์ขํ ๊ฐ์ ์ ๋ฌํ๊ธฐ ์ํด, hidden ์ธํ(lat, lng)์๋ ์ขํ ๊ฐ์ด ์ ์ฅ๋๋ค.
์ค์๊ฐ ๋ ธ์ ๋ฒํธ ๊ฒ์
- ๊ณต๊ณต API > ๋ฒ์ค๋ ธ์ ์กฐํ ์๋น์ค > ๋ ธ์ ๋ฒํธ ๋ชฉ๋ก ์กฐํ๋ฅผ ์ด์ฉํ๋ค.
-
ํค๋ณด๋ ๋๋ฅผ ๋๋ง๋ค keyup ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ฌ, ์ ๋ ฅ๋ ์ซ์๋ก ์์ํ๋ ๋ ธ์ ๋ชฉ๋ก์ ์ถ๋ ฅํด์ค๋ค. ๊ธ์ ์+1 ๊ธธ์ด์ ๋ ธ์ ๊น์ง ์ ๊ณตํ๋ค.
- ์: ํ ์๋ฆฌ ์ โ3โ ์ ๋ ฅ ์, ์ต๋ ๋ ์๋ฆฌ ์ ๋ฒํธ๊น์ง ์ ๊ณต โ3โ, โ30โ, โ31โ โฆ
- ๋ชฉ๋ก์์ ๋ ธ์ ์ ์ ํํ๋ฉด, ์ธํ์ ํด๋น ๋ด์ฉ์ด ๋ฐ์๋๊ณ hidden ์ธํ(routeId, routeName)์๋ ๊ฐ์ ์ ์ฅํ๋ค.
-
๋ ธ์ ๋ฒํธ ์์ ์ ์ํด ์ธํ์ ํด๋ฆญํ๋ฉด, ์ง์ญ ๋ฐ ๋ฒ์ค ์ ํ ์ ๋ณด๊ฐ ์ง์์ง๊ณ ๋ ธ์ ๋ฒํธ๋ง ๋จ๊ฒ ํ๋ค.
- hidden ์ธํ routeName์ value๋ฅผ ๊ฐ์ ธ์จ๋ค.
- ์์ ์ ์ฉ์ดํ๋ฉด์, ๋ฐฑ์คํ์ด์ค ํค๋ฅผ ๋๋ฅด๋ฉด์ ๋ฐ์ํ๋ keyup ์ด๋ฒคํธ๋ฅผ ์ค์ด๊ธฐ ์ํจ์ด๋ค.
- ๋ ธ์ ๋ชฉ๋ก์ด 4๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ์คํฌ๋กค ๋ฐ๋ฅผ ์ ๊ณตํ๊ณ , 3๊ฐ ์ดํ์ผ ๋ ๊ฐ์๋งํผ select ํ๊ทธ์ ๋์ด๋ฅผ ์กฐ์ ํ๋ค.
์ฃผ๋ณ ์ ๋ฅ์ฅ์์ ์ ํ๋ ๋ ธ์ ์ ๋์ฐฉ ์ ๋ณด ์ ๊ณต
- ๊ณต๊ณต API > ์ ๋ฅ์ ์กฐํ ์๋น์ค > ์ฃผ๋ณ ์ ๋ฅ์ ๋ชฉ๋ก ์กฐํ, ๊ณต๊ณต API > ๋ฒ์ค ๋์ฐฉ ์ ๋ณด ์กฐํ ์๋น์ค > ๋ฒ์ค ๋์ฐฉ ์ ๋ณด ๋ชฉ๋ก ์กฐํ๋ฅผ ์ด์ฉํ๋ค.
- ์ขํ ๊ฐ ๊ธฐ์ค์ผ๋ก ์ฃผ๋ณ ์ ๋ฅ์ ์กฐํ ํ, ๊ฐ ์ ๋ฅ์์ ๋ํด ์ ํ๋ ๋ ธ์ (routeId ๋น๊ต)์ ๋์ฐฉ ์ ๋ณด๋ฅผ ์กฐํํ์ฌ ์ ๊ณตํ๋ ๋ฐฉ์์ด๋ค.
- ์กฐํ๋ ๋์ฐฉ ์ ๋ณด๋ res.render๋ฅผ ํตํด pug ํ ํ๋ฆฟ์ ์ ๋ฌํ๊ณ , pug ํ ํ๋ฆฟ์์ ๋ฐ์ดํฐ๋ฅผ ์ํํ๋ฉฐ ๋ฆฌ์คํธ(li ํ๊ทธ)๋ฅผ ์์ฑํ๋๋ก ๋ง๋ค์๋ค.
์ค๋ฅ ํ์ด์ง ์ ๊ณต
- ์ฃผ๋ณ์ ์ ๋ฅ์ฅ์ด ์์ ๊ฒฝ์ฐ ๋๋ ์ฃผ๋ณ ์ ๋ฅ์ฅ์ ์ ํํ ๋ ธ์ ์ด ์ดํํ์ง ์์ ๊ฒฝ์ฐ ์ค๋ฅ ํ์ด์ง๊ฐ ์ ๊ณต๋๋ค.
- catch๋ฅผ ํตํด ์ค๋ฅ ์ผ์ด์ค๋ฅผ ์ธ์ํ๊ณ , ์ค๋ฅ ๋ฉ์ธ์ง๋ฅผ pug ํ ํ๋ฆฟ์ ์ ๋ฌํ๋ค.
๋งบ์๋ง
์์ง ๋์ฐฉ์ ๋ณด ์กฐํ ํ์ด์ง๋ ๋์์ธ๋ ๋ชป ์
ํ ์ํ๊ณ , ์ฌ๋ฌ๋ชจ๋ก ๋ ๋๋ฒจ๋กญํด์ผํ ๋ถ๋ถ์ด ๋ง๋ค.
ํนํ ๋
ธ์ ๋ฒํธ ์ ํ ์ ํ์ ๋ ํผ ์ ์ถ ๋ง๊ณ ์ผ๋ฟ ๋ฉ์ธ์ง ๋์ฐ๋ ๊ฑฐ ๊ผญ ํด์ผ๊ฒ ๋ค. ๋ง๋ค๋ค ๋ณด๋ ๊ธฐํ๋ ๊ผญ ๋ณ๊ฒฝํด์ผ๋ ๊ฒ ๋ณด์ฌ์ ์ ๋๋ก ๊ธฐํ์๋ ๋ง๋ค ์์ ์ด๋ค. 0.5 ๋ฒ์ ๋ชฉํ๋ก ๊ตฌํ๋์ด์ผํ ๊ฒ, 1.0 ๋ฒ์ ์ผ๋ก ๊ตฌํ๋์ด์ผ ํ ๊ฒ์ผ๋ก ๋๋์ด์ ์์ฑํด์ผ๊ฒ ๋ค.
ํด์ผํ ๊ฒ๋ ๋ง๊ณ ์๋ฒฝ๊น์ง ๋๋ฒ๊น
์ ํ์ง๋ง ๋๋ฌด๋๋ฌด ์ฌ๋ฏธ์๋ ํ๋ก์ ํธ๋ค. ๊ผญ ์์ฑ๊น์ง ๋ฌ๋ฆด ์ ์๊ธธ ๐คฉ