TencentLBSGeofenceManager Class Reference
| Inherits from | NSObject |
|---|---|
| Declared in | TencentLBSGeofenceManager.h |
Overview
腾讯地理围栏管理类,提供围栏的创建、监控和管理功能。 支持圆形围栏和多边形围栏,可监听进入、离开和停留事件。
使用步骤: 1. 创建 TencentLBSGeofenceManager 实例并设置 delegate 2. 设置 coordinateType 指定围栏坐标系(默认 GCJ-02,与腾讯地图一致) 3. 创建围栏对象,设置 activeAction(监听事件类型,如 Enter/Exit/Stayed)和 stayedDuration(停留阈值)等围栏级别属性 4. 调用 addGeofenceRegion: 添加围栏(坐标系需与 coordinateType 一致) 5. 在代理回调中处理围栏事件
delegate
实现了 TencentLBSGeofenceManagerDelegate 协议的代理对象
@property (nonatomic, weak, nullable) id<TencentLBSGeofenceManagerDelegate> delegateDeclared In
TencentLBSGeofenceManager.h
allowsBackgroundLocationUpdates
是否允许后台位置更新,默认为 NO
@property (nonatomic, assign) BOOL allowsBackgroundLocationUpdatesDeclared In
TencentLBSGeofenceManager.h
geofenceRegions
当前已添加的所有围栏区域
@property (nonatomic, copy, readonly) NSArray<TencentLBSGeofenceRegion*> *geofenceRegionsDeclared In
TencentLBSGeofenceManager.h
desiredAccuracy
定位精度,默认为 kCLLocationAccuracyBest
@property (nonatomic, assign) CLLocationAccuracy desiredAccuracyDeclared In
TencentLBSGeofenceManager.h
distanceFilter
定位的最小更新距离,默认为 kCLDistanceFilterNone
@property (nonatomic, assign) CLLocationDistance distanceFilterDeclared In
TencentLBSGeofenceManager.h
detectionInterval
检测频率间隔,默认为 0 秒(每次位置更新都检测)。 用于控制围栏检测的频率,降低性能消耗。
@property (nonatomic, assign) NSTimeInterval detectionIntervalDiscussion
检测频率间隔,默认为 0 秒(每次位置更新都检测)。 用于控制围栏检测的频率,降低性能消耗。
Declared In
TencentLBSGeofenceManager.h
adaptiveDistanceFilterEnabled
是否启用自适应距离过滤器(智能频率控制),默认为 YES。
@property (nonatomic, assign, getter=isAdaptiveDistanceFilterEnabled) BOOL adaptiveDistanceFilterEnabledDiscussion
是否启用自适应距离过滤器(智能频率控制),默认为 YES。
开启时,SDK 会根据当前位置到最近围栏边界的距离,自动调整定位频率。 距离围栏越近定位频率越高,距离越远频率越低,以平衡检测精度与功耗。
关闭时,使用 distanceFilter 属性设置的固定值。
Warning: 开启自适应模式后,手动设置的 distanceFilter 值将不会生效,直到关闭自适应模式。
Declared In
TencentLBSGeofenceManager.h
currentDistanceFilter
当前实际生效的距离过滤值(只读)。自适应模式下会动态变化,固定模式下等于 distanceFilter。
@property (nonatomic, readonly) CLLocationDistance currentDistanceFilterDeclared In
TencentLBSGeofenceManager.h
coordinateType
围栏使用的坐标系类型,默认为 TencentLBSLocationCoordinateTypeGCJ02。 用于指定传入的围栏坐标和回调的定位坐标所使用的坐标系。
@property (nonatomic, assign) TencentLBSLocationCoordinateType coordinateTypeDiscussion
围栏使用的坐标系类型,默认为 TencentLBSLocationCoordinateTypeGCJ02。 用于指定传入的围栏坐标和回调的定位坐标所使用的坐标系。
- TencentLBSLocationCoordinateTypeGCJ02: 火星坐标(国测局坐标),与腾讯地图一致。 系统定位获取的 WGS-84 坐标会自动转换为 GCJ-02 后再与围栏坐标进行比较。 在中国大陆地区会进行坐标转换,海外地区不进行转换。
- TencentLBSLocationCoordinateTypeWGS84: 地球坐标,直接使用系统定位的原始坐标。
Warning: 需要在添加围栏之前设置,且围栏坐标系需与此设置保持一致,否则会导致围栏判断偏差。
Declared In
TencentLBSGeofenceManager.h
– addCircleGeofenceWithCenter:radius:identifier:
添加圆形地理围栏
- (void)addCircleGeofenceWithCenter:(CLLocationCoordinate2D)center radius:(CLLocationDistance)radius identifier:(NSString *)identifierParameters
center |
围栏中心坐标,坐标系需与 coordinateType 设置一致 |
|---|---|
radius |
围栏半径,单位为米 |
identifier |
围栏的唯一标识符 |
Discussion
添加圆形地理围栏
Note: 建议单个 Manager 实例的围栏数量不超过 1000 个,过多的围栏会增加位置检测的计算开销
Declared In
TencentLBSGeofenceManager.h
– addCircleGeofenceWithCenter:radius:identifier:userInfo:
添加圆形地理围栏(附带自定义数据)
- (void)addCircleGeofenceWithCenter:(CLLocationCoordinate2D)center radius:(CLLocationDistance)radius identifier:(NSString *)identifier userInfo:(nullable NSDictionary<NSString*,id<NSSecureCoding> > *)userInfoParameters
center |
围栏中心坐标 |
|---|---|
radius |
围栏半径,单位为米 |
identifier |
围栏的唯一标识符 |
userInfo |
自定义附加信息 |
Discussion
添加圆形地理围栏(附带自定义数据)
Declared In
TencentLBSGeofenceManager.h
– addPolygonGeofenceWithCoordinates:identifier:
添加多边形地理围栏
- (void)addPolygonGeofenceWithCoordinates:(NSArray<NSValue*> *)coordinates identifier:(NSString *)identifierParameters
coordinates |
多边形顶点坐标数组,元素为 NSValue 包装的 CLLocationCoordinate2D,最少需要 3 个顶点 |
|---|---|
identifier |
围栏的唯一标识符 |
Discussion
添加多边形地理围栏
Declared In
TencentLBSGeofenceManager.h
– addPolygonGeofenceWithCoordinates:identifier:userInfo:
添加多边形地理围栏(附带自定义数据)
- (void)addPolygonGeofenceWithCoordinates:(NSArray<NSValue*> *)coordinates identifier:(NSString *)identifier userInfo:(nullable NSDictionary<NSString*,id<NSSecureCoding> > *)userInfoParameters
coordinates |
多边形顶点坐标数组,元素为 NSValue 包装的 CLLocationCoordinate2D,最少需要 3 个顶点 |
|---|---|
identifier |
围栏的唯一标识符 |
userInfo |
自定义附加信息 |
Discussion
添加多边形地理围栏(附带自定义数据)
Declared In
TencentLBSGeofenceManager.h
– addPolygonGeofenceWithCCoordinates:count:identifier:
添加多边形地理围栏(C 数组方式)
- (void)addPolygonGeofenceWithCCoordinates:(const CLLocationCoordinate2D *)coordinates count:(NSUInteger)count identifier:(NSString *)identifierParameters
coordinates |
多边形顶点坐标 C 数组 |
|---|---|
count |
顶点数量,最少需要 3 个 |
identifier |
围栏的唯一标识符 |
Discussion
添加多边形地理围栏(C 数组方式)
Declared In
TencentLBSGeofenceManager.h
– addGeofenceRegion:
添加已创建的围栏区域对象
- (void)addGeofenceRegion:(TencentLBSGeofenceRegion *)regionParameters
region |
围栏区域对象,支持 TencentLBSGeofenceCircleRegion、TencentLBSGeofencePolygonRegion 和 TencentLBSGeofenceDistrictRegion |
|---|
Discussion
添加已创建的围栏区域对象
Declared In
TencentLBSGeofenceManager.h
– addDistrictGeofenceWithKeyword:identifier:
添加行政区划围栏(关键字方式)。 keyword 支持两种形式: - 纯数字(如 @“110108"):视为行政区划代码(adcode),直接查询边界多边形数据 - 中文名称(如 @"朝阳区"):先搜索匹配的行政区划,再查询边界多边形数据
- (void)addDistrictGeofenceWithKeyword:(NSString *)keyword identifier:(NSString *)identifierParameters
keyword |
行政区划关键字,可以是 adcode(如 @“110108")或中文名称(如 @"海淀区") |
|---|---|
identifier |
围栏的基础标识符。当匹配到多个行政区划时,实际标识符会追加 “_序号” 后缀 |
Discussion
添加行政区划围栏(关键字方式)。 keyword 支持两种形式: - 纯数字(如 @“110108"):视为行政区划代码(adcode),直接查询边界多边形数据 - 中文名称(如 @"朝阳区"):先搜索匹配的行政区划,再查询边界多边形数据
如果使用中文名称且存在多个同名行政区划(如"朝阳区"同时匹配北京市朝阳区和长春市朝阳区), 会为每个匹配结果都创建围栏,identifier 自动追加 “序号” 后缀(如 “district朝阳区0"、"district朝阳区_1")。 每个围栏创建完成(成功或失败)都会单独回调 tencentLBSGeofenceManager:didCreateDistrictRegion:forKeyword:error: 。
Warning: 此方法为异步操作,围栏不会立即添加。请在代理回调中确认围栏创建是否成功。
Declared In
TencentLBSGeofenceManager.h
– addDistrictGeofenceWithKeyword:identifier:userInfo:
添加行政区划围栏(关键字方式,附带自定义数据)
- (void)addDistrictGeofenceWithKeyword:(NSString *)keyword identifier:(NSString *)identifier userInfo:(nullable NSDictionary<NSString*,id<NSSecureCoding> > *)userInfoParameters
keyword |
行政区划关键字,可以是 adcode 或中文名称 |
|---|---|
identifier |
围栏的基础标识符 |
userInfo |
自定义附加信息 |
Discussion
添加行政区划围栏(关键字方式,附带自定义数据)
Declared In
TencentLBSGeofenceManager.h
– removeGeofenceWithIdentifier:
根据标识符移除指定围栏
- (void)removeGeofenceWithIdentifier:(NSString *)identifierParameters
identifier |
要移除的围栏标识符 |
|---|
Discussion
根据标识符移除指定围栏
Declared In
TencentLBSGeofenceManager.h
– removeGeofenceRegion:
移除指定围栏区域对象
- (void)removeGeofenceRegion:(TencentLBSGeofenceRegion *)regionParameters
region |
要移除的围栏区域对象 |
|---|
Discussion
移除指定围栏区域对象
Declared In
TencentLBSGeofenceManager.h
– geofenceRegionWithIdentifier:
根据标识符获取围栏区域
- (nullable TencentLBSGeofenceRegion *)geofenceRegionWithIdentifier:(NSString *)identifierParameters
identifier |
围栏标识符 |
|---|
Return Value
对应的围栏区域对象,未找到时返回 nil
Discussion
根据标识符获取围栏区域
Declared In
TencentLBSGeofenceManager.h
– geofenceRegionsContainingCoordinate:
获取指定坐标所在的围栏列表
- (NSArray<TencentLBSGeofenceRegion*> *)geofenceRegionsContainingCoordinate:(CLLocationCoordinate2D)coordinateParameters
coordinate |
待查询的坐标 |
|---|
Return Value
包含该坐标的围栏区域数组
Discussion
获取指定坐标所在的围栏列表
Declared In
TencentLBSGeofenceManager.h
– isCoordinate:insideGeofenceWithIdentifier:
主动查询指定坐标相对于指定围栏的状态
- (BOOL)isCoordinate:(CLLocationCoordinate2D)coordinate insideGeofenceWithIdentifier:(NSString *)identifierParameters
coordinate |
待查询的坐标 |
|---|---|
identifier |
围栏标识符 |
Return Value
坐标在围栏内返回 YES,否则返回 NO
Discussion
主动查询指定坐标相对于指定围栏的状态
Declared In
TencentLBSGeofenceManager.h
– pauseMonitoring
暂停围栏监控,保留围栏数据但暂停位置检测
- (void)pauseMonitoringDeclared In
TencentLBSGeofenceManager.h
monitoring
围栏监控是否正在运行
@property (nonatomic, assign, readonly, getter=isMonitoring) BOOL monitoringDeclared In
TencentLBSGeofenceManager.h