네이버지도를 플러터에서 띄울 수 있는 플러그인입니다.
Plug-in which shows naver map on flutter project support Android and iOS.
LBSTECH에서 사용하기 위해 제작하기 시작하였으며 Naver 와는 무관함을 알립니다.
LBSTECH의 서비스를 중단하기 전까지 사후관리됩니다 (개발자가 부족해서 원할히는 못해요 :cry:)
원작자 부재로 pub.dev 업데이트를 못하고 있습니다.
따라서 최신 업데이트를 사용하고자 하시면 번거롭더라도 github
을 등록하여 사용하시기를 권장합니다.
Can`t update to pub.dev. Plz use github url.
해당 플러그인은 Naver Cloud PlatForm - map 에서 제공하는 map서비스를 Android와 iOS 환경에서 보여주는 플러그인입니다.
pubspec.yaml에 plug in dependencies에 작성
dependencies:
naver_map_plugin:
git: https://github.com/LBSTECH/naver_map_plugin.git
AndroidManifest.xml에 지정
<manifest> <application> <meta-data android:name="com.naver.maps.map.CLIENT_ID" android:value="YOUR_CLIENT_ID_HERE" /> </application> </manifest>
naver map에서 현위치탐색 기능을 사용하기 위해서는 AndroidManifest.xml에서 권한을 명시한다.
<manifest> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> </manifest>
또한 android API level 23(M) 이상의 경우 동적 권한을 필요로 한다. 다음은 동적권한을 요청하는 예제 코드이다.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 0); } }
대용량 파일을 받기 위해 git-lfs 설치가 필요합니다.
$ brew install git-lfs
그리고 git-lfs을 사용하기 위해 다음의 커맨드를 입력해주세요. lfs 사용 설정이 안될 경우 pod를 통한 dependency가 다운로드 되지않습니다.
$ git lfs install
info.plist에 지정
<dict> <key>NMFClientId</key> <string>YOUR_CLIENT_ID_HERE</string> <key>io.flutter.embedded_views_preview</key> <true/> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
naver map에서 현위치탐색 기능을 사용하기 위해서는 info.plist에서 권한을 명시한다.
<dict> <key>NSLocationAlwaysAndWhenInUseUsageDescription</key> <string>[USAGE PERPOSE]</string> <key>NSLocationAlwaysUsageDescription</key> <string>[USAGE PERPOSE]</string> <key>NSLocationWhenInUseUsageDescription</key> <string>[USAGE PERPOSE]</string> </dict>
이후 AppDelegate에서 위치 사용권한을 획득하는 예제.
if (CLLocationManager.locationServicesEnabled()) { switch CLLocationManager.authorizationStatus() { case .denied, .notDetermined, .restricted: self.manager.requestAlwaysAuthorization() break default: break } }