浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

文档全面上新

更科技的视觉体验,更高效的页面结构,快前往体验吧!

体验新版
更新时间:2020年03月25日 

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

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();
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消