IOS8 Map-持续更新

  • 在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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值