이번 프로젝트를 진행하면서 카카오 지도 api와 네이버 지도 api를 사용하였습니다.
장소에 대한 정보는 카카오 지도 api로, 지도 자체는 네이버 지도 api를 사용하였는데 두 가지 지도 api에 관련하여 각자의 장단점을 한번 비교해볼까 합니다.
| API 및 기능 | 설명 |
|---|---|
| 주소 검색하기 | 특정 주소에 해당하는 장소 정보의 좌표를 검색합니다. |
| 좌표로 행정구역정보 받기 | 좌표 값을 행정동, 법정동으로 변환합니다.맛집, 날씨 등 위치에 맞는 정보 제공 서비스에 활용할 수 있습니다. |
| 좌표로 주소 변환하기 | 특정 좌표의 지번 주소 및 도로명 주소를 제공합니다. |
| 좌표계 변환하기 | 특정 체계의 좌표 값을 다른 체계의 좌표 값으로 변환합니다. (지원 좌표계: WGS84, WCONGNAMUL, CONGNAMUL, WTM, TM, KTM, UTM, BESSEL, WKTM, WUTM) |
| 키워드 검색하기 | 키워드로 관련 장소 및 상세 정보를 검색합니다. 각 장소 상세 페이지로 연결되는 URL을 제공합니다. |
| 카테고리 검색하기 | 카테고리로 관련 장소 및 상세 정보 검색합니다. 각 장소 상세 페이지로 연결되는 URL을 제공합니다. |
여기서 쿼리에 맞는 검색 결과를 가져오기 위해서는 키워드 검색하기 기능을 통해서 정보를 받아올 수 있습니다.
키워드로 장소를 검색할 때는 다음과 같이 친절하게 안내가 되어있습니다.

요청 단계에서는 다음과 같습니다.


HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 { "meta": { "same_name": { "region": [], "keyword": "카카오프렌즈", "selected_region": "" }, "pageable_count": 14, "total_count": 14, "is_end": true }, "documents": [ { "place_name": "카카오프렌즈 코엑스점", "distance": "418", "place_url": "http://place.map.kakao.com/26338954", "category_name": "가정,생활 > 문구,사무용품 > 디자인문구 > 카카오프렌즈", "address_name": "서울 강남구 삼성동 159", "road_address_name": "서울 강남구 영동대로 513", "id": "26338954", "phone": "02-6002-1880", "category_group_code": "", "category_group_name": "", "x": "127.05902969025047", "y": "37.51207412593136" }, ... ] }
- 카카오 지도 api에서 예시로 보여준 응답 결과입니다. query로 카카오 프렌즈를 넣어서 요청하였을 때의 결과로 저는 여기서 phone, place_url, address_name, place_name, x, y 값을 사용하였습니다.
x, y는 경도와 위도 값으로 지도 위에 마커를 찍기위해 필요한 부분이라서 가져왔습니다.
네이버 지도 api에 비해서 검색 결과가 사실 그렇게 정확하게 나오지는 않았던 것 같습니다. 테스트를 하는 과정에서 문제가 있었을 수도 있겠지만 네이버 지도 api에 비해서 결과 값의 정확도, 상위 결과 값의 선정 기준?? 을 잘 모르겠었습니다. 그 외에는 다 만족했습니다!
이건 조금 다른 이야기지만 지금 실 기기가 아닌 에뮬레이터에서 테스트를 해보고 있다 보니
https://devtalk.kakao.com/t/x86-x86-64/42582
위의 링크와 같은 오류가 생겼습니다. 그래서 문제 해결 방법으로 카카오 지도 api에서 검색 결과 값을, 네이버 지도 api를 화면에 나타내 주는 방법을 선택한 이유도 있습니다.
| API | 설명 |
|---|---|
| Static Map | 정적 지도 이미지 생성 |
| Directions 5 | 경로 탐색(경유지 최대 5개) |
| Directions 15 | 경로 탐색(경유지 최대 15개) |
| Geocoding | 주소 검색 |
| Reverse Geocoding | 좌표를 주소로 변환 |
네이버 지도는 키워드를 검색할 수 없고 주소를 검색해서 장소에 대한 정보를 얻을 수 있었습니다.
정확도는 네이버 지도 api가 더 좋았지만 다양한 결과를 얻을 수 있었던 것은 카카오 지도 api였던 이유가 이런 점도 있었습니다.



(개인적으로 공식 문서 자체는 카카오가 조금 더 잘 알려주는 느낌?? 이 있었던 것 같습니다.)
{ "status": "OK", "meta": { "totalCount": 1, "page": 1, "count": 1 }, "addresses": [ { "roadAddress": "경기도 성남시 분당구 불정로 6 NAVER그린팩토리", "jibunAddress": "경기도 성남시 분당구 정자동 178-1 NAVER그린팩토리", "englishAddress": "6, Buljeong-ro, Bundang-gu, Seongnam-si, Gyeonggi-do, Republic of Korea", "addressElements": [ { "types": [ "SIDO" ], "longName": "경기도", "shortName": "경기도", "code": "" }, { "types": [ "SIGUGUN" ], "longName": "성남시 분당구", "shortName": "성남시 분당구", "code": "" }, { "types": [ "DONGMYUN" ], "longName": "정자동", "shortName": "정자동", "code": "" }, { "types": [ "RI" ], "longName": "", "shortName": "", "code": "" }, { "types": [ "ROAD_NAME" ], "longName": "불정로", "shortName": "불정로", "code": "" }, { "types": [ "BUILDING_NUMBER" ], "longName": "6", "shortName": "6", "code": "" }, { "types": [ "BUILDING_NAME" ], "longName": "NAVER그린팩토리", "shortName": "NAVER그린팩토리", "code": "" }, { "types": [ "LAND_NUMBER" ], "longName": "178-1", "shortName": "178-1", "code": "" }, { "types": [ "POSTAL_CODE" ], "longName": "13561", "shortName": "13561", "code": "" } ], "x": "127.1054328", "y": "37.3595963", "distance": 0.0 } ], "errorMessage": "" }
- 네이버 지도 api 공식 문서에 있는 응답 결과 예시입니다. 주소에 대한 내용은 자세하게 되어있지만 그 외에 부가적인 사항은 받을 수 없더라구요 ㅠㅠ
(물론 제가 잘 못 찾아본 것일 수도 있습니다!)
- 그래서 검색에 대한 조금 부가사항을 사용하고 싶어서 장소에 대한 검색은 카카오 지도 api를 사용하기로 한 것이었습니다.
네이버 지도에서 방금 사용한 Geocoding의 경우에는 요금이 다음과 같습니다.
| 서비스 구분 | 과금 기준 | 과금 구간 | 요금 | 비고 |
|---|---|---|---|---|
| Geocoding | 이용 횟수 | 3,000,000건 이하 | 무료 | ※ 대표 계정 1개에 한해 월 3,000,000건의 무료 이용량을 제공합니다. |
| Geocoding | 이용 횟수 | 3,000,000건 초과 | 0.5원 | ※ 대표 계정 1개에 한해 월 3,000,000건의 무료 이용량을 제공합니다. |
.
.
.
.
.
예전에 구글 지도를 사용했을 때는 정보는 좋았지만 국내 서비스에는 조금 불편한 점이 있었고 국내 서비스를 목표로 지도 api를 사용한다면 카카오 api와 네이버 api를 고려해 볼 수 있는데
정확한 내용과 장소에 대한 세분화를 원한다면 네이버 지도 api를, 부가적인 정보의 활용을 원한다면 카카오 지도 api의 사용이 좋을 것 같습니다. 물론 개인적인 견해이긴 하지만...사용해보니 그런 느낌을 받은 것 같습니다.