flutter 定位 amap_location_fluttify


flutter 當前版本 1.17.5

安裝

amap_location_fluttify: ^0.20.0 # 定位 經緯度 地理位置信息
permission_handler: ^5.0.0 # 檢測權限,沒有權限就申請

集成的高德地圖,要先去申請 key 值

android 設置 

 在android/app/res/src/main/AndroidManifest.xml 設置權限和 key

<!--用於進行網絡定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用於訪問GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <!-- 高德定位key --> <meta-data android:name="com.amap.api.v2.apikey" android:value="你的key"/>

ios 設置 在 info.plist 中添加權限

<key>NSLocationWhenInUseUsageDescription</key>
<string>要用定位</string>

 

 

使用方法

// 定位
import 'package:amap_core_fluttify/amap_core_fluttify.dart';
import 'package:amap_location_fluttify/amap_location_fluttify.dart';
import 'package:permission_handler/permission_handler.dart';

// 返回數據方法類型
// issuccess 是否定位成功,data: 定位成功的數據
typedef CbackFunction = void Function(bool issuccess, Map data);

class Location {
  var locationListener;
  CbackFunction cback; // 傳值回調-返回定位結果
  Location.init(CbackFunction fun) {
   // ios 設置 key AmapLocation.instance.init(iosKey:
'你的key');
  // 驗證權限 getLocationPermission(); cback
= fun; } // 驗證權限 getLocationPermission() async { bool status = await Permission.location.isGranted; //判斷如果還沒擁有讀寫權限就申請獲取權限 if (!status) { return await Permission.location.request().isGranted; } else { return status; } } // 定位 startLocation() async { try { final position = await AmapLocation.instance.fetchLocation(); if (position == null) { throw Exception('定位失敗!'); } else { Map<String, dynamic> result = { 'latitude': position.latLng.latitude, 'longitude': position.latLng.longitude, 'address': position.address }; // 獲取定位結果 if (cback != null) { cback(true, result); } } } catch (e) { cback(false, {}); print(e); } } }

我這里初始化的是 就調用了 驗證權限,也可以在每次調用定位之前 驗證權限。

  

該插件定位在android 遇到過一個問題,就是在開發的時候 不能定位,

報錯如下

 

 

這里又一個 SHA1 碼,好像是寫死在里面的,如果我用這個 SHA1 去申請 高德定位 android 的key, 那么開發模式也可以定位成功。

用自己android 證書的  SHA1 申請的key 定位不了,后來試了一下打包之后 是能定位成功的,就是開發模式異常 沒多大影響,且 ios 是完全正確的

我這里只用到了 單次定位,更多api 可以去包網站查看  https://pub.flutter-io.cn/packages/amap_location_fluttify/example

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM