在鉴权成功且同意隐私政策的情况下使用定位步骤如下:
import 'package:flutter_bmflocation/bdmap_location_flutter_plugin.dart';
final LocationFlutterPlugin _myLocPlugin = LocationFlutterPlugin();
注:iOS端单次定位为单独的回调,Android端使用连续定位回调;
if (Platform.isIOS) {//接受定位回调_myLocPlugin.singleLocationCallback(callback: (BaiduLocation result) {//result为定位结果});} else if (Platform.isAndroid) {//接受定位回调_myLocPlugin.seriesLocationCallback(callback: (BaiduLocation result) {//result为定位结果});}
Android端
BaiduLocationAndroidOption initAndroidOptions() {BaiduLocationAndroidOption options =BaiduLocationAndroidOption(// 定位模式,可选的模式有高精度、仅设备、仅网络。默认为高精度模式locationMode: BMFLocationMode.hightAccuracy,// 是否需要返回地址信息isNeedAddress: true,// 是否需要返回海拔高度信息isNeedAltitude: true,// 是否需要返回周边poi信息isNeedLocationPoiList: true,// 是否需要返回新版本rgc信息isNeedNewVersionRgc: true,// 是否需要返回位置描述信息isNeedLocationDescribe: true,// 是否使用gpsopenGps: true,// 可选,设置场景定位参数,包括签到场景、运动场景、出行场景locationPurpose: BMFLocationPurpose.sport,// 坐标系coordType: BMFLocationCoordType.bd09ll,// 设置发起定位请求的间隔,int类型,单位ms// 如果设置为0,则代表单次定位,即仅定位一次,默认为0scanspan: 0);return options;}
iOS端
BaiduLocationIOSOption initIOSOptions() {BaiduLocationIOSOption options =BaiduLocationIOSOption(// 坐标系coordType: BMFLocationCoordType.bd09ll,// 位置获取超时时间locationTimeout: 10,// 获取地址信息超时时间reGeocodeTimeout: 10,// 应用位置类型 默认为automotiveNavigationactivityType:BMFActivityType.automotiveNavigation,// 设置预期精度参数 默认为bestdesiredAccuracy: BMFDesiredAccuracy.best,// 是否需要最新版本rgc数据isNeedNewVersionRgc: true,// 指定定位是否会被系统自动暂停pausesLocationUpdatesAutomatically: false,// 指定是否允许后台定位,// 允许的话是可以进行后台定位的,但需要项目配置允许后台定位,否则会报错,具体参考开发文档allowsBackgroundLocationUpdates: true,// 设定定位的最小更新距离distanceFilter: 10,);return options;}
设置定位参数:
Map iosMap = initIOSOptions().getMap();Map androidMap = initAndroidOptions().getMap();_suc = await _myLocPlugin.prepareLoc(androidMap, iosMap);
if (Platform.isIOS) {_suc = await _myLocPlugin.singleLocation({'isReGeocode': true, 'isNetworkState': true});} else if (Platform.isAndroid) {_suc = await _myLocPlugin.startLocation();}
上一篇
下一篇
本篇文章对您是否有帮助?