如何为苹果地图实现地理围栏代码 ios 9

How to implement geofencing code for apple map ios 9

我有两个位置,一个是 driver,另一个是 rider.I 有经纬度可供 both.I 使用 api driver进入骑手位置的地理围栏区域。

我浏览了 QKGeofenceManager 演示项目: 使用这个我可以提供经纬度和半径来找到地理围栏。

但问题是我是否必须每次在后台更新 driver 位置以及应应用什么条件以便在 driver 进入 [= 的地理围栏区域时进行回调18=]f 应用程序在后台它将如何处理所有事情。 我是否必须在 appdelegate

中进行任何更改
- (NSArray *)geofencesForGeofenceManager:(QKGeofenceManager *)geofenceManager
{
    NSArray *fetchedObjects = [self.fetchedResultsController fetchedObjects];
    NSMutableArray *geofences = [NSMutableArray arrayWithCapacity:[fetchedObjects count]];
    for (NSManagedObject *object in fetchedObjects) {
        NSString *identifier = [object valueForKey:@"identifier"];
        CLLocationDegrees lat = [[object valueForKey:@"lat"] doubleValue];
        CLLocationDegrees lon = [[object valueForKey:@"lon"] doubleValue];
        CLLocationDistance radius = [[object valueForKey:@"radius"] doubleValue];
        CLLocationCoordinate2D center = CLLocationCoordinate2DMake(lat, lon);
        CLCircularRegion *geofence = [[CLCircularRegion alloc] initWithCenter:center radius:radius identifier:identifier];
        [geofences addObject:geofence];
    }
    return geofences;
}

我找到了完成此任务的替代方法。 由于我的Didenterlocation委托方法没有被调用,我采用了另一种方法。

- (void)locationManager:(CLLocationManager *)manager

     didUpdateLocations:(NSArray *)locations {

    // If it's a relatively recent event, turn off updates to save power
    NSLog(@"%@ locations",locations);

    float Lat = _locationManager.location.coordinate.latitude;
    float Long = _locationManager.location.coordinate.longitude;

    NSLog(@"Lat : %f  Long : %f",Lat,Long);

    CLLocationCoordinate2D center = CLLocationCoordinate2DMake(28.58171,77.2915457);

    NSLog(@"center check %@",center);
    CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:center
                                                                 radius:500
                                                             identifier:@"new region"];
    BOOL doesItContainMyPoint = [region containsCoordinate:CLLocationCoordinate2DMake(Lat,Long)];

    NSLog(@"success %hhd", doesItContainMyPoint);

}

通过跟踪当前位置,每当当前位置坐标进入中心区域的坐标时,您可以触发用户已进入该特定区域的通知。