[flutter] 플러터 앱에서 위치 기반 서비스를 사용하는 방법은?

플러터(Flutter)를 사용하여 개발하는 애플리케이션은 위치 기반 서비스를 통해 사용자 위치를 파악하고 관련 기능을 제공할 수 있습니다. 이 포스트에서는 플러터에서 위치 정보를 가져오고 처리하는 방법에 대해 알아보겠습니다.

1. 위치 권한 요청

우선 앱이 위치 정보에 접근하려면 사용자로부터 권한을 요청해야 합니다. 이를 위해 geolocator 패키지를 사용하여 위치 권한을 요청하고 사용자의 위치 정보를 가져올 수 있습니다.

import 'package:geolocator/geolocator.dart';

Geolocator geolocator = Geolocator();
GeolocationStatus geolocationStatus  = await geolocator.checkGeolocationPermissionStatus();

if (geolocationStatus == GeolocationStatus.denied) {
  geolocationStatus  = await geolocator.requestGeolocationPermission();
  if (geolocationStatus == GeolocationStatus.granted) {
    // 위치 권한 허용 됨
  } else {
    // 위치 권한 거부됨
  }
}

2. 현재 위치 가져오기

위치 권한이 허용되면, geolocator 패키지를 사용하여 현재 사용자의 위치를 가져올 수 있습니다.

Position position = await geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
print('현재 위치: ${position.latitude}, ${position.longitude}');

위 코드는 사용자의 현재 위치를 가로/세로 좌표로 가져오고 콘솔에 출력합니다.

3. 위치 변화 감지

사용자의 위치가 변경될 때마다 이벤트를 받고 싶다면, geolocator 패키지를 사용하여 위치 변화를 감지할 수 있습니다.

LocationOptions locationOptions = LocationOptions(accuracy: LocationAccuracy.high, distanceFilter: 10);
geolocator.getPositionStream(locationOptions).listen((Position position) {
  print('위치 변화 감지: ${position.latitude}, ${position.longitude}');
});

위 코드는 사용자의 위치가 변경될 때마다 해당 위치를 실시간으로 출력합니다.

위치 기반 서비스를 활용하여 다양한 애플리케이션을 개발할 수 있으며, 플러터에서는 geolocator 패키지를 이용하여 간단하게 위치 정보를 가져와 활용할 수 있습니다.

References