[flutter] 플러터 geolocator를 이용한 지리적 위치 정보 이용하기

안녕하세요! 이번에는 플러터의 geolocator 패키지를 사용하여 지리적 위치 정보를 이용하는 방법에 대해 알아보겠습니다.

geolocator 패키지란?

geolocator는 플러터에서 사용되는 위치 정보 관련 패키지입니다. 이 패키지를 사용하면 GPS를 통해 디바이스의 현재 위치를 얻거나, 주소를 좌표로 변환하거나, 근접한 장소의 정보를 가져올 수 있습니다.

패키지 설치하기

먼저, 플러터 프로젝트에 geolocator 패키지를 추가해야 합니다. pubspec.yaml 파일에 아래의 코드를 추가해 주세요:

dependencies:
  geolocator: ^6.0.0

그리고 터미널에서 flutter packages get 명령어를 실행하여 패키지를 가져옵니다.

위치 정보 가져오기

geolocator 패키지를 사용하여 위치 정보를 가져오는 방법은 다음과 같습니다:

import 'package:geolocator/geolocator.dart';

void getLocation() async {
  Position position = await Geolocator.getCurrentPosition(
    desiredAccuracy: LocationAccuracy.high,
  );

  print(position.latitude);
  print(position.longitude);
}

위의 코드에서 Geolocator.getCurrentPosition() 메소드는 현재 디바이스의 위치 정보를 비동기적으로 가져옵니다. 가져온 위치 정보는 Position 객체로 반환됩니다. position.latitudeposition.longitude를 사용하여 위도와 경도를 얻을 수 있습니다.

위치 정보를 가져오기 위해서는 LocationAccuracy를 설정해야 합니다. LocationAccuracy.high로 설정하면 더 정확한 위치 정보를 얻을 수 있지만, 배터리 소모가 더 많이 발생할 수 있습니다.

에러 처리하기

위치 정보를 가져오는 과정에서 에러가 발생할 수 있습니다. 예를 들어, 디바이스에서 위치 정보를 제공하지 않을 경우 GeolocationStatus.denied 상태가 반환됩니다. 이런 경우에는 예외 처리를 해주는 것이 좋습니다:

void getLocation() async {
  try {
    Position position = await Geolocator.getCurrentPosition(
      desiredAccuracy: LocationAccuracy.high,
    );

    print(position.latitude);
    print(position.longitude);
  } catch (e) {
    print(e);
  }
}

에러가 발생할 경우 e 변수에 예외 객체가 저장되며, 이를 활용하여 에러 메시지를 출력하거나 다른 작업을 수행할 수 있습니다.

마무리

위에서는 플러터의 geolocator 패키지를 사용하여 지리적 위치 정보를 얻는 방법에 대해 알아보았습니다. 이를 활용하여 현재 위치를 표시하거나, 근처의 장소를 찾는 등 다양한 기능을 구현할 수 있습니다. 자세한 사항은 geolocator 패키지 문서를 참고해 주세요.