一、引用flutter插件:
flutter_baidu_mapapi_map: ^3.0.0+2
flutter_baidu_mapapi_search: ^3.0.0
flutter_bmflocation: ^3.2.0
声明变量:
final LocationFlutterPlugin _myLocPlugin = LocationFlutterPlugin();
BMFMapController? myMapController;
BaiduLocation? resultLocation;
BMFMapOptions? mapOptions;
List<mapListModel> mapModelList = [];
二、配置iOS ,安卓使用权限
具体查看官网: flutter | 百度地图API SDK
三、初始化百度SDK
class baiduMapMethod {
baiduInit() {
LocationFlutterPlugin myLocPlugin = LocationFlutterPlugin();
/// 设置用户是否同意SDK隐私协议
/// since 3.1.0 开发者必须设置
BMFMapSDK.setAgreePrivacy(true);
myLocPlugin.setAgreePrivacy(true);
// 百度地图sdk初始化鉴权
if (Platform.isIOS) {
myLocPlugin.authAK('z1B4qRV0Q1mI7wPeuwiXWWr1SBNXvoQ1');
BMFMapSDK.setApiKeyAndCoordType(
'百度控制台申请的appkey', BMF_COORD_TYPE.BD09LL);
} else if (Platform.isAndroid) {
// Android 目前不支持接口设置Apikey,
// 请在主工程的Manifest文件里设置,详细配置方法请参考官网(https://lbsyun.baidu.com/)demo
BMFMapSDK.setCoordType(BMF_COORD_TYPE.BD09LL);
}
}
}
var baiduMapSDK = baiduMapMethod();
四、设置定位参数(安卓可以, 但iOS设置之后百度无法回调定位信息, 暂时没法解决)
// 设置定位参数
setLocation() {
BaiduLocationIOSOption iosOptions = BaiduLocationIOSOption(
// 坐标系
coordType: BMFLocationCoordType.bd09ll,
// 位置获取超时时间
locationTimeout: 10,
// 获取地址信息超时时间
reGeocodeTimeout: 10,
// 应用位置类型 默认为automotiveNavigation
activityType: BMFActivityType.automotiveNavigation,
// 设置预期精度参数 默认为best
desiredAccuracy: BMFDesiredAccuracy.best,
// 是否需要最新版本rgc数据
isNeedNewVersionRgc: true,
// 指定定位是否会被系统自动暂停
pausesLocationUpdatesAutomatically