페이지 이동경로
  • 문서>
  • 카카오내비>
  • Flutter

카카오내비

Flutter

이 문서는 Kakao SDK for Flutter(이하 Flutter SDK)를 사용한 카카오내비 API 구현 방법을 소개합니다.

시작하기 전에

패키지 설정

카카오내비 API를 사용하려면 설치를 참고하여 pubspec.yaml 파일에 Flutter SDK 전체 또는 카카오내비 패키지에 대한 의존성을 추가해야 합니다.

앱 실행 허용 목록 설정

iOS 디바이스에서 카카오내비 앱을 통한 목적지 공유 및 길 안내를 실행하려면 앱 실행 허용 목록을 설정해야 합니다. 설정 방법은 iOS를 참고합니다.

카카오내비 앱 실행 가능 여부 확인

카카오내비를 통한 목적지 공유 또는 길 안내를 요청하기 전, 카카오내비 앱의 실행 가능 여부를 확인할 수 있습니다. NaviApiisKakaoNaviInstalled()를 호출합니다. 해당 메서드 호출 결과의 의미는 다음과 같습니다.

  • true: 다음 중 하나
    • 모바일 기기의 네이티브 앱에서 요청했고, 카카오내비 앱이 설치돼 있는 경우
    • 모바일 기기의 웹 브라우저(웹뷰)에서 요청한 경우
  • false
    • 모바일 기기의 네이티브 앱에서 요청했고, 카카오내비 앱이 설치돼 있지 않은 경우
    • 모바일 기기가 아닌 경우

카카오내비 앱이 설치되어 있지 않다면 launchBrowserTab() 메서드를 사용해 카카오내비 앱 설치 페이지를 열 수 있습니다. 아래 예제를 참고합니다.

bool result = await NaviApi.instance.isKakaoNaviInstalled();
if (result) {
    print('카카오내비 앱으로 길안내 가능');
} else {
    print('카카오내비 미설치');
    // 카카오내비 설치 페이지로 이동
    launchBrowserTab(Uri.parse(NaviApi.webNaviInstall));
}

파라미터 구성하기

카카오내비를 통한 목적지 공유 또는 길 안내 요청 시, 목적지와 경로 검색 조건을 파라미터로 전달해야 합니다.

Location

  • 목적지 정보는 destination 파라미터로 Location 객체에 담아 전달
이름 타입 설명
name String 장소 이름
"우리 집", "회사" 등
rpFlag String 도착 링크
현재 미지원
x String 경도 좌표
y String 위도 좌표

NaviOption

  • 경로 검색 조건은 option 파라미터로 NaviOption 객체에 담아 전달
이름 타입 설명
coordType NaviCoordType 사용할 좌표계
routeInfo Boolean 전체 경로 정보 보기 사용 여부
returnUri String 길 안내의 전체 경로 보기 종료 시 호출될 URI
rpOption RpOption 경로 최적화 기준
startAngle int 시작 차량 각도
0~359 사이의 값

비고: 경로 검색 시 참고 정보이며, 길 안내 출발지는 사용자 현재 위치로 고정
startX String 시작 위치의 경도 좌표

비고: 경로 검색 시 참고 정보이며, 길 안내 출발지는 사용자 현재 위치로 고정
startY String 시작 위치의 위도 좌표

비고: 경로 검색 시 참고 정보이며, 길 안내 출발지는 사용자 현재 위치로 고정
vehicleType VehicleType 차종(기본값: 카카오내비 앱에 설정된 차종)
Enum: NaviCoordType
이름 설명
WGS84 World Geodetic System 84 좌표계
KATEC Katec 좌표계
(기본값)
Enum: RpOption
이름 설명
FAST 가장 빠른 경로(Fastest route)
FREE 무료 도로(Free route)
SHORTEST 가장 짧은 경로(Shortest route)
NO_AUTO 자동차 전용 도로 제외(Exclude motorway)
WIDE 큰길 우선(Wide road first)
HIGHWAY 고속도로 우선(Highway first)
NORMAL 일반 도로 우선(Normal road first)
RECOMMENDED 추천 경로(Recommended route)
기본 값으로 사용
Enum: VehicleType
이름 설명
FIRST 1종
승용차/소형승합차/소형화물차
SECOND 2종
중형승합차/중형화물차
THIRD 3종
대형승합차/2축 대형화물차
FOURTH 4종
3축 대형화물차
FIFTH 5종
4축이상 특수화물차
SIXTH 6종
경차
TWO_WHEEL 이륜차

