이전에 현재 위치 좌표를 구하고 Google Map에 나타내는 것을 구현해보았다.
그렇다면 이번에는 구한 위치를 주소로 바꿔보는 코드를 구현해보자.
Google Cloud Platform
우선 구글 클라우드 플랫폼에 들어가
프로젝트 만들기 > 새 프로젝트 > 프로젝트 이름을 정하고 만들기를 누른다.
(프로젝트가 원래 있던 사람은 프로젝트 선택 > 새 프로젝트 > 프로젝트 이름을 정하고 만들기를 누른다.
+ 이전에 Google Map으로 프로젝트를 만든 사람은 그 프로젝트로 진행해도 좋을 것 같다.)
프로젝트를 만들었으면 Maps API를 활성화하자.
검색창에 google maps platform을 입력해 하단에 google maps platform을 클릭한다.
Google Maps Platform에 들어가서 Geocoding API를 클릭 후 사용 버튼을 누른다.
다음으로 사용자 인증 정보에 들어가게 되면 사용자 인증정보 만들기가 나온다.
사용자 인증정보 만들기 > API 키 > 키 제한을 누르게 되면 다음 이미지와 같은 창이 나온다.
위 사진처럼 API 키 제한을 한 후 저장을 한다.
성공적으로 진행했다면 본격적으로 코드를 작성해보자.
코드
Future<List<Ev>?> loadEvs() async {
// 좌표로 주소 구하기
String gpsUrl =
'https://maps.googleapis.com/maps/api/geocode/json?latlng=${gps.latitude},${gps.longitude}&key=$gpsApiKey';
final responseGps = await http.get(Uri.parse(gpsUrl));
print(convert.jsonDecode(responseGps.body));
.../
위 코드를 작성해서 print에 내용을 확인해보면 다음과 같은 형식으로 나올 것이다.
{
"results" : [
{
"address_components" : [
{
"long_name" : "1600",
"short_name" : "1600",
"types" : [ "street_number" ]
},
{
"long_name" : "Amphitheatre Parkway",
"short_name" : "Amphitheatre Pkwy",
"types" : [ "route" ]
},
{
"long_name" : "Mountain View",
"short_name" : "Mountain View",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Santa Clara County",
"short_name" : "Santa Clara County",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "California",
"short_name" : "CA",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "94043",
"short_name" : "94043",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
"geometry" : {
"location" : {
"lat" : 37.4267861,
"lng" : -122.0806032
},
"location_type" : "ROOFTOP",
"viewport" : {
"northeast" : {
"lat" : 37.4281350802915,
"lng" : -122.0792542197085
},
"southwest" : {
"lat" : 37.4254371197085,
"lng" : -122.0819521802915
}
}
},
"place_id" : "ChIJtYuu0V25j4ARwu5e4wwRYgE",
"plus_code" : {
"compound_code" : "CWC8+R3 Mountain View, California, United States",
"global_code" : "849VCWC8+R3"
},
"types" : [ "street_address" ]
}
],
"status" : "OK"
}
여기서 필요한 데이터만을 뽑아서 사용하면 된다.
영어가 아닌 다른 언어로 주소를 받고 싶다면 apikey다음에 &language="바꾸고 싶은 언어"를 작성하면 된다.
바꾸고 싶은 언어는 다음 링크를 통해 확인한다.( + 한국어는 "ko"를 작성하면 된다.)
참고
'Develop > Flutter' 카테고리의 다른 글
[Flutter] 플러터 tflite(TensorFlow Lite)를 활용한 이미지 분류 (2) | 2022.01.18 |
---|---|
[Flutter] 플러터 image_picker 패키지를 통해 카메라 구현 (5) | 2022.01.16 |
[Flutter] 플러터 사용자에게 권한 요청하기(permission_handler) (0) | 2022.01.14 |
[Flutter] 플러터 Google Map에서 현재 위치 좌표(위도, 경도) 찾기 (0) | 2022.01.13 |
[Flutter] 플러터 String to double 함수 (0) | 2022.01.10 |