IOS8 Map-持续更新

来源:互联网 发布:知乎 苏享茂事件始末 编辑:程序博客网 时间:2024/06/05 20:34
  • 在info.plist中添加key:
NSLocationWhenInUseUsageDescription  :当app在前台的时候,才可以获取到定位信息NSLocationAlwaysUsageDescription     :app在前台、后台、挂起、结束进程状态时,都可以获取到定位信息

这两个key对应的值都是NSString,简要填写为何需要定位,比如Location is required to find out how many steps you run。
NSLocationAlwaysUsageDescription字符串类型(需要设置值),切换到后台等10分钟后,在进入程序不会重新载入,会一直运行。

  • 向用户申请获取定位请求:
[locationManager requestWhenInUseAuthorization];//相对应info.plist中的NSLocationWhenInUseUsageDescription键 [locationManager requestAlwaysAuthorization];//相对应info.plist中的NSLocationAlwaysUsageDescription键
  • ios8下所有授权状态说明:
kCLAuthorizationStatusNotDetermined:用户还没有被请求获取授权,只第一次出现kCLAuthorizationStatusRestricted:用户在设置里关闭了位置服务kCLAuthorizationStatusDenied:用户收到获取授权的请求,但点击了NO,或者在设置里关闭了kCLAuthorizationStatusAuthorized:用户收到获取授权的请求,点击了YES;(此状态在ios8废弃了,ios7以及以下可用)kCLAuthorizationStatusAuthorizedAlways = kCLAuthorizationStatusAuthorized用户授权app在任何时候获取位置信息kCLAuthorizationStatusAuthorizedWhenInUse:用户授权app在前台获取位置信息

ios 里如何判断当前应用的定位服务是否可用

(用户开启了定位服务&&(用户还没有被请求获取授权||用户收到获取授权的请求,点击了YES)),此时就可以初始化定位服务了

                ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized                  || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined)) {                  //定位功能可用,开始定位                  _locationManger = [[CLLocationManager alloc] init];                  locationManger.delegate = self;                  [locationManger startUpdatingLocation];              }              else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied){          NSlog("定位功能不可用,提示用户或忽略");               } 

如果需要定位,

NSURL *settingsURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];        [[UIApplication sharedApplication] openURL:settingsURL];

让用户自己去选择,而且可以改变kCLAuthorizationStatusAuthorizedAlways和kCLAuthorizationStatusAuthorizedWhenInUse也可以用

百度地图计算坐标之间直线距离

-(double)distanceBetweenOrderBy:(double)lat1 :(double)lat2 :(double)lng1 :(double)lng2{    CLLocation* curLocation = [[CLLocation alloc] initWithLatitude:lat1 longitude:lng1];    CLLocation* otherLocation = [[CLLocation alloc] initWithLatitude:lat2 longitude:lng2];    double distance  = [curLocation distanceFromLocation:otherLocation];    return distance;}

百度地图计算坐标之间步行距离

-(void)distanceInfo{    if (!self.routeSearch) {        self.routeSearch = [[BMKRouteSearch alloc] init];        self.routeSearch.delegate = self;    }    BMKPlanNode *start = [[BMKPlanNode alloc] init];    CLLocationCoordinate2D cloStart;    cloStart.latitude = [[self.dictData valueForKey:@"courierLatitude"] doubleValue];    start.pt = cloStart;    BMKPlanNode *end = [[BMKPlanNode alloc] init];    CLLocationCoordinate2D cloEnd;      cloEnd.latitude = [[self.dictData  valueForKey:@"shopLatitude"] doubleValue];      cloEnd.longitude = [[self.dictData  valueForKey:@"shopLongitude"] doubleValue];    end.pt = cloEnd;    BMKWalkingRoutePlanOption *walkingRoutePlanOption = [[BMKWalkingRoutePlanOption alloc] init];    walkingRoutePlanOption.from = start;    walkingRoutePlanOption.to = end;    BOOL flg = [self.routeSearch walkingSearch:walkingRoutePlanOption];    if (flg) {        FLDDLogDebug(@"success");    }    else {        FLDDLogInfo(@"failed");    }    walkingRoutePlanOption = nil;    end = nil;    start= nil;}
#pragma mark -BMKRouteSearchDelegate- (void)onGetWalkingRouteResult:(BMKRouteSearch *)searcher result:(BMKWalkingRouteResult *)result errorCode:(BMKSearchErrorCode)error{    if (error == BMK_SEARCH_NO_ERROR) {        BMKWalkingRouteLine *walkingLine = (BMKWalkingRouteLine *)[result.routes objectAtIndex:0];        NSString* distance=[NSString stringWithFormat:@"%d",walkingLine.distance];         FLDDLogDebug(@"distance:%d", walkingLine.distance);    } }
0 0
原创粉丝点击