- (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);
}
问题是,这里我提供了一个静态区域,我可以检查(中心) 但要求是,这个区域将需要很长的骑手和骑手的数量可能会有所不同
我在一个字典数组中长得很长。首先,驾驶员将选择列表中的第一个骑手,那时我需要骑手1位置的区域。 我不知道如何实现这个
如果我喜欢这个
for (NsMutableDictionary * dict in goersList)
{
rider_id=[dict valueForKey:@"trip_id"];
lat=[dict valueForKey:@"origin_lat"];
longi=[dict valueForKey:@"origin_long"];
}
那么它将如何知道第一个区域将被监控,并且在该区域存在之后我将检查第二个位置
答案 0 :(得分:3)
您可以动态创建区域并将其添加到监控中。
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]);
}
这里有几个区域被添加到监控中。您可以一次添加一个。即选择tableview。
使用以下代码删除其他人
for (CLRegion *monitored in [[AppDelegate sharedDelegate].locationManager monitoredRegions])
{
[[AppDelegate sharedDelegate].locationManager stopMonitoringForRegion:monitored];
}