[flutter] 플러터에서 위치 기반 앱 만들기

모바일 앱에서 위치 기반 기능을 사용하는 것은 매우 중요합니다. 특히 플러터(Flutter)는 위치 기반 앱을 만드는 데 매우 강력한 도구입니다.

1. 위치 권한 요청

사용자의 현재 위치를 가져오기 위해서는 위치 권한이 필요합니다. 플러터에서는 geolocator 패키지를 사용하여 위치 권한을 요청하고 사용자의 위치를 가져올 수 있습니다.

import 'package:geolocator/geolocator.dart';

void main() {
  bool serviceEnabled;
  LocationPermission permission;

  // 위치 서비스가 활성화되었는지 확인
  serviceEnabled = await Geolocator.isLocationServiceEnabled();
  if (!serviceEnabled) {
    return Future.error('위치 서비스를 활성화해주세요.');
  }

  // 위치 권한 요청
  permission = await Geolocator.checkPermission();
  if (permission == LocationPermission.denied) {
    permission = await Geolocator.requestPermission();
    if (permission == LocationPermission.denied) {
      return Future.error('위치 권한을 허용해주세요.');
    }
  }

  // 사용자의 현재 위치 가져오기
  Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
  print(position);
}

2. 지도 표시

획득한 위치 정보를 바탕으로 지도를 표시하는 것은 매우 일반적입니다. 플러터에서는 google_maps_flutter 패키지를 사용하여 지도를 표시할 수 있습니다.

dependencies:
  flutter:
    sdk: flutter
  google_maps_flutter: ^2.0.6
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';

void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(title: const Text('지도')),
      body: GoogleMap(
        initialCameraPosition: CameraPosition(
          target: LatLng(37.7749, -122.4194),
          zoom: 10,
        ),
      ),
    ),
  ));
}

3. 주변 장소 검색

획득한 위치 정보를 기반으로 주변의 장소를 검색하고 표시하는 것도 중요한 기능입니다. 플러터에서는 places 패키지를 사용하여 간단한 코드로 이를 구현할 수 있습니다.

dependencies:
  flutter:
    sdk: flutter
  google_maps_flutter: ^2.0.6
  google_place: ^2.1.0
import 'package:flutter/material.dart';
import 'package:google_place/google_place.dart';

void main() async {
  GooglePlace googlePlace = GooglePlace("YOUR_API_KEY");

  var location = Location(37.7749, -122.4194);
  var radius = 1000;

  var response = await googlePlace.search.getNearBySearch(location, radius);
  if (response.results != null) {
    for (var result in response.results) {
      print(result.name);
    }
  }
}

위와 같이 플러터를 사용하여 위치 기반 앱을 만들 수 있습니다. 위치 관련 기능을 활용하여 사용자에게 유용한 앱을 개발해보세요.

참고: geolocator 패키지, google_maps_flutter 패키지, places 패키지