[Flutter] geolocator

솜사탕·2024년 11월 14일
0

flutter

목록 보기
7/15

위치 정보 얻기
https://pub.dev/packages/geolocator

찾아보니 Location 이라고 하는 패키지도 있더라구요, 근데 뭔..가 지금 포스팅 할 geolocator 이 더 활용성이 좋다고 생각해서 이거로 그냥 진행하려고 합니다!

1. Andriod 권한 설정

권한

android 폴더 > app 폴더 > src 폴더 > profile 폴더 > AndroidManifest.xml 파일

안드로이드에서 geolocator를 이용하려면 AndroidManifest.xml 파일에 퍼미션을 선언해야 함. AndroidManifest.xml 은 안드로이드 앱을 실행하는 데 필요한 다양한 정보를 설정하는 파일이며 이곳에 퍼미션을 설정함. 안드로이드에서 실행되는 앱이 사용자의 현재 위치를 얻으려면 AndroidManifest.xml 에 퍼미션을 다음처럼 선언해야 함.

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

2. IOS 권한 설정

ios 폴더 > Runner 폴더 > info.plist 파일
IOS에서도 현재위치를 가져오기 위해서는 추가해야하 함.

<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location when open.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs access to location when in the background.</string>

3. 위치 서비스 활성화 확인하기

bool serviceEnabled = await Geolocator.isLocationServiceEnabled();
if (!serviceEnabled) {
 print("위치 서비스가 활성화되어 있지 않습니다.");
 return;
}

4. 위치 정보 가져오기

정보를 가져와도 될지에 대해서 먼저 파악하고 난 뒤에서야 다른 정보를 가져오고 여차저차 할 수 있으니 우선은 확인을 해야할 것 같습니다.

이는 Geolocator.isLocationServiceEnabled() 함수를 호출하면 쉽게 알아낼 수 있음. 이 함수의 반환값이 true 면 활성 상태, false 이면 비활성 상태라는 의미임.

LocationPermission permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) {
  permission = await Geolocator.requestPermission();
  if (permission == LocationPermission.denied) { // 거부 
    print('위치 권한이 거부되었습니다.'); 
    return;
  }
}

if (permission == LocationPermission.deniedForever) { // 허용 안함 
      print('위치 권한이 거부되었습니다.');
      return;
    }

Position position = await Geolocator.getCurrentPosition();

5. 현재 경도, 위도 구하기

dobule latitude = position.latitude;
double longitude = position.longitude;

0개의 댓글