[flutter] 플러터에서 위치와 지도 연동하기

플러터(Flutter) 앱을 개발할 때 위치 기반 기능을 추가하고 지도와 연동하는 것은 매우 중요합니다. 사용자의 위치 정보를 수집하고 이를 지도 위에 표시하는 기능을 구현하면, 다양한 앱을 만들 수 있습니다. 이 포스트에서는 플러터에서 위치 및 지도 연동 기능을 구현하는 방법을 알아보겠습니다.

위치 권한 획득

플러터 앱에서 위치 서비스를 사용하기 위해서는 먼저 위치 권한을 획득해야 합니다. 이를 위해서 location 패키지를 사용할 수 있습니다. 이 패키지를 사용하면 사용자로부터 위치 권한을 요청하고 위치 정보를 수집할 수 있습니다.

먼저, location 패키지를 pubspec.yaml 파일에 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  location: ^4.3.0

위치 권한을 확인하고 요청하기 위한 코드는 아래와 같습니다.

import 'package:location/location.dart';

...

void getLocationPermission() async {
  var location = Location();
  bool _serviceEnabled;
  PermissionStatus _permissionGranted;

  _serviceEnabled = await location.serviceEnabled();
  if (!_serviceEnabled) {
    _serviceEnabled = await location.requestService();
    if (!_serviceEnabled) {
      return;
    }
  }

  _permissionGranted = await location.hasPermission();
  if (_permissionGranted == PermissionStatus.denied) {
    _permissionGranted = await location.requestPermission();
    if (_permissionGranted != PermissionStatus.granted) {
      return;
    }
  }
}

위 코드는 location 패키지를 사용하여 위치 권한을 확인하고 요청하는 예시입니다.

지도 표시

위치 권한을 획득했다면, 이제 지도를 표시하는 작업을 할 수 있습니다. 이를 위해서 flutter_map 패키지를 사용할 수 있습니다. 이 패키지는 다양한 지도 서비스(예: Google 지도)를 지원하며, 사용자의 위치 정보를 표시할 수 있습니다.

flutter_map 패키지를 pubspec.yaml 파일에 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  flutter_map: ^0.13.0

다음은 기본 지도를 표시하는 예시 코드입니다.

import 'package:flutter_map/flutter_map.dart';
import 'package:latlong/latlong.dart';

...

FlutterMap(
  options: MapOptions(
    center: LatLng(51.5, -0.09),
    zoom: 13.0,
  ),
  layers: [
    TileLayerOptions(
      urlTemplate: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
      subdomains: ['a', 'b', 'c']
    ),
  ],
)

위 코드는 flutter_map 패키지를 사용하여 기본 지도를 표시하는 예시입니다.

위치 기반 앱을 개발할 때, 위치 정보 수집 및 지도 표시는 핵심 기능 중 하나입니다. location 패키지와 flutter_map 패키지를 활용하여 위치와 지도를 효과적으로 연동할 수 있습니다.

더 많은 정보는 공식 문서를 참고하세요: