
카카오 내비게이션을 플러터에서 사용하는 방법은 몇 가지가 있다.
길 찾기를 카카오 내비 앱을 호출하여 자체적으로 처리하는 방법이 있고, 웹뷰(WebView)를 활용하여 웹 상에서 처리하는 방법도 있다.
그리고 RestAPI를 통해 서버의 값을 호출하여 받아와 원하는 형태로 가공하는 방법도 있다.
오늘은 Rest API를 통한 처리 방법에 대해서 정리해 보자.
우선 어떤 방법을 쓰느냐와 상관없이 카카오 API를 쓰기 위해서는 앱 키(Application Key)를 발급받아야 한다.
앱 키를 발급받는 방법은 아래의 링크를 참조하자.
https://hobbyspoon.tistory.com/29 <-- 이 글에 설명이 포함되어 있음.
Flutter 카카오 네비게이션 앱으로 길안내하기 (Android)
Kakao API를 활용하면 카카오 로그인, 카카오톡 소셜, 메시지, 지도/로컬, 카카오내비, 톡캘린더 등 소셜통합 API를 사용할 수 있다. 그 외에도 카카오싱크, 카카오톡 채널, 카카오페이, 카카오 키워
hobbyspoon.tistory.com
RestAPI를 활용하여 Flutter에서 카카오 내비(Kakao Navi) API 호출하기
우리는 저 게시글에서 REST API 키를 활용한 기능을 구현할 것이다.
먼저 카카오 공식문서를 참고하여 자동차 길 찾기를 살펴보자.
그러면 아래와 같은 형식으로 호출하라고 되어있다.

요청 코드 예제는 아래와 같다.
curl -v -X GET "https://apis-navi.kakaomobility.com/v1/directions?origin=127.11015314141542,37.39472714688412&destination=127.10824367964793,37.401937080111644&waypoints=&priority=RECOMMEND&car_fuel=GASOLINE&car_hipass=false&alternatives=false&road_details=false" \ -H "Authorization: KakaoAK ${REST_API_KEY}" // 카카오디벨로퍼스에서 발급받은 API 키 값
그럼 이 코드 예제를 Flutter의 구조에 맞게 수정해 보자.
그러면 아래와 같다.
void _fetchData() async {
const String restApiKey = '당신의 Rest API 키 값을 넣는 장소';
var url = Uri.parse(
'https://apis-navi.kakaomobility.com/v1/directions?origin=127.11015314141542,37.39472714688412&destination=127.10824367964793,37.401937080111644&waypoints=&priority=RECOMMEND&car_fuel=GASOLINE&car_hipass=false&alternatives=false&road_details=false');
var response = await http.get(url, headers: {
'Authorization': 'KakaoAK $restApiKey',
'Content-Type': 'application/json',
});
if (response.statusCode == 200) {
setState(() {
_response = response.body;
Clipboard.setData(ClipboardData(text: _response));
debugPrint(_response);
});
} else {
print('Request failed with status: ${response.statusCode}.');
}
}
그리고 웹 통신이기에 HTTP를 써야 한다.
상단에 http를 import 하자.
import 'package:http/http.dart' as http;
이제 원하는 곳에서 저 함수를 호출해서 불러와보면 Json 형식으로 길 찾기 안내 값이 전달되는 것을 확인할 수 있다.
카카오가 제공하는 길 찾기 API는 아래와 같다.
1. 자동차 길찾기
기본적인 내비게이션 정보를 받는다고 보면 된다.
출발지와 목적지, 그리고 다양한 옵션 설정이 가능하다.

2. 다중 경유지 길 찾기
출발지와 목적지는 똑같은데, 경유지를 설정할 수 있다.
여러 군데를 거칠 필요가 있을 때 사용하면 좋다.

3. 미래 운행 정보 길 찾기
미래의 특정 시간을 설정하고, 이때를 기준으로 경로 및 정보를 제공한다.
교통상황을 예측할 필요가 있을 때 사용하면 좋다.

4. 다중 출발지 길 찾기
목적지는 정해져 있고, 출발 장소가 여러 곳인 상황에 쓰기 좋다.
하나의 목적지를 오는 다양한 루트 안내 등에 쓰일 수 있을 것 같다.
* 자동차 길 찾기, 다중 경유지 길 찾기, 미래 운행 정보 길 찾기와 달리, 상세 길안내가 없음.

5. 다중 목적지 길찾기
다중 출발지 길 찾기와 반대로, 목적지가 여러 개인 상황에 활용하면 된다.
같은 가게인데 여러 지점이 있거나 하는 경우에 활용하거나 하면 될 듯하다.
* 자동차 길 찾기, 다중 경유지 길 찾기, 미래 운행 정보 길 찾기와 달리, 상세 길안내가 없음.

이런 다양한 API의 속성값을 살펴보고, 어떻게 적용되는지 테스트해보고 싶다면 아래 링크를 확인해 보자.
API를 웹에서 설정하여 테스트해 볼 수 있다. (카카오 로그인 필요)
<Flutter Terminal 명령어 모음 살펴보기>
flutter doctor, clean 등 Terminal 명령어 모음.
flutter는 Terminal 에서 명령어를 입력함으로써 다양한 기능을 수행할 수 있다. 물론 일부 기능은 GUI 환경에서도 가능하지만, 이런 명령어를 알고 있으면 일일히 버튼을 찾아 헤매지 않아도 된다는
hobbyspoon.tistory.com
'IT IS IT > Flutter' 카테고리의 다른 글
| [Flutter] ChatGPT API를 활용하여 대화 앱 만들기 (0) | 2024.03.02 |
|---|---|
| Flutter에서 Text 드래그/복사 가능하게 하기 (SelectableText) (0) | 2023.12.06 |
| Flutter 카카오 네비게이션 앱으로 길안내하기 (Android) (1) | 2023.12.05 |
| 플러터(Flutter)에서 Android Package 이름 설정 (1) | 2023.12.05 |
| flutter sdk version 에러 (0) | 2023.11.30 |