[flutter] 플러터 geolocator를 이용한 위치 기록 및 추적

소개

이번 글에서는 플러터(Flutter) 프레임워크의 geolocator 패키지를 사용하여 위치 기록 및 추적 기능을 구현하는 방법에 대해 알아보겠습니다. geolocator는 GPS 또는 네트워크 위치를 사용하여 장치의 위치 정보를 가져오는 기능을 제공합니다.

설정

먼저, pubspec.yaml 파일을 열어 geolocator 패키지를 추가해야합니다. 아래와 같이 dependencies 섹션에 패키지를 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  geolocator: ^7.0.1

저장 후, 터미널에서 flutter pub get 명령어를 실행하여 패키지를 다운로드 받습니다.

위치 권한 설정

앱에서 위치 정보를 사용하기 위해서는 위치 권한이 필요합니다. 따라서 AndroidManifest.xml 파일에 위치 권한을 추가해야합니다. <manifest> 태그 내에 아래 코드를 추가합니다.

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

iOS의 경우, Info.plist 파일에 위치 서비스 사용 가능한 이유를 설명하는 메시지를 추가해야 합니다. 아래 코드를 Info.plist 파일에 추가합니다.

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>앱에서 위치를 사용합니다.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>앱에서 위치를 사용합니다.</string>

위치 가져오기

이제 위치를 가져오는 코드를 작성해보겠습니다. 다음과 같은 코드를 main.dart 파일에 추가합니다.

import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Geolocator Example')),
        body: Center(
          child: ElevatedButton(
            child: Text('Get Location'),
            onPressed: () {
              _getLocation();
            },
          ),
        ),
      ),
    );
  }

  void _getLocation() async {
    Position position = await Geolocator.getCurrentPosition(
        desiredAccuracy: LocationAccuracy.high);
    print(position);
  }
}

위 코드는 앱 실행 시 Get Location 버튼을 누르면 위치를 가져와서 출력하는 간단한 앱을 생성합니다. Geolocator.getCurrentPosition() 메서드를 사용하여 위치를 가져옵니다. 이때 desiredAccuracy 매개변수를 사용하여 위치의 정확도를 설정할 수 있습니다.

기록 및 추적

위치를 가져오는 것 외에도 geolocator는 위치 기록 및 추적을 할 수 있는 기능도 제공합니다. 자세한 내용은 geolocator의 공식 문서를 참조하시기 바랍니다.

결론

이제 플러터의 geolocator 패키지를 이용하여 위치 기록 및 추적 기능을 구현하는 방법을 알아보았습니다. 위치 정보는 다양한 앱에 활용될 수 있으니, 필요에 따라 적절히 응용하여 사용하시기 바랍니다.

참고 자료