[flutter] 플러터 geolocator를 이용한 위치 기반 지인 찾기 애플리케이션 개발

지인들과 만나기 위해 위치 기반 애플리케이션은 매우 유용합니다. 이번에는 Flutter 프레임워크와 Geolocator 패키지를 사용하여 위치 기반 지인 찾기 애플리케이션을 개발해보겠습니다.

목차

Geolocator 패키지 설치

Geolocator 패키지는 위치 정보를 쉽게 가져올 수 있도록 도와주는 플러그인입니다. 다음 명령을 사용하여 패키지를 설치합니다.

flutter pub add geolocator

위치 권한 요청

사용자의 현재 위치 정보를 가져오려면 위치 권한이 필요합니다. 이를 위해 permission_handler 패키지를 설치하고 위치 권한을 요청하는 코드를 작성해야 합니다.

  1. permission_handler 패키지를 설치합니다.

    flutter pub add permission_handler
    
  2. 위치 권한을 요청하기 위한 코드를 작성합니다.

    import 'package:permission_handler/permission_handler.dart';
    
    Future<void> requestLocationPermission() async {
      final status = await Permission.location.request();
      if (status.isDenied) {
        // 권한이 거부된 경우 처리할 로직 작성
      }
    }
    
  3. 앱 초기화 단계에서 위치 권한을 요청합니다.

    @override
    void initState() {
      super.initState();
      requestLocationPermission();
    }
    

위 코드를 이용하여 사용자에게 위치 권한을 요청하고, 권한이 거부된 경우에 대한 처리를 추가할 수 있습니다.

사용자의 현재 위치 가져오기

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

import 'package:geolocator/geolocator.dart';

Position? currentPosition;

Future<void> getCurrentLocation() async {
  try {
    final position = await Geolocator.getCurrentPosition();
    setState(() {
      currentPosition = position;
    });
  } catch (e) {
    // 위치 정보를 가져오지 못한 경우 처리할 로직 작성
  }
}

getCurrentPosition 메서드를 호출하여 사용자의 현재 위치를 가져옵니다. 위치 정보를 가져오는 동안 예외가 발생할 수 있으므로, try-catch 문을 사용하여 예외 처리를 해주어야 합니다.

지인들의 위치 표시하기

사용자의 위치를 가져왔다면, 이제 지인들의 위치를 지도 상에 표시해보겠습니다. 이를 위해 지인들의 위치 정보를 서버에서 가져와야 합니다. 이 예제에서는 서버로부터 위치 정보를 받아오는 로직은 생략하고, 가상의 위치 정보를 사용하겠습니다.

import 'package:google_maps_flutter/google_maps_flutter.dart';

List<LatLng> friendLocations = [
  LatLng(37.583869, 127.058599),
  LatLng(37.566419, 126.977876),
  LatLng(37.486822, 127.036731),
];

Set<Marker> markers = friendLocations.map((location) {
  return Marker(
    position: location,
    markerId: MarkerId(location.toString()),
  );
}).toSet();

GoogleMap(
  markers: markers,
  initialCameraPosition: CameraPosition(
    target: currentPosition ?? LatLng(37.5665, 126.9780),
    zoom: 14,
  ),
),

friendLocations 리스트에는 지인들의 위치 정보를 담고 있습니다. 이 위치 정보를 Marker 객체로 변환하여 지도 위에 표시합니다. 마커 ID는 위치 정보의 문자열 표현을 사용합니다.

GoogleMap 위젯에서 markers 속성에 마커들을 설정하고, initialCameraPosition 속성을 사용하여 지도 초기 화면을 설정합니다.

위 코드를 사용하여 지인들의 위치를 지도 상에 표시할 수 있습니다.

이제 플러터와 Geolocator 패키지를 사용하여 위치 기반 지인 찾기 애플리케이션을 개발할 준비가 되었습니다. 효율적인 위치 권한 요청, 사용자의 현재 위치 가져오기, 지인들의 위치 표시하기 등을 통해 애플리케이션의 기능을 완성할 수 있습니다!

더 자세한 내용은 아래의 링크를 참고하시기 바랍니다.

Happy coding and geo-locating!