[Flutter] geocoding

솜사탕·2024년 11월 15일
0

flutter

목록 보기
8/15

위도 경도 좌표를 주소로 변환하거나 그 반대의 일을 함
https://pub.dev/packages/geocoding

1. 환경변수 설정

  • android 추가: android/app/src/profile/AndroidManifest.xml의 위치에 있는 곳에 추가해주기
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  • ios 추가: ios/Runner/Info.plist의 위치에 있는 곳에 추가해주기
    <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>

2. 사용

  • 주소 -> 위도, 경도 좌표
import 'package:geocoding/geocoding.dart';

List<Location> locations = await locationFromAddress("Gronausestraat 710, Enschede");
  • 위도, 경도 좌표 -> 주소
import 'package:geocoding/geocoding.dart';

List<Placemark> placemarks = await placemarkFromCoordinates(52.2165157, 6.9437819);

3. 사용 코드

 // 위치 정보를 가져오는 메서드
  Future<void> fetchLocation() async {
    bool isPermissionGranted = await _handleLocationPermission(); //  위치 권한 요청
    if (!isPermissionGranted) return;
    try {
      _currentPosition = await Geolocator.getLastKnownPosition();
      await _getAddressFromLatLng();
      notifyListeners(); // 위치 정보가 업데이트되면 UI에 알림
    } catch (e) {
      print("Error retrieving location: $e");
    }
  }
  
    // 위도와 경도를 주소로 변환
  Future<void> _getAddressFromLatLng() async {
    if (_currentPosition == null) return;
    try {
      List<Placemark> placemarks = await placemarkFromCoordinates(
        _currentPosition!.latitude,
        _currentPosition!.longitude,
      );
      Placemark place = placemarks[0];
      _currentAddress = place.subLocality;
      notifyListeners(); // 주소 정보가 업데이트되면 UI에 알림
    } catch (e) {
      print("Error converting coordinates to address: $e");
    }
  }

이 과정을 한개만 사용하고도 한국날씨와 머 엮어주는? 패키지도 있는데 우선 사용은 안해봤음
다음..에? 과정이 귀찮아지면 사용할지도 모르지만?

기상청단기예보 ((구)동네예보) 조회서비스 API 쉽게 연동하기 위해 개발된 패키지입니다.

좋아보이네용? 써봐야겠다 근데 업데이트가 23개월전이긴 한데... 그래서 안쓰긴했지만...
뭔가 써보고싶으니까 써봐야겠다!

0개의 댓글