[Flutter] Geocoding, ReverseGeocoding

김영진·2021년 11월 30일
0

목적

DID앱에서 위치값을 기반으로 데이터의 정합성을 판단하려고 한다.
추가로 간략한 상세주소를 사용자들에게 보여주고싶었다.
위치값을 사용하기위해 플러터에 Geolocate 플러그인이 있었던건 알고있었는데,
위,경도를 알아 지번,도로명주소도 알아내야하기 때문에 리서치를 진행하였고,

주소값으로 위,경도를 알아내는것을 지오코딩
위,경도로 주소를 알아내는것을 리버스 지오코딩이라고 한다고 하는것을 알아내었고,

플러터 라이브러리중 GeoCoding
라이브러리가 있다는것을 찾아내었다.

라이브러리를 프로젝트에 적용하려고 한다.

이 플러그인은 크로스플랫폼에서 제공하는 무료 지오코딩 서비스를 제공한다. 따라서 사용에 제한이 있을 수 있다. PlatformException(IO_ERROR, ...) 에러가 떨어지면, 대부분 속도제한에 걸려서 그런거다.

Google Play Services의 사용 가능 여부는 해당 국가에 따라 다릅니다. 해당 국가에서 Google Play Services와의 연결을 지원하지 않는 경우 VPN을 사용하여 연결을 설정해야 합니다. Google Play Services를 사용하는 방법에 대한 자세한 내용은 다음 링크를 참조하십시오. 구글플레이 서비스 사용 가이드

IOS 지오코더 사용을 위한 팁

  • 앱은 지오코딩을 사용하는 방법을 알아야 합니다.
  • 지오코딩 요청은 각 앱에 대해 비율이 제한되어있다(짧은시간내에 너무많은 요청을 하면 일부 요청이 실패할 수 있다)
  • 최대 비율을 초과하면 지오코더는 오류가있는 객체를 완료 핸들러에게 전달한다.
프로세스
  1. 하나의 사용자 작업에 대해 하나의 지오코딩 요청을 보냅니다.
  2. 사용자가 동일한 위치의 지오코딩과 관련되 여러 작업을 수행하는 경우 각 작업에 대한 개별요청 대신 초기 요청의 결과를 재사용 합니다.
  3. 사용자의 현재 위치를 자동으로 업데이트 하려면(사용자가 이동할 때) 사용자가 상당한 거리를 이동하고 적절한 시간이 지난 후에만 새 지오코딩 요청을 실행합니다. 예를 들어 일반적인 상황에서 지오코딩 요청을 1분에 2번이상 보내면 안됩니다.(즉 1분에 한번)
  4. 사용자가 결과를 즉시 볼 수 없는 시간에 지오코딩 요청을 시작하지 마십시오, 예를들어 어플리케이션 비활성 상태이거나 백그라운드에 있는경우 요청을 시작하지 마십시오.(즉 백그라운드나 꺼진상태에서 요청하지마라)
  • 지오코더 개체가 자세한 장소 표시 정보를 반환하려면 컴퓨터 또는 장치가 네트워크에 엑세스 할 수 있어야 한다.(네트워크 켜져 있어야함)
  • 그러나 지오코더는 현지화된 국가 또는 지역 이름과 많은 위치에 대한 ISO 국가 코드를 보고하기에 충분한 정보를 로컬에 저장합니다. 특정 위치에 대해 이 정보를 사용할 수 없는 경우 지오코더는 여전히 완료 블록에 오류를 보고할 수 있습니다.
  • 지오코더 개체는 MapKit 프레임워크의 클래스와 함께 사용하거나 독립적으로 사용할 수 있습니다.

Android 지오코더

  • 이 메서드는 반환하는 데 시간이 걸릴 수 있으므로 주 스레드에서 호출하면 안 됩니다.
  • 지오코딩 서비스는 가용성이나 정확성을 보장하지 않을 수 있습니다. 결과는 최선의 추측이며 의미가 있거나 정확하다고 보장되지 않습니다. 안전에 중요한 또는 규정 준수 목적으로 이 API를 사용 하지 마십시오 .

사용법

  1. gradle.properties 파일에 다음의 내용을 추가

    android.useAndroidX=true
    android.enableJetifier=true

  2. compileSdkVersion이 30 이상이어야한다.

    android {
    compileSdkVersion 30
    ...
    }

  3. android 대체를 보장해야한다. AndroidX에 대한 의존성

문제점

문서를 읽던 도중 한국어 지원이 안되는것을 보고 이번 문서는 여기까지 작성.,,,

해결책

구글맵에서 지원하는 구글맵플랫폼과 플러터에서 위경도를 구하는 geolocation을 활용하면 될것같다.
우선 구글맵플랫폼에서 사용하는 api는 다음과 같다
구글맵플랫폼

결과

앱에서 활용만 하면 될 듯 하다.

profile
2021.05.03) Flutter, BlockChain, Sports, StartUp

0개의 댓글