길 안내하기

기본 정보
권한 사전 설정 카카오 로그인 사용자 동의 레퍼런스
- 플랫폼 등록 - - navigate()

카카오내비 앱을 통해 사용자의 현재 위치로부터 지정한 목적지까지의 경로를 안내합니다. NaviApinavigate()를 호출합니다.

요청 시 destination 파라미터에 목적지 정보를 전달해야 합니다. 이 밖에 경로 검색 조건을 지정하는 option 파라미터, 경유지를 추가하는 viaList 파라미터를 사용할 수 있습니다. 경유지는 List<Location> 형식으로 전달합니다.

요청 성공 시 Flutter SDK가 카카오내비 앱을 실행하여 지정된 목적지까지의 경로 목록을 출력합니다. 사용자가 원하는 경로를 선택하면 길 안내가 시작됩니다.

카카오내비 앱이 설치돼 있지 않은 경우에는 launchBrowserTab() 메서드를 통해 설치 페이지로 이동하도록 할 수 있습니다. 아래 예제를 참고합니다.

if (await NaviApi.instance.isKakaoNaviInstalled()) {
  // 카카오내비 앱으로 길 안내하기, WGS84 좌표계 사용
  await NaviApi.instance.navigate(
    destination:
        Location(name: '카카오 판교오피스', x: '127.108640', y: '37.402111'),
    // 경유지 추가
    viaList: [
      Location(name: '판교역 1번출구', x: '127.111492', y: '37.395225'),
    ],
  );
} else {
  // 카카오내비 설치 페이지로 이동
  launchBrowserTab(Uri.parse(NaviApi.webNaviInstall));
}

다음은 카카오내비 실행 후 길 안내를 시작한 화면입니다.

길 안내 예시 화면

목적지 공유하기

권한 사전 설정 카카오 로그인 사용자 동의 레퍼런스
- 플랫폼 등록 - - shareDestination()

카카오내비 앱에서 지정한 출발지로부터 목적지까지의 경로 정보를 출력합니다. NaviApishareDestination()을 호출합니다.

요청 시 destination 파라미터에 목적지 정보를 전달해야 합니다. 출발지 정보와 경로 검색 조건을 지정하는 option 파라미터, 경유지를 추가하는 viaList 파라미터를 사용할 수 있습니다. 경유지는 List<Location> 형식으로 전달합니다.

요청 성공 시 Flutter SDK가 카카오내비 앱을 실행하여 지정된 목적지까지의 경로 정보를 출력합니다. 해당 화면에서 사용자가 원하는 경로를 선택하면 현재 사용자의 위치로부터 목적지까지의 길 안내를 받을 수 있습니다.

카카오내비 앱이 설치돼 있지 않은 경우에는 launchBrowserTab() 메서드를 통해 설치 페이지로 이동하도록 할 수 있습니다. 아래 예제를 참고합니다.

if (await NaviApi.instance.isKakaoNaviInstalled()) {
  // 카카오내비 앱으로 목적지 공유하기, WGS84 좌표계 사용
  await NaviApi.instance.shareDestination(
    destination:
        Location(name: '카카오 판교오피스', x: '127.108640', y: '37.402111'),
    // 좌표계 지정
    option: NaviOption(coordType: CoordType.wgs84),
  );
} else {
  // 카카오내비 설치 페이지로 이동
  launchBrowserTab(Uri.parse(NaviApi.webNaviInstall));
}

아래는 카카오내비에서 목적지 공유하기를 실행한 화면입니다.

목적지 공유 예시 화면

더 보기