百度地图定位flutter组件。
目前实现直接获取定位和监听定位功能。
注意:随着flutter版本的提升, 本项目也会随之更新,
如果有疑问或者对这个库感兴趣,可以加qq群:854192563一起探讨
1、先申请一个apikey http://lbsyun.baidu.com/apiconsole/key
2、修改 你的项目目录/app/build.gradle
在android/defaultConfig
节点修改manifestPlaceholders
,新增百度地图key配置
android {
.... 你的代码
defaultConfig {
.....
manifestPlaceholders = [
BAIDU_MAP_KEY : "你的百度地图key", /// 百度地图key
]
}
1、申请一个key http://lbs.amap.com/api/ios-sdk/guide/create-project/get-key
直接在dart文件中设置key
import 'package:baidu_location/baidu_location.dart';
void main(){
BaiduLocationClient.setApiKey("你的key");
runApp(new MyApp());
}
2、在info.plist中增加:
注意必须要描述清楚app使用定位的目的,苹果审核的时候要看, 如果写的不清楚,可能会被苹果拒绝上架,作者有过几次惨痛经历 :(
<key>NSLocationWhenInUseUsageDescription</key>
<string>要用定位</string>
先导入dart包 修改pubspec.yaml,增加依赖:
dependencies:
baidu_location:
在要用的地方导入:
import 'package:baidu_location/baidu_location.dart';
先启动一下
await BaiduLocationClient.startup(new AMapLocationOption( desiredAccuracy:CLLocationAccuracy.kCLLocationAccuracyHundredMeters ));
直接获取定位:
await BaiduLocationClient.getLocation(true)
监听定位
BaiduLocationClient.onLocationUpate.listen((AMapLocation loc){
if(!mounted)return;
setState(() {
...
});
});
BaiduLocationClient.startLocation();
停止监听定位
BaiduLocationClient.stopLocation();
不要忘了在app生命周期结束的时候关闭
@override
void dispose() {
//注意这里关闭
BaiduLocationClient.shutdown();
super.dispose();
}
在android6以上最好手动获取定位权限
在example中以simple_permissions这个库为例:
void _checkPersmission() async{
bool hasPermission = await SimplePermissions.checkPermission(Permission.WhenInUseLocation);
if(!hasPermission){
bool requestPermissionResult = await SimplePermissions.requestPermission(Permission.WhenInUseLocation);
if(!requestPermissionResult){
Alert.alert(context,title: "申请定位权限失败");
return;
}
}
BaiduLocationClient.onLocationUpate.listen((AMapLocation loc) {
if (!mounted) return;
setState(() {
location = getLocationStr(loc);
});
});
BaiduLocationClient.startLocation();
}
- IOS
- Android
- 直接获取定位
- 监听定位改变
- 地理围栏监听