๊ด๋ จ ํฌ์คํ
:
https://velog.io/@99_insung/Kakao-%EC%9C%84%EB%8F%84-%EA%B2%BD%EB%8F%84
- ์์น์ ๋ณด๋ ์ง๋ ๋ด์์ ๋ฒ์์์ ์กด์ฌํ๋ ๊ฐ๊ฒ๋ฅผ ์กฐํํ๊ธฐ์ํด ๋์ค์ ์ฐ์ธ๋ค.
- ํ๋ก ํธ์์ ์๋ฒ๋ก ์์น์ ๋ณด๋ฅผ ์ ์กํ๋ ๋ฐฉ๋ฒ์ ๋๊ฐ์ง
- ์ํ๋ ์์น์ ์ฃผ์๋ฅผ ๋ณด๋ด๊ธฐ (๋๋ก๋ช /์ง๋ฒ ์๊ด X)
- ํ์ฌ ์ขํ ์์น๋ฅผ ๋ณด๋ด๊ธฐ
- ๋ ์ ๋ณด๋ฅผ Controller ์์ ํ์ธํ์ฌ ์์ฒญ์ ๋ง๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ค.
- ์ขํ ์ ์ก -> ํด๋น ์์น์ ์ฃผ์๋ฅผ ์๋ต
- ์ฃผ์ ์ ์ก -> ํด๋น ์์น์ ์ขํ๋ฅผ ์๋ต
- ์๋ต ๋ฐ๋
- ์ปจํธ๋กค๋ฌ
location: ์ฃผ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ขํ ์์น ์ ๋ณด๋ฅผ ์๋ต longitude, latitude: ๊ฒฝ๋/์๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฃผ์ ์์น ์ ๋ณด๋ฅผ ์๋ต
- ์๋น์ค
- ์ฃผ์๋ฅผ ์์ฒญํด์ ์ขํ ์ ๋ณด๋ฅผ ์๋ตํ ๋
- ์นด์นด์ค API๋ฅผ ์ด์ฉํ์ฌ ์๋ต๊ฐ์ ๋ฐ๋๋ค. ์ธ๋ถ API ์์ฒญ์ ์คํจํ ๊ฒฝ์ฐ์ ์์ธ์ฒ๋ฆฌ,
public AddressXY userAddress(String query) throws BaseException{ ResponseEntity<LocationInfoRes> apiResponse; try{ apiResponse = locationValue.kakaoLocalAPI(query); }catch (Exception e) { throw new BaseException(DATABASE_ERROR); } // ์นด์นด์ค ์์น API ์๋ต ์คํจ if (apiResponse.getStatusCode() != HttpStatus.OK){ throw new BaseException(DATABASE_ERROR); } // ์๋ต ๊ฐ์ด 1์ด์์ด๋ฉด ๊ฒฐ๊ณผ๊ฐ ์กด์ฌํจ LocationInfoRes currentLoc = apiResponse.getBody(); if (currentLoc.getDocuments().length == 0){ throw new BaseException(DATABASE_ERROR); } // ํ์ฌ ์/๊ฒฝ๋ ๊ฐ String locAddress = currentLoc.getDocuments()[0].getAddress().getAddress_name(); String roadAddress = currentLoc.getDocuments()[0].getRoad_address().getAddress_name(); double nowX = currentLoc.getDocuments()[0].getX(); double nowY = currentLoc.getDocuments()[0].getY(); return new AddressXY(locAddress, roadAddress, nowX, nowY); }
- ์ขํ๋ฅผ ์์ฒญํด์ ์ฃผ์ ์ ๋ณด๋ฅผ ์๋ตํ ๋
- ์นด์นด์ค API๋ฅผ ์ด์ฉํ์ฌ ์๋ต๊ฐ์ ๋ฐ๋๋ค.
- ํ๋ก ํธ์์ ์ง๋์ ์ค์ ์์น ์ขํ๋ฅผ ๊ฐ์ ธ์์ ์๋ฒ์ ์์ฒญํ๊ฒ๋๋ค.
- ํ๋ฒ์ฉ ์ขํ๊ฐ ์ ํํ์ง ์์๋ ์ฃผ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์กฐํ๋์ง ์๋๋ฐ ๊ทธ๋๋ ์ขํ๋ฅผ ์กฐ๊ธ ์ฎ๊ฒจ์ ๋ค์ ์์ฒญํ๋ฉด ์ ์ ์๋ํ๊ฒ๋จ.
public AddressNames addrName(Double longitude, Double latitude) throws BaseException{ ResponseEntity<LocationXYRes> apiResponse; try{ apiResponse = locationValue.kakaoXYAPI(longitude, latitude); }catch (Exception e) { throw new BaseException(DATABASE_ERROR); } // ์นด์นด์ค ์์น API ์๋ต ์คํจ if (apiResponse.getStatusCode() != HttpStatus.OK){ throw new BaseException(DATABASE_ERROR); } try{ // ์๋ต ๊ฐ์ด 1์ด์์ด๋ฉด ๊ฒฐ๊ณผ๊ฐ ์กด์ฌํจ LocationXYRes currentLoc = apiResponse.getBody(); if (currentLoc.getDocuments().length == 0){ throw new BaseException(DATABASE_ERROR); } if (currentLoc.getDocuments()[0] != null){ String locAddress = currentLoc.getDocuments()[0].getAddress().getAddress_name(); String roadAddress = currentLoc.getDocuments()[0].getRoad_address().getAddress_name(); return new AddressNames(locAddress, roadAddress); } return new AddressNames("์ง๋๋ฅผ ์กฐ๊ธ๋ง ์ฎ๊ฒจ์ฃผ์ธ์", "์ขํ๊ฐ ์ ํํ์ง ์์."); }catch(NullPointerException ne){ return new AddressNames("์ง๋๋ฅผ ์กฐ๊ธ๋ง ์ฎ๊ฒจ์ฃผ์ธ์", "์ขํ๊ฐ ์ ํํ์ง ์์."); }catch (Exception e){ throw new BaseException(DATABASE_ERROR); } }
- ๋ก๊ทธ์ธ ํ ์ด๊ธฐ ํ๋ฉด
- ์๋จ ์ฃผ์ ๋ฐ ํด๋ฆญ
- ์ฃผ์ ์ ๋ ฅ ํ ์ฃผ์ ์ค์
- ํด๋น ์ฃผ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ง๋ ํ๋ฉด ์ด๋