AMapGeoFenceManager.h 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. //
  2. // AMapGeoFenceManager.h
  3. // AMapLocationKit
  4. //
  5. // Created by hanxiaoming on 16/12/5.
  6. // Copyright © 2016年 Amap. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "AMapGeoFenceRegionObj.h"
  10. // 以下类涉及的坐标需要使用高德坐标系坐标(GCJ02)
  11. @protocol AMapGeoFenceManagerDelegate;
  12. ///地理围栏监听状态类型
  13. typedef NS_OPTIONS(NSUInteger, AMapGeoFenceActiveAction)
  14. {
  15. AMapGeoFenceActiveActionNone = 0, ///< 不进行监听
  16. AMapGeoFenceActiveActionInside = 1 << 0, ///< 在范围内
  17. AMapGeoFenceActiveActionOutside = 1 << 1, ///< 在范围外
  18. AMapGeoFenceActiveActionStayed = 1 << 2, ///< 停留(在范围内超过10分钟)
  19. };
  20. ///地理围栏管理类(since 2.3.0)
  21. @interface AMapGeoFenceManager : NSObject
  22. ///实现了 AMapGeoFenceManagerDelegate 协议的类指针。
  23. @property (nonatomic, weak) id<AMapGeoFenceManagerDelegate> delegate;
  24. ///需要进行通知的行为,默认为AMapGeoFenceActiveActionInside。
  25. @property (nonatomic, assign) AMapGeoFenceActiveAction activeAction;
  26. ///指定定位是否会被系统自动暂停。默认为NO。
  27. @property (nonatomic, assign) BOOL pausesLocationUpdatesAutomatically;
  28. ///是否允许后台定位。默认为NO。只在iOS 9.0及之后起作用。设置为YES的时候必须保证 Background Modes 中的 Location updates 处于选中状态,否则会抛出异常。
  29. @property (nonatomic, assign) BOOL allowsBackgroundLocationUpdates;
  30. /**
  31. * @brief 添加一个圆形围栏
  32. * @param center 围栏的中心点经纬度坐标
  33. * @param radius 围栏的半径,单位:米,要求大于0
  34. * @param customID 用户自定义ID,可选,SDK原值返回
  35. */
  36. - (void)addCircleRegionForMonitoringWithCenter:(CLLocationCoordinate2D)center radius:(CLLocationDistance)radius customID:(NSString *)customID;
  37. /**
  38. * @brief 根据经纬度坐标数据添加一个闭合的多边形围栏,点与点之间按顺序尾部相连, 第一个点与最后一个点相连
  39. * @param coordinates 经纬度坐标点数据,coordinates对应的内存会拷贝,调用者负责该内存的释放
  40. * @param count 经纬度坐标点的个数,不可小于3个
  41. * @param customID 用户自定义ID,可选,SDK原值返回
  42. */
  43. - (void)addPolygonRegionForMonitoringWithCoordinates:(CLLocationCoordinate2D *)coordinates count:(NSInteger)count customID:(NSString *)customID;
  44. /**
  45. * @brief 根据要查询的关键字,类型,城市等信息,添加一个或者多个POI地理围栏
  46. * @param keyword 要查询的关键字,多个关键字用“|”分割,必填,keyword和type两者至少必选其一
  47. * @param type 要查询的POI类型,多个类型用“|”分割,必填,keyword和type两者至少必选其一,具体分类编码和规则详见: http://lbs.amap.com/api/webservice/guide/api/search/#text
  48. * @param city 要查询的城市
  49. * @param size 要查询的数据的条数,(0,25],传入<=0的值为10,传入大于25的值为25,默认10
  50. * @param customID 用户自定义ID,可选,SDK原值返回
  51. */
  52. - (void)addKeywordPOIRegionForMonitoringWithKeyword:(NSString *)keyword POIType:(NSString *)type city:(NSString *)city size:(NSInteger)size customID:(NSString *)customID;
  53. /**
  54. * @brief 根据要查询的点的经纬度,搜索半径等信息,添加一个或者多个POI围栏
  55. * @param locationPoint 点的经纬度坐标,必填
  56. * @param aroundRadius 查询半径,单位:米,(0,50000],超出范围取3000,默认3000
  57. * @param keyword 要查询的关键字,多个关键字用“|”分割,可选
  58. * @param type 要查询的POI类型,多个类型用“|”分割,可选
  59. * @param size 要查询的数据的条数,(0,25],传入<=0的值为10,传入大于25的值为25,默认10
  60. * @param customID 用户自定义ID,可选,SDK原值返回
  61. */
  62. - (void)addAroundPOIRegionForMonitoringWithLocationPoint:(CLLocationCoordinate2D)locationPoint aroundRadius:(NSInteger)aroundRadius keyword:(NSString *)keyword POIType:(NSString *)type size:(NSInteger)size customID:(NSString *)customID;
  63. /**
  64. * @brief 根据要查询的行政区域关键字,添加一个或者多个行政区域围栏
  65. * @param districtName 行政区域关键字,必填,只支持单个关键词语:行政区名称、citycode、adcode,规则详见: http://lbs.amap.com/api/webservice/guide/api/district/#district
  66. * @param customID 用户自定义ID,可选,SDK原值返回
  67. */
  68. - (void)addDistrictRegionForMonitoringWithDistrictName:(NSString *)districtName customID:(NSString *)customID;
  69. /**
  70. * @brief 根据customID获得指定的围栏,如果customID传nil,则返回全部围栏
  71. * @param customID 用户执行添加围栏函数时传入的customID
  72. * @return 获得的围栏构成的数组,如果没有结果,返回nil
  73. */
  74. - (NSArray *)geoFenceRegionsWithCustomID:(NSString *)customID;
  75. /**
  76. * @brief 移除指定围栏
  77. * @param region 要停止监控的围栏
  78. */
  79. - (void)removeTheGeoFenceRegion:(AMapGeoFenceRegion *)region;
  80. /**
  81. * @brief 移除指定customID的围栏
  82. * @param customID 用户执行添加围栏函数时传入的customID
  83. */
  84. - (void)removeGeoFenceRegionsWithCustomID:(NSString *)customID;
  85. /**
  86. * @brief 移除所有围栏
  87. */
  88. - (void)removeAllGeoFenceRegions;
  89. @end
  90. ///地理围栏代理协议(since 2.3.0),该协议定义了获取地理围栏相关回调方法,包括添加、状态改变等。
  91. @protocol AMapGeoFenceManagerDelegate <NSObject>
  92. @optional
  93. /**
  94. * @brief 添加地理围栏完成后的回调,成功与失败都会调用
  95. * @param manager 地理围栏管理类
  96. * @param regions 成功添加的一个或多个地理围栏构成的数组
  97. * @param customID 用户执行添加围栏函数时传入的customID
  98. * @param error 添加失败的错误信息
  99. */
  100. - (void)amapGeoFenceManager:(AMapGeoFenceManager *)manager didAddRegionForMonitoringFinished:(NSArray <AMapGeoFenceRegion *> *)regions customID:(NSString *)customID error:(NSError *)error;
  101. /**
  102. * @brief 地理围栏状态改变时回调,当围栏状态的值发生改变,定位失败都会调用
  103. * @param manager 地理围栏管理类
  104. * @param region 状态改变的地理围栏
  105. * @param customID 用户执行添加围栏函数时传入的customID
  106. * @param error 错误信息,如定位相关的错误
  107. */
  108. - (void)amapGeoFenceManager:(AMapGeoFenceManager *)manager didGeoFencesStatusChangedForRegion:(AMapGeoFenceRegion *)region customID:(NSString *)customID error:(NSError *)error;
  109. @end