定位和导航

1.系统自带的定位

#判断是否打开定位

+(BOOL)boolOpenLocation{

    bool boolResult;

    if ([CLLocationManager locationServicesEnabled] &&

        ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized

         || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined)) {

            boolResult = YES;

        }else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied){

        boolResult = NO;

    }

    return  boolResult;

}


#跳转到系统设置中打开系统定位

   NSURL *url;

        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {

          url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];

        }else{

            url = [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"];  //LOCATION_SERVICES打开系统定位

        }

        if ([[UIApplication sharedApplication] canOpenURL:url]) {

            [[UIApplication sharedApplication] openURL:url];

        }

#iOS系统定位

在info.plist中加入两个字段 
NSLocationAlwaysUsageDescription 
NSLocationWhenInUseUsageDescription 


.h文件中:

.m文件中

- (void)dealloc

{

    self.myLocationManager = nil;

    self.myLocation = nil;

  self.myGeocoder = nil;

}


- (void)viewDidLoad {

    [super viewDidLoad];

    if ([CLLocationManager locationServicesEnabled]) {

      self.myLocationManager = [[CLLocationManager alloc] init];

        [self.myLocationManager setDelegate:self];

        self.myLocationManager.desiredAccuracy = kCLLocationAccuracyBest;

        self.myLocationManager.distanceFilter = 1.0;

[self.myLocationManager requestAlwaysAuthorization];          //iOS 7

      [self.myLocationManager requestWhenInUseAuthorization];  //iOS 8以上

        [self.myLocationManager startUpdatingLocation];

    }else {

        NSLog(@"Location services are not enabled");

    }

}


#pragma mark CLLocationManagerDelegate   代理方法实现

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

{

    NSLog(@"locations is %@",locations);

    CLLocation *location = [locations lastObject];

    self.myGeocoder = [[CLGeocoder alloc] init];

    [self.myGeocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error)

     {

         if(error == nil && [placemarks count]>0)

       {

             CLPlacemark *placemark = [placemarks objectAtIndex:0];

             

             NSLog(@"name = %@",placemark.name);

              NSLog(@"Country = %@", placemark.country);

             NSLog(@"Postal Code = %@", placemark.postalCode);

             NSLog(@"locality = %@", placemark.locality);

             NSLog(@"subLocality = %@", placemark.subLocality);

             NSLog(@"address = %@",placemark.name);

             NSLog(@"administrativeArea = %@",placemark.administrativeArea);

             NSLog(@"subAdministrativeArea = %@",placemark.subAdministrativeArea);

             NSLog(@"ISOcountryCode = %@",placemark.ISOcountryCode);

             NSLog(@"thoroughfare = %@", placemark.thoroughfare);

             NSLog(@"subThoroughfare = %@",placemark.subThoroughfare);     

         }

         else if(error==nil && [placemarks count]==0){

             NSLog(@"No results were returned.");

         }

         else if(error != nil) {

             NSLog(@"An error occurred = %@", error);

         }

     }];

    [self.myLocationManager stopUpdatingLocation];

}


//定位失败

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

{

    NSLog(@"reverse geocoder error: %@", [error description]);

}


2.SDK的定位和导航

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值