baidu_location_helper.dart 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. // import 'dart:io';
  2. // import 'package:flutter_baidu_mapapi_base/flutter_baidu_mapapi_base.dart';
  3. // import 'package:flutter_baidu_mapapi_utils/flutter_baidu_mapapi_utils.dart';
  4. // import 'package:flutter_bmflocation/flutter_bmflocation.dart';
  5. // import 'package:get/get.dart';
  6. // import 'package:permission_handler/permission_handler.dart';
  7. // import '../values/index.dart';
  8. // import 'loading.dart';
  9. // import 'log_util.dart';
  10. // typedef BaiduLocationHelperCallback = void Function(BaiduLocation result);
  11. // class BaiduLocationHelper {
  12. // // 定位结果返回 多次定位执行多次
  13. // final BaiduLocationHelperCallback callback;
  14. // // 是否单次定位 单次定位 返回结果的时候直接停止
  15. // final bool isSingleLocation;
  16. // BaiduLocationHelper({required this.callback, this.isSingleLocation = false});
  17. // // 百度地图定位插件
  18. // LocationFlutterPlugin myLocPlugin = LocationFlutterPlugin();
  19. // /// 结束定位
  20. // Future<void> stopLocation() async {
  21. // await myLocPlugin.stopLocation();
  22. // }
  23. // /// 启动定位
  24. // ///
  25. // /// 需要先做一些初始化和权限验证
  26. // Future<void> initLocationAndStartRequest() async {
  27. // OLogger.d('开始初始化定位sdk,设置privacy');
  28. // BMFMapSDK.setAgreePrivacy(true);
  29. // // 设置是否隐私政策
  30. // myLocPlugin.setAgreePrivacy(true);
  31. // OLogger.d("设置隐私");
  32. // if (Platform.isIOS) {
  33. // /// 设置ios端ak, android端ak可以直接在清单文件中配置
  34. // var authAK = await myLocPlugin.authAK(O2.baiduMapIosAppKey);
  35. // OLogger.d("ios 设置 $authAK");
  36. // }
  37. // _requestLocationPermission();
  38. // }
  39. // /// 定位权限判断
  40. // Future<bool> _locationPermission() async {
  41. // var status = await Permission.location.status;
  42. // if (status == PermissionStatus.granted) {
  43. // return true;
  44. // } else {
  45. // status = await Permission.location.request();
  46. // if (status == PermissionStatus.granted) {
  47. // return true;
  48. // }
  49. // }
  50. // return false;
  51. // }
  52. // /// 定位权限 不通过就提示错误信息
  53. // void _requestLocationPermission() async {
  54. // // 申请权限
  55. // bool hasLocationPermission = await _locationPermission();
  56. // if (hasLocationPermission) {
  57. // // 权限申请通过
  58. // OLogger.d('定位权限已开启,开始定位');
  59. // _startRequestLocation();
  60. // } else {
  61. // OLogger.e('没有权限,无法定位');
  62. // Loading.showError('attendance_location_permission_not_allow'.tr);
  63. // }
  64. // }
  65. // /// 真正开始定位
  66. // void _startRequestLocation() async {
  67. // // 设置参数
  68. // Map iosMap = _initIOSOptions().getMap();
  69. // Map androidMap = _initAndroidOptions().getMap();
  70. // var prepare = await myLocPlugin.prepareLoc(androidMap, iosMap);
  71. // OLogger.d('设置定位参数:$prepare');
  72. // myLocPlugin.seriesLocationCallback(callback: (loc) {
  73. // // 返回定位信息
  74. // OLogger.d(
  75. // "定位信息, latitude: ${loc.latitude}, longitude: ${loc.longitude} , address:${loc.address}, locationDetail:${loc.locationDetail}");
  76. // callback(loc);
  77. // if (isSingleLocation) {
  78. // stopLocation();
  79. // }
  80. // });
  81. // var isStart = await myLocPlugin.startLocation();
  82. // OLogger.i('开始定位:$isStart');
  83. // }
  84. // ///
  85. // /// Android端定位参数
  86. // ///
  87. // BaiduLocationAndroidOption _initAndroidOptions() {
  88. // BaiduLocationAndroidOption options = BaiduLocationAndroidOption(
  89. // coorType: 'bd09ll',
  90. // // 定位模式,可选的模式有高精度、仅设备、仅网络。默认为高精度模式
  91. // locationMode: BMFLocationMode.hightAccuracy,
  92. // // 是否需要返回地址信息
  93. // isNeedAddress: true,
  94. // // 是否需要返回海拔高度信息
  95. // isNeedAltitude: true,
  96. // // 是否需要返回周边poi信息
  97. // isNeedLocationPoiList: true,
  98. // // 是否需要返回新版本rgc信息
  99. // isNeedNewVersionRgc: true,
  100. // // 是否需要返回位置描述信息
  101. // isNeedLocationDescribe: true,
  102. // // 是否使用gps
  103. // openGps: true,
  104. // // 可选,设置场景定位参数,包括签到场景、运动场景、出行场景
  105. // locationPurpose: BMFLocationPurpose.signIn,
  106. // //百度坐标系 可选,默认gcj02,设置返回的定位结果坐标系
  107. // coordType: BMFLocationCoordType.bd09ll,
  108. // // 设置发起定位请求的间隔,int类型,单位ms
  109. // // 如果设置为0,则代表单次定位,即仅定位一次,默认为0
  110. // scanspan: 5000);
  111. // return options;
  112. // }
  113. // ///
  114. // /// Ios端定位参数
  115. // ///
  116. // BaiduLocationIOSOption _initIOSOptions() {
  117. // BaiduLocationIOSOption options = BaiduLocationIOSOption(
  118. // // 坐标系
  119. // coordType: BMFLocationCoordType.bd09ll,
  120. // BMKLocationCoordinateType: 'BMKLocationCoordinateTypeBMK09LL',
  121. // // 位置获取超时时间
  122. // locationTimeout: 10,
  123. // // 获取地址信息超时时间
  124. // reGeocodeTimeout: 10,
  125. // // 应用位置类型 默认为automotiveNavigation
  126. // activityType: BMFActivityType.automotiveNavigation,
  127. // // 设置预期精度参数 默认为best
  128. // desiredAccuracy: BMFDesiredAccuracy.best,
  129. // // 是否需要最新版本rgc数据
  130. // isNeedNewVersionRgc: true,
  131. // // 指定定位是否会被系统自动暂停
  132. // pausesLocationUpdatesAutomatically: false,
  133. // // 指定是否允许后台定位,
  134. // // 允许的话是可以进行后台定位的,但需要项目
  135. // // 配置允许后台定位,否则会报错,具体参考开发文档
  136. // allowsBackgroundLocationUpdates: false,
  137. // // 设定定位的最小更新距离
  138. // distanceFilter: 10,
  139. // );
  140. // return options;
  141. // }
  142. // }