如何将一个区域的地理围栏添加到监控中。
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];
}
- (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];
}