[Flutter] Geolocator #location
add
flutter pub add geolocator
import
import 'package:geolocator/geolocator.dart';
permission setting - android
Make sure at least ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION are defined in the manifest.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.donguran.weather">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
permission setting - iOS
NSLocationWhenInUseUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription (mac os)
permission check
LocationPermission permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission();
Latitude & Longitude
var currentPosition = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.medium);
LastPosition
var lastPosition = await Geolocator.getLastKnownPosition(forceAndroidLocationManager: true);
result
추가로 현재 위치의 country information이 필요한 경우
add
flutter pub add geocoding
import
import 'package:geocoding/geocoding.dart';
apply
double latitude = currentPosition.latitude;
double longitude = currentPosition.longitude;
List<Placemark> placemark = await placemarkFromCoordinates(latitude, longitude);
debugPrint("placemark...$placemark");
Placemark place = placemark.first;
debugPrint("=================");
debugPrint("place:$place, type:${place.isoCountryCode}");
원하는 값을 placeMark인스턴스의 프로퍼티를 호출하여 확인한다.
I/flutter ( 7328): [WeatherPage].. place: Name: ,
I/flutter ( 7328): Street: 대한민국 서울특별시 중구,
I/flutter ( 7328): ISO Country Code: KR,
I/flutter ( 7328): Country: 대한민국,
I/flutter ( 7328): Postal code: ,
I/flutter ( 7328): Administrative area: ,
I/flutter ( 7328): Subadministrative area: ,
I/flutter ( 7328): Locality: ,
I/flutter ( 7328): Sublocality:,
I/flutter ( 7328): Thoroughfare:
I/flutter ( 7328): Subthoroughfare: