123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- import 'dart:async';
-
- import 'package:amap_flutter_location/amap_flutter_location.dart';
- import 'package:amap_flutter_location/amap_location_option.dart';
- import 'package:permission_handler/permission_handler.dart';
-
- import 'amap/const_config.dart';
-
- typedef AMAPListener = void Function (Map<String, Object>);
-
- void showPrivacy() {
-
-
-
-
-
-
-
-
-
-
- AMapFlutterLocation.updatePrivacyShow(true, true);
-
-
-
-
-
-
-
-
- AMapFlutterLocation.updatePrivacyAgree(true);
- }
-
-
- Future _requirePermission() async {
- PermissionStatus _permissionGranted = await Permission.location.status;
- if (_permissionGranted == PermissionStatus.denied) {
-
- _permissionGranted = await Permission.location.request();
- if (_permissionGranted != PermissionStatus.granted) {
- throw Exception("请设置允许当前程序定位功能");
- }
- }
- }
-
- Future requireLocation(AMAPListener listener) async {
- AMapFlutterLocation.setApiKey(ConstConfig.amapApiKeys.androidKey!, ConstConfig.amapApiKeys.iosKey!);
- showPrivacy();
- await _requirePermission();
- final AMapFlutterLocation location = AMapFlutterLocation();
- location.onLocationChanged().listen(listener);
- location.setLocationOption(_getAMapLocationOption());
- location.startLocation();
-
- return location;
- }
-
- _getAMapLocationOption() {
- AMapLocationOption locationOption = new AMapLocationOption();
-
-
- locationOption.onceLocation = false;
-
-
- locationOption.needAddress = true;
-
-
- locationOption.geoLanguage = GeoLanguage.DEFAULT;
-
- locationOption.desiredLocationAccuracyAuthorizationMode =
- AMapLocationAccuracyAuthorizationMode.ReduceAccuracy;
-
- locationOption.fullAccuracyPurposeKey = "AMapLocationScene";
-
-
- locationOption.locationInterval = 2000;
-
-
-
-
-
-
- locationOption.locationMode = AMapLocationMode.Hight_Accuracy;
-
-
- locationOption.distanceFilter = -1;
-
-
-
-
-
-
-
-
- locationOption.desiredAccuracy = DesiredAccuracy.Best;
-
-
- locationOption.pausesLocationUpdatesAutomatically = false;
-
- return locationOption;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|