이전에 현재 위치 좌표를 구하고 Google Map에 나타내는 것을 구현해보았다.
[Flutter] 플러터 Google Map에서 현재 위치 좌표(위도, 경도) 찾기
이번에는 Google Map에서 현재 위치 좌표(위도, 경도)를 찾아보자. Google Map API에서 GoogleMap 위젯을 살펴보면 다음과 함수가 있는 것을 확인할 수 있다. initialCameraPosition : 초기 시작 시 지도 보기를..
fre2-dom.tistory.com
그렇다면 이번에는 구한 위치를 주소로 바꿔보는 코드를 구현해보자.
Google Cloud Platform
Google Cloud Platform
하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.
accounts.google.com
우선 구글 클라우드 플랫폼에 들어가
프로젝트 만들기 > 새 프로젝트 > 프로젝트 이름을 정하고 만들기를 누른다.
(프로젝트가 원래 있던 사람은 프로젝트 선택 > 새 프로젝트 > 프로젝트 이름을 정하고 만들기를 누른다.
+ 이전에 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"를 작성하면 된다.)
Google Maps Platform FAQ | Google Developers
의견 보내기 Google Maps Platform FAQ 시작하기 서비스 약관 이해하기 사용량 한도 및 결제 Google Maps Platform 사용하기 오류 및 문제 해결 Google Maps Platform 서비스 iOS용 Google Maps SDK Android용 Google Maps SDK URL
developers.google.com
참고
Get Started | Geocoding API | Google Developers
Geocoding converts addresses into geographic coordinates to be placed on a map. Reverse Geocoding finds an address based on geographic coordinates or place IDs.
developers.google.com
Google Maps Platform FAQ | Google Developers
의견 보내기 Google Maps Platform FAQ 시작하기 서비스 약관 이해하기 사용량 한도 및 결제 Google Maps Platform 사용하기 오류 및 문제 해결 Google Maps Platform 서비스 iOS용 Google Maps SDK Android용 Google Maps SDK URL
developers.google.com
'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 |