[flutter] 플러터에서 위치 정보를 이용한 근처 병원 검색 앱 만들기

본 블로그 포스트에서는 플러터를 사용하여 사용자의 위치 정보를 가져와 근처 병원을 검색하는 간단한 앱을 만드는 방법을 알아보겠습니다.

개발 환경 설정

우선, 플러터 개발 환경을 설정해야합니다. Flutter 공식 웹사이트에 접속하여 플러터 SDK를 다운로드하고 설치합니다.

위치 서비스 퍼미션 추가

앱이 위치 정보를 이용하려면 위치 서비스 퍼미션을 추가해야 합니다. AndroidManifest.xml 파일에 위치 서비스 사용을 위한 권한 요청을 추가합니다.

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

Info.plist 파일에도 위치 서비스 사용을 위한 설명을 추가합니다.

<key>NSLocationWhenInUseUsageDescription</key>
<string>We need your location to find nearby hospitals</string>

위치 정보 가져오기

플러터에서 위치 정보를 가져오기 위해서는 geolocator 패키지를 사용합니다. pubspec.yaml 파일에 geolocator 패키지를 추가한 후 패키지를 설치합니다.

dependencies:
  geolocator: ^7.3.1

그리고 다음과 같이 geolocator 패키지를 이용하여 현재 위치 정보를 가져옵니다.

import 'package:geolocator/geolocator.dart';

Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
double userLat = position.latitude;
double userLong = position.longitude;

근처 병원 검색

위치 정보를 가져왔다면, 이제 해당 위치를 기반으로 근처 병원을 검색합니다. 이를 위해 google_maps_flutter 패키지를 사용하여 지도를 표시하고, places 패키지를 사용하여 근처 병원을 검색할 수 있습니다.

dependencies:
  google_maps_flutter: ^2.0.8
  places: ^1.1.0
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:places/places.dart';

// 사용자 위치를 기반으로 근처 병원 검색
final places = Places(PLACES_API_KEY);
final result = await places.searchNearbyWithRadius(Location(lat, lng), 5000, type: 'hospital');

UI 구성

마지막으로 앱의 UI를 구성하여 사용자에게 현재 위치와 근처 병원을 표시합니다.

위젯을 이용하여 지도를 표시하고, 근처 병원 목록을 나열하는 등의 UI를 구성합니다.

// 지도 표시
GoogleMap(
  initialCameraPosition: CameraPosition(
    target: LatLng(userLat, userLong),
    zoom: 14.0),
  markers: _markers,
  onMapCreated: (GoogleMapController controller) {
    _controller.complete(controller);
  },
)

// 근처 병원 목록 표시
ListView.builder(
  itemCount: hospitals.length,
  itemBuilder: (context, index) {
    return ListTile(
      title: Text(hospitals[index].name),
      subtitle: Text(hospitals[index].vicinity),
    );
  }
)

이렇게 하면 간단한 근처 병원 검색 앱이 완성됩니다. 사용자의 위치를 가져오고 근처의 병원을 표시하는 것 외에도, 사용자의 위치를 기반으로 다양한 활용이 가능합니다.

플러터로 위치 정보를 이용한 다양한 앱을 개발해보시기 바랍니다.