티스토리 뷰
2023.03.28 - [ETC] - [SPRING] 음료 주문 api 프로젝트 - 1 (프로젝트 소개)
음료 주문 api 프로젝트 진행하면서 사용한 기술 한가지에 대해 회고 하고자 한다.
1. 사용한 기술
현재 위치를 기반으로 가까운 스타벅스 지점을 2곳을 찾아서 응답하는 api 를 구현하였다.
이때 google map api 중에서 place api 를 사용하여 현재 위치의 위도, 경도 값을 가져와서 해당 값 기준으로 주변 스타벅스 지점을 호출하였다.
받아온 스타벅스 지점의 위도 경도 값과 현재 위치의 위도 경도 값을 거리 계산을 하여 가까운 거리 두곳을 응답하였다.
2. 해당 기술 구현하면서 발생한 문제점
1) google map api 를 활용하여 현재 주소를 문자열을 파라미터 값으로 넣어 주었을 때 숫자가 들어간 부분은 파라미터 값에서 일부가 넘어가지 않았다.
2) google map api 의 응답 값이 크롬에서는 한글로 응답을 받았지만, 인텔리제이에서는 영문으로 응답을 받았다.
3) 두 장소의 거리 계산을 하기 위해서 google map api 중에서 Distance Matrix API 을 사용하여 구현하고자 하였다.
Distance Matrix API 는 두 지점의 거리와 이동수단을 통한 걸리는 소요시간을 계산하는 api 였다. 파라미터 값에 이동 수단을 walking 으로 넣어 주면 오류가 되었고 디폴트 값으로 했을 때는 일부 지역은 거리 계산이 되었지만 일부 지역에 대해서는 거리 계산이 되지 않았다.
3. 해결 방식
1) Rest template 을 사용하기 전에 문자열로 받은 현재 주소에서 띄어 쓰기 부분은 모두 %20 으로 변환하여 사용하였다.
이때는 응답에 문제가 없었는데 Rest template 을 적용하면서 url 을 Uricomponents 를 사용하였더니 인코딩 과정에서 숫자 부분이 이상하게 적용이 되었다.
이것을 %20 에서 + 로 변경하였더니 문제가 해결되었다.
2) 파라미터 값에 language=ko 를 추가하여 한글로 응답을 받을 수 있었다.
3) 거리 계산을 google map api 를 사용하지 않고 두 지점의 위도, 경도 값을 바탕으로 거리 계산식을 통하여 해결하였다.
4. 3 의 방식으로 해결한 이유
google map api 를 통하여 두 지점의 거리 정보를 받아 올때 거리 계산이 안되는 장소가 있었으며, 정확한 거리 계산을 위해서 위도, 경도 값을 통하여 두 지점의 거리를 계산 할수 있다는 것을 알게 되어 적용하였다.
5. 다른 방식으로 구현한다면 어떤 기술을 활용해볼 수 있을 까?
거리 계산 방식을 카카오 맵 api 를 통해서 구현 해볼수 있을 것 같다.
'Coding > Spring & Project' 카테고리의 다른 글
[Kotlin] Not yet implemented 오류 해결 (0) | 2023.08.14 |
---|---|
[Git hub] 하나의 Repository에 여러 프로젝트 올리기 (0) | 2023.03.29 |
[SPRING] 음료 주문 api 프로젝트 - 1 (프로젝트 소개) (0) | 2023.03.28 |
Rest template 이용하여 google map place api 이용하기 (0) | 2023.03.28 |
Docker 에 mysql 설치 후 workbench 연결 오류!? (2) | 2023.03.13 |
- Total
- Today
- Yesterday
- 개발자 취준
- 알고리즘
- 코테공부
- 프로그래머스
- 제로베이스 백준 장학금
- 백엔드 개발자
- 취업 준비
- 기술 면접 준비
- 코딩테스트
- 알고리즘 공부
- 주니어 개발자 취업 준비
- 코테 준비
- 개발자 취업 준비
- 코테준비
- 자바
- 코딩테스트공부
- 취준
- 개발자 면접 준비
- 알고리즘공부
- 취업준비
- java
- 프로그래머스 카카오
- 프로그래머스 자바
- 백엔드 개발자 기술 면접 준비
- 제로베이스 백엔드 스쿨
- 백준
- 코딩테스트 준비
- 백엔드 개발자 취업 준비
- 자바공부
- 코딩테스트 공부
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |