[flutter] 플러터에서 위치 정보를 이용한 주변 치킨 배달 앱 만들기
플러터(Flutter)를 사용하여 위치 정보를 활용하여 주변 치킨 배달 서비스를 제공하는 앱을 만들어보겠습니다.
목표
우리의 앱은 사용자의 현재 위치를 기반으로 주변 치킨 배달 서비스를 찾고, 그 중에서 가장 가까운 가게를 안내해줄 것입니다.
필요한 요소
- 플러터(Flutter): Google이 개발한 크로스 플랫폼 모바일 앱 개발 프레임워크
- 위치 정보: 사용자의 현재 위치를 확인하기 위해 필요
- 지도 API: 위치 기반 서비스 및 지도 표시를 위해 필요
구현
1. 위치 정보 확인
먼저, 사용자의 현재 위치를 확인하기 위해 geolocator 패키지를 사용합니다. 이 패키지를 이용하면 사용자의 위치를 쉽게 확인할 수 있습니다.
import 'package:geolocator/geolocator.dart';
Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
double userLat = position.latitude;
double userLong = position.longitude;
2. 지도 표시
다음으로, Google Maps 플러그인을 사용하여 지도를 표시하고, 사용자와 가게의 위치를 표시합니다.
import 'package:google_maps_flutter/google_maps_flutter.dart';
GoogleMapController mapController;
Set<Marker> markers = Set();
GoogleMap(
onMapCreated: (controller) {
mapController = controller;
},
initialCameraPosition: CameraPosition(
target: LatLng(userLat, userLong),
zoom: 14.0,
),
markers: markers,
)
3. 주변 치킨 배달 가게 찾기
위치 정보를 이용하여 주변 치킨 배달 가게를 검색하고, 해당 가게들을 지도 위에 마커로 표시합니다. 이때, 지도 API를 사용하여 가게들의 위치를 받아오고, 마커를 추가합니다.
// 가게 위치 받아오기
List<Store> stores = await getNearbyStores(userLat, userLong);
// 마커 추가
markers.addAll(stores.map((store) {
return Marker(
markerId: MarkerId(store.id),
position: LatLng(store.latitude, store.longitude),
infoWindow: InfoWindow(title: store.name, snippet: store.address),
);
}).toSet());
4. 가장 가까운 가게 찾기
지도를 통해 표시된 주변 가게들 중에서 사용자와 가장 가까운 가게를 찾아 마커를 다르게 표시하여 사용자에게 안내해줍니다.
double closestDistance = double.infinity;
Store closestStore;
for (var store in stores) {
double distance = calculateDistance(userLat, userLong, store.latitude, store.longitude);
if (distance < closestDistance) {
closestDistance = distance;
closestStore = store;
}
}
// 가장 가까운 가게 마커를 빨간색으로 변경
Marker closestMarker = Marker(
markerId: MarkerId(closestStore.id),
position: LatLng(closestStore.latitude, closestStore.longitude),
infoWindow: InfoWindow(title: closestStore.name, snippet: closestStore.address),
icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueRed),
);
markers.removeWhere((marker) => marker.markerId.value == closestStore.id);
markers.add(closestMarker);
결론
위의 단계를 따라가면, 플러터를 사용하여 위치 정보를 이용한 주변 치킨 배달 앱을 만들 수 있습니다. 사용자의 위치를 확인하고, 주변 가게들을 지도에 표시하여 사용자에게 제일 가까운 가게를 안내해줄 수 있습니다.
위치 기반 서비스를 사용하여 다양한 형태의 앱을 만들 수 있으며, 사용자에게 더 많은 가치를 제공할 수 있는 서비스를 구현하는 데 도움이 될 것입니다.