如何将一个区域的地理围栏添加到监控中。

How to Add the geofence of a region to monitoring.

- (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.52171,77.2015457);

    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);

}

问题是,这里我提供了一个我正在检查的静态区域(中心) 但要求是,这个区域将占用骑手的经纬度,并且骑手的数量可以变化

i hv all lat n long in an array of dictionary.首先,驾驶员将选择列表中的第一个骑手,那时我需要骑手 1 位置的区域。 我不知道如何实现这个

如果我喜欢这样

for (NsMutableDictionary * dict in goersList)
    {
        rider_id=[dict valueForKey:@"trip_id"];
        lat=[dict valueForKey:@"origin_lat"];
        longi=[dict valueForKey:@"origin_long"];

}

那它怎么知道要监视第一个区域,并且在从那个范围存在之后我要检查第二个位置

您可以动态创建区域并将其添加到监控中。

for (NSDictionary *dict in [result valueForKey:@"Geofences"])
{
    NSLog(@"%@",dict);
    CLLocationCoordinate2D locationCoordinate=CLLocationCoordinate2DMake([[dict valueForKey:@"cLatitude"]doubleValue], [[dict valueForKey:@"cLongitude"]doubleValue]);

    CLCircularRegion *circularRegion=[[CLCircularRegion alloc]initWithCenter:locationCoordinate radius:[[dict valueForKey:@"Radius"]doubleValue] identifier:[dict valueForKey:@"Name"]];

    circularRegion.notifyOnEntry=YES;
    circularRegion.notifyOnExit=YES;
    [[AppDelegate sharedDelegate].locationManager startMonitoringForRegion:circularRegion];
    NSLog(@"%@",[[[AppDelegate sharedDelegate] locationManager].monitoredRegions description]);
}

这里有几个地区加入监控。您可以一次添加一个。即在选择表视图时。

并使用以下代码删除其他人

for (CLRegion *monitored in [[AppDelegate sharedDelegate].locationManager monitoredRegions])
{
    [[AppDelegate sharedDelegate].locationManager stopMonitoringForRegion:monitored];
}