이 문서는 Kakao SDK for Flutter(이하 Flutter SDK)를 사용한 카카오내비 API 구현 방법을 소개합니다.
카카오내비 API를 사용하려면 설치를 참고하여 pubspec.yaml 파일에 Flutter SDK 전체 또는 카카오내비 패키지에 대한 의존성을 추가해야 합니다.
iOS 디바이스에서 카카오내비 앱을 통한 목적지 공유 및 길 안내를 실행하려면 앱 실행 허용 목록을 설정해야 합니다. 설정 방법은 iOS를 참고합니다.
카카오내비를 통한 목적지 공유 또는 길 안내를 요청하기 전, 카카오내비 앱의 실행 가능 여부를 확인할 수 있습니다. NaviApi
의 isKakaoNaviInstalled()
를 호출합니다. 해당 메서드 호출 결과의 의미는 다음과 같습니다.
true
: 다음 중 하나false
카카오내비 앱이 설치되어 있지 않다면 launchBrowserTab()
메서드를 사용해 카카오내비 앱 설치 페이지를 열 수 있습니다. 아래 예제를 참고합니다.
bool result = await NaviApi.instance.isKakaoNaviInstalled();
if (result) {
print('카카오내비 앱으로 길안내 가능');
} else {
print('카카오내비 미설치');
// 카카오내비 설치 페이지로 이동
launchBrowserTab(Uri.parse(NaviApi.webNaviInstall));
}
카카오내비를 통한 목적지 공유 또는 길 안내 요청 시, 목적지와 경로 검색 조건을 파라미터로 전달해야 합니다.
destination
파라미터로 Location
객체에 담아 전달이름 | 타입 | 설명 |
---|---|---|
name | String |
장소 이름 "우리 집", "회사" 등 |
rpFlag | String |
도착 링크 현재 미지원 |
x | String |
경도 좌표 |
y | String |
위도 좌표 |
option
파라미터로 NaviOption
객체에 담아 전달이름 | 타입 | 설명 |
---|---|---|
coordType | NaviCoordType |
사용할 좌표계 |
routeInfo | Boolean |
전체 경로 정보 보기 사용 여부 |
returnUri | String |
길 안내의 전체 경로 보기 종료 시 호출될 URI |
rpOption | RpOption |
경로 최적화 기준 |
startAngle | int |
시작 차량 각도 0~359 사이의 값 비고: 경로 검색 시 참고 정보이며, 길 안내 출발지는 사용자 현재 위치로 고정 |
startX | String |
시작 위치의 경도 좌표 비고: 경로 검색 시 참고 정보이며, 길 안내 출발지는 사용자 현재 위치로 고정 |
startY | String |
시작 위치의 위도 좌표 비고: 경로 검색 시 참고 정보이며, 길 안내 출발지는 사용자 현재 위치로 고정 |
vehicleType | VehicleType |
차종(기본값: 카카오내비 앱에 설정된 차종) |
이름 | 설명 |
---|---|
WGS84 | World Geodetic System 84 좌표계 |
KATEC | Katec 좌표계 (기본값) |
이름 | 설명 |
---|---|
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) 기본 값으로 사용 |
이름 | 설명 |
---|---|
FIRST | 1종 승용차/소형승합차/소형화물차 |
SECOND | 2종 중형승합차/중형화물차 |
THIRD | 3종 대형승합차/2축 대형화물차 |
FOURTH | 4종 3축 대형화물차 |
FIFTH | 5종 4축이상 특수화물차 |
SIXTH | 6종 경차 |
TWO_WHEEL | 이륜차 |
권한 | 사전 설정 | 카카오 로그인 | 사용자 동의 | 레퍼런스 |
---|---|---|---|---|
- | 플랫폼 등록 | - | - | navigate() |
카카오내비 앱을 통해 사용자의 현재 위치로부터 지정한 목적지까지의 경로를 안내합니다. NaviApi
의 navigate()
를 호출합니다.
요청 시 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() |
카카오내비 앱에서 지정한 출발지로부터 목적지까지의 경로 정보를 출력합니다. NaviApi
의 shareDestination()
을 호출합니다.
요청 시 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));
}
아래는 카카오내비에서 목적지 공유하기를 실행한 화면입니다.