지도 api 비교해보기

김재현·2024년 10월 16일

이번 프로젝트를 진행하면서 카카오 지도 api와 네이버 지도 api를 사용하였습니다.
장소에 대한 정보는 카카오 지도 api로, 지도 자체는 네이버 지도 api를 사용하였는데 두 가지 지도 api에 관련하여 각자의 장단점을 한번 비교해볼까 합니다.

카카오 지도 api

  • 카카오 지도 api는 다음과 같은 기능을 지원합니다.
API 및 기능설명
주소 검색하기특정 주소에 해당하는 장소 정보의 좌표를 검색합니다.
좌표로 행정구역정보 받기좌표 값을 행정동, 법정동으로 변환합니다.맛집, 날씨 등 위치에 맞는 정보 제공 서비스에 활용할 수 있습니다.
좌표로 주소 변환하기특정 좌표의 지번 주소 및 도로명 주소를 제공합니다.
좌표계 변환하기특정 체계의 좌표 값을 다른 체계의 좌표 값으로 변환합니다. (지원 좌표계: WGS84, WCONGNAMUL, CONGNAMUL, WTM, TM, KTM, UTM, BESSEL, WKTM, WUTM)
키워드 검색하기키워드로 관련 장소 및 상세 정보를 검색합니다. 각 장소 상세 페이지로 연결되는 URL을 제공합니다.
카테고리 검색하기카테고리로 관련 장소 및 상세 정보 검색합니다. 각 장소 상세 페이지로 연결되는 URL을 제공합니다.

여기서 쿼리에 맞는 검색 결과를 가져오기 위해서는 키워드 검색하기 기능을 통해서 정보를 받아올 수 있습니다.

키워드로 장소를 검색할 때는 다음과 같이 친절하게 안내가 되어있습니다.

  • GET 메서드를 통해서 URL에 자료형만 정해주면 됩니다. (저의 경우엔 JSON으로)

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

  • HEADER에 카카오 REST_API_KEY를 Authorization에 넣어주고
  • 다음과 같은 쿼리 파라미터를 통해 결과를 요청할 수 있습니다.
    저는 크게 query(키워드)와 page, size 정도 사용하여 결과 값을 받아왔습니다.

응답 결과

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의 경우에는 1일 300,000회 무료로 사용 가능한데 혼자 프로젝트를 진행하거나 개발 공부를 하실 때는 부담없이 사용 가능 할 것 같습니다.

장점

  • 개인적으로 이번에 프로젝트에서 카카오 지도 검색 api를 사용한 이유는 제가 필요한 정보를 제공해주는 점(장소에 대한 url, 전화번호 등)이 제일 컸습니다. 좀 다양한 정보를 받아서 사용자에게 보여주고 싶었던 점이 컸기 때문에 선택하게 되었습니다.

단점

  • 네이버 지도 api에 비해서 검색 결과가 사실 그렇게 정확하게 나오지는 않았던 것 같습니다. 테스트를 하는 과정에서 문제가 있었을 수도 있겠지만 네이버 지도 api에 비해서 결과 값의 정확도, 상위 결과 값의 선정 기준?? 을 잘 모르겠었습니다. 그 외에는 다 만족했습니다!

  • 이건 조금 다른 이야기지만 지금 실 기기가 아닌 에뮬레이터에서 테스트를 해보고 있다 보니
    https://devtalk.kakao.com/t/x86-x86-64/42582
    위의 링크와 같은 오류가 생겼습니다. 그래서 문제 해결 방법으로 카카오 지도 api에서 검색 결과 값을, 네이버 지도 api를 화면에 나타내 주는 방법을 선택한 이유도 있습니다.

네이버 지도 api

  • 네이버 지도 api는 다음과 같은 기능을 제공합니다.
API설명
Static Map정적 지도 이미지 생성
Directions 5경로 탐색(경유지 최대 5개)
Directions 15경로 탐색(경유지 최대 15개)
Geocoding주소 검색
Reverse Geocoding좌표를 주소로 변환

네이버 지도는 키워드를 검색할 수 없고 주소를 검색해서 장소에 대한 정보를 얻을 수 있었습니다.
정확도는 네이버 지도 api가 더 좋았지만 다양한 결과를 얻을 수 있었던 것은 카카오 지도 api였던 이유가 이런 점도 있었습니다.

  • 네이버 지도 api의 요청 예시는 다음과 같습니다. 카카오와 비슷하게 GET 메서드를 통해서 받을 수 있으며 카카오와 다른 점은 JSON 형식의 자료형만 지원합니다.

  • 헤더에서 응답 데이터의 형식을 정해주는 것으로 보이고 api key도 헤더로 요청하는 것으로 보입니다.

  • 요청 쿼리 파라미터로는 다음과 같이 요청할 수 있고 카카오와 마찬가지로 query, page, count 세 가지를 요청해보았습니다.

(개인적으로 공식 문서 자체는 카카오가 조금 더 잘 알려주는 느낌?? 이 있었던 것 같습니다.)

응답 결과

{
    "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를, 부가적인 정보의 활용을 원한다면 카카오 지도 api의 사용이 좋을 것 같습니다. 물론 개인적인 견해이긴 하지만...사용해보니 그런 느낌을 받은 것 같습니다.

0개의 댓글