- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
//code for adjusting pins location when user re-enters its radius
}
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
//code for adding pin to map
}
- (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region
{
}
- (CLRegion*)dictToRegion:(NSDictionary*)dictionary
{
NSString *identifier = [dictionary valueForKey:@"identifier"];
CLLocationDegrees latitude = [[dictionary valueForKey:@"latitude"] doubleValue];
CLLocationDegrees longitude =[[dictionary valueForKey:@"longitude"] doubleValue];
CLLocationCoordinate2D centerCoordinate = CLLocationCoordinate2DMake(latitude, longitude);
CLLocationDistance regionRadius = [[dictionary valueForKey:@"radius"] doubleValue];
if(regionRadius >_locationManager.maximumRegionMonitoringDistance)
{
regionRadius =_locationManager.maximumRegionMonitoringDistance;
}
NSString *version = [[UIDevice currentDevice] systemVersion];
CLRegion * region =nil;
if([version floatValue] >= 7.0f) //for iOS7
{
region = [[CLCircularRegion alloc] initWithCenter:centerCoordinate
radius:regionRadius
identifier:identifier];
}
else // iOS 7 below
{
region = [[CLRegion alloc] initCircularRegionWithCenter:centerCoordinate
radius:regionRadius
identifier:identifier];
}
return region;
}
所以我试图做到这一点,以便当 iBeacon 离开被监控区域(始终是用户手机周围的区域)时,它还会创建 map 注释/图钉,从而标记其最后已知位置。谁能帮助我或指出正确的方向?
最佳答案
iBeacon 实际上是一个地理围栏。您定义一个 CLBeaconRegion
,然后像使用 CLCircularRegion
一样监视区域进入/退出。与 CLCircularRegion
不同,CLBeaconRegion
是根据 iBeacons UUID 及其可选的 major 和 minor 定义的 值(value)观。
当 iBeacon 可见/不再可见时,您将收到对委托(delegate)的 didEnterRegion
和 didExitRegion
方法的调用 - 这在 Location and Maps Programming Guide 中有描述
您无法获取信标的位置,但您可以在离开该区域时捕获设备的 GPS 位置,作为最后一次看到信标的大致位置。完成后,创建 map 注释就很简单了。
关于ios - 有没有办法创建一个也可以作为地理围栏的 iBeacon 区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24440672/