Develop/Flutter

[Flutter] 플러터 Geocoding API를 통해 좌표값을 주소로 바꾸기

JunJangE 2022. 1. 15. 14:04

이전에 현재 위치 좌표를 구하고 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

Google Maps Platform에 들어가서 Geocoding API를 클릭 후 사용 버튼을 누른다.

사용자 인증 정보

다음으로 사용자 인증 정보에 들어가게 되면 사용자 인증정보 만들기가 나온다.

사용자 인증정보 만들기 > 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