地圖定位這個功能目前基本上是商業應用app的標配。然而,在flutter中進行原生功能的開發,意味着必須的ios和android雙端都通,並且須要大量的調試時間。尤爲目前這個時間點,flutter的版本更新頻繁,原生編譯問題重重。不過不要緊,總有那麼一部分先驅奮不顧身的爲你們踩坑探路,best-flutter目前就在作這個工做。android
高德地圖定位組件是第一個在flutter中集成國內地圖定位功能的組件,地址在這裏: https://github.com/best-flutt...ios
下面咱們來看下如何方便的使用這個庫吧。git
申請一個高德地圖的key先,地址在這裏:https://lbs.amap.com/api/andr...github
這裏筆者申請的時候api
android的包名稱爲com.jzoom.amaplocationexample,app
ios的包名稱爲com.jzoom.amapLocationExampleide
建立一個flutter程序,命令行運行程序:ui
flutter create amap_demo
編輯一下項目依賴:spa
amap_location: 0.1.0
跑一下flutter packages get
命令行
集成android
applicationId須要與申請key的時候填寫的包名稱一致,新增配置
manifestPlaceholders = [ AMAP_KEY : "你申請的key", /// 高德地圖key ]
集成ios
Bundle Identifier須要與申請的時候填寫的一致
ios項目目錄中的info.plist,須要新增節點
<key>NSLocationWhenInUseUsageDescription</key> <string>定位用來幹什麼,須要描述清楚</string>
項目中使用
import 'package:amap_location/amap_location.dart';
設置一下key,修改一下原來的main方法
void main(){ AMapLocationClient.setApiKey("你申請的key"); runApp(new MyApp()); }
先啓動一下
await AMapLocationClient.startup(new AMapLocationOption( desiredAccuracy:CLLocationAccuracy.kCLLocationAccuracyHundredMeters ));
直接獲取定位:
await AMapLocationClient.getLocation(true)
監聽定位
AMapLocationClient.onLocationUpate.listen((AMapLocation loc){ if(!mounted)return; setState(() { ... }); }); AMapLocationClient.startLocation();
在flutter中使用高德地圖定位組件是否是很簡單呢。