全部服务产品
开发者频道
定价
登录
单次定位
下载开发文档

在鉴权成功且同意隐私政策的情况下使用定位步骤如下:

1. 引入包名
import 'package:flutter_bmflocation/bdmap_location_flutter_plugin.dart';
2. 初始化定位插件类
final LocationFlutterPlugin _myLocPlugin = LocationFlutterPlugin();
3. 设置定位回调获取定位结果,定位接口说明

注:iOS端单次定位为单独的回调,Android端使用连续定位回调;

if (Platform.isIOS) {
//接受定位回调
_myLocPlugin.singleLocationCallback(callback: (BaiduLocation result) {
//result为定位结果
});
} else if (Platform.isAndroid) {
//接受定位回调
_myLocPlugin.seriesLocationCallback(callback: (BaiduLocation result) {
//result为定位结果
});
}
4. 设置定位参数

Android端

BaiduLocationAndroidOption initAndroidOptions() {
BaiduLocationAndroidOption options =
BaiduLocationAndroidOption(
// 定位模式,可选的模式有高精度、仅设备、仅网络。默
认为高精度模式
locationMode: BMFLocationMode.hightAccuracy,
// 是否需要返回地址信息
isNeedAddress: true,
// 是否需要返回海拔高度信息
isNeedAltitude: true,
// 是否需要返回周边poi信息
isNeedLocationPoiList: true,
// 是否需要返回新版本rgc信息
isNeedNewVersionRgc: true,
// 是否需要返回位置描述信息
isNeedLocationDescribe: true,
// 是否使用gps
openGps: true,
// 可选,设置场景定位参数,包括签到场景、运动场景、出行场景
locationPurpose: BMFLocationPurpose.sport,
// 坐标系
coordType: BMFLocationCoordType.bd09ll,
// 设置发起定位请求的间隔,int类型,单位ms
// 如果设置为0,则代表单次定位,即仅定位一次,默认为0
scanspan: 0);
return options;
}

iOS端

BaiduLocationIOSOption initIOSOptions() {
BaiduLocationIOSOption options =
BaiduLocationIOSOption(
// 坐标系
coordType: BMFLocationCoordType.bd09ll,
// 位置获取超时时间
locationTimeout: 10,
// 获取地址信息超时时间
reGeocodeTimeout: 10,
// 应用位置类型 默认为automotiveNavigation
activityType:
BMFActivityType.automotiveNavigation,
// 设置预期精度参数 默认为best
desiredAccuracy: 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);
5. 开启定位
if (Platform.isIOS) {
_suc = await _myLocPlugin
.singleLocation({'isReGeocode': true, 'isNetworkState': true});
} else if (Platform.isAndroid) {
_suc = await _myLocPlugin.startLocation();
}

上一篇

开发注意事项

下一篇

连续定位

本篇文章对您是否有帮助?