MATraceManager.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. //
  2. // MATraceManager.h
  3. // MAMapKit
  4. //
  5. // Created by shaobin on 16/9/1.
  6. // Copyright © 2016年 Amap. All rights reserved.
  7. //
  8. #import "MAConfig.h"
  9. #if MA_INCLUDE_TRACE_CORRECT
  10. #import <Foundation/Foundation.h>
  11. #import <AMapFoundationKit/AMapFoundationKit.h>
  12. #import "MATraceLocation.h"
  13. @class MATraceManager;
  14. ///处理中回调, index: 批次编号,0 based
  15. typedef void(^MAProcessingCallback)(int index, NSArray<MATracePoint *> *points);
  16. ///成功回调,distance:距离,单位米
  17. typedef void(^MAFinishCallback)(NSArray<MATracePoint *> *points, double distance);
  18. ///失败回调
  19. typedef void(^MAFailedCallback)(int errorCode, NSString *errorDesc);
  20. ///定位回调, locations: 原始定位点; tracePoints: 纠偏后的点,如果纠偏失败返回nil; distance:距离; error: 纠偏失败时的错误信息
  21. typedef void(^MATraceLocationCallback)(NSArray<CLLocation *> *locations, NSArray<MATracePoint *> *tracePoints, double distance, NSError *error);
  22. /**
  23. * @brief 轨迹定位的代理协议,since v6.2.0
  24. */
  25. @protocol MATraceDelegate <NSObject>
  26. @required
  27. /**
  28. * @brief 轨迹定位纠偏的回调方法,since v6.2.0
  29. * @param manager 轨迹定位管理对象
  30. * @param locations 已经完成纠偏的原始定位数据
  31. * @param tracePoints 已经完成纠偏处理后的轨迹点
  32. * @param distance 距离,单位米
  33. * @param error 如果成功的话为nil,否则为失败原因
  34. */
  35. - (void)traceManager:(MATraceManager *)manager
  36. didTrace:(NSArray<CLLocation *> *)locations
  37. correct:(NSArray<MATracePoint *> *)tracePoints
  38. distance:(double)distance
  39. withError:(NSError *)error;
  40. @optional
  41. /**
  42. * @brief 当plist配置NSLocationAlwaysUsageDescription或者NSLocationAlwaysAndWhenInUseUsageDescription,并且[CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined,会调用代理的此方法。
  43. 此方法实现调用后台权限API即可( 该回调必须实现 [locationManager requestAlwaysAuthorization] ); since 6.8.1
  44. * @param locationManager 地图的CLLocationManager。
  45. */
  46. - (void)mapViewRequireLocationAuth:(CLLocationManager *)locationManager;
  47. @end
  48. ///轨迹纠偏管理类
  49. @interface MATraceManager : NSObject
  50. /**
  51. * @brief 单例方法
  52. */
  53. + (instancetype)sharedInstance;
  54. /**
  55. * @brief 获取纠偏后的经纬度点集
  56. * @param locations 待纠偏处理的点集, 顺序即为传入的顺序
  57. * @param type loctions经纬度坐标的类型, 如果已经是高德坐标系,传 -1
  58. * @param processingCallback 如果一次传入点过多,内部会分批处理。每处理完一批就调用此回调
  59. * @param finishCallback 全部处理完毕调用此回调
  60. * @param failedCallback 失败调用此回调
  61. * @return 返回一个NSOperation对象,可调用cancel取消
  62. */
  63. - (NSOperation *)queryProcessedTraceWith:(NSArray<MATraceLocation *>*)locations
  64. type:(AMapCoordinateType)type
  65. processingCallback:(MAProcessingCallback)processingCallback
  66. finishCallback:(MAFinishCallback)finishCallback
  67. failedCallback:(MAFailedCallback)failedCallback;
  68. /**
  69. * @brief 开始轨迹定位, 内部使用系统CLLocationManager,distanceFilter,desiredAccuracy均为系统默认值
  70. * @param locCallback 定位回调, 回调中返回坐标类型为AMapCoordinateTypeGPS
  71. */
  72. - (void)startTraceWith:(MATraceLocationCallback)locCallback __attribute__((deprecated("use start instead")));
  73. /**
  74. * @brief 停止轨迹定位
  75. */
  76. - (void)stopTrace __attribute__((deprecated("use stop instead")));
  77. /**
  78. * @brief 轨迹定位的代理回调对象,配合start和stop方法使用,since v6.2.0
  79. */
  80. @property (nonatomic, weak) id<MATraceDelegate> delegate;
  81. /**
  82. * @brief 开始轨迹定位, 内部使用系统CLLocationManager,distanceFilter,desiredAccuracy均为系统默认值,since v6.2.0
  83. */
  84. - (void)start;
  85. /**
  86. * @brief 停止轨迹定位,since v6.2.0
  87. */
  88. - (void)stop;
  89. @end
  90. #endif