• iOS 定位于地理反编码


    - (void)viewDidLoad {
    
    [self startLocation];
    }
    
    //开始定位
    -(void)startLocation{
        self.locationManager = [[CLLocationManager alloc] init];
        self.locationManager.delegate = self;
        
        [self.locationManager requestWhenInUseAuthorization];
        if ([[[UIDevice currentDevice]systemVersion]doubleValue]>=8.0) {
            
            [self.locationManager requestWhenInUseAuthorization];
            [self.locationManager requestAlwaysAuthorization];
            
        }
        [self.locationManager startUpdatingLocation];
        
        if ([CLLocationManager locationServicesEnabled]) {
            self.locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
            self.locationManager.distanceFilter = kCLDistanceFilterNone;
        }else
        {
            NSLog(@"open fail");
        }
        
    }
    #pragma mark - CoreLocation 代理
    #pragma mark 跟踪定位代理方法,每次位置发生变化即会执行(只要定位到相应位置)
    -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
    {
        CLLocation *location=[locations lastObject];
        CLLocationCoordinate2D coordinate=location.coordinate;
        NSLog(@"经度:%f,纬度:%f",coordinate.longitude,coordinate.latitude);
        self.longitude=coordinate.longitude;
        self.latitude=coordinate.latitude;
        //如果不需要实时定位,使用完即使关闭定位服务
        [self.locationManager stopUpdatingLocation];
        [self weiZhi];
    }
    -(void)weiZhi
    {
        self.geocoder=[[CLGeocoder alloc]init];
        CLLocation *rr=[[CLLocation alloc]initWithLatitude:self.latitude longitude:self.longitude];
        [self.geocoder reverseGeocodeLocation:rr completionHandler:^(NSArray *placemarks, NSError *error) {
            
            CLPlacemark *mark=[placemarks objectAtIndex:0];
            UILabel *currentLocation=[[UILabel alloc]initWithFrame:CGRectMake(220, 15, 100, 20)];
            currentLocation.text=[NSString stringWithFormat:@"%@",mark.subLocality];
            
            [self.locationView addSubview:currentLocation];
        }];
    
    }
    -(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
    {
         switch (status) {
             case kCLAuthorizationStatusNotDetermined:
             if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
             {
                 [self.locationManager requestWhenInUseAuthorization];
             }
             break;
             default:
             break;
         }
    
    
    }
    //当定位出现错误时就会调用这个方法。
    - (void)locationManager:(CLLocationManager *)manager
           didFailWithError:(NSError *)error
    {
        NSLog(@"error-%@",error);
    
    }

    定位当前的位置。对于 CLPlacemark 还有许多属性,不仅仅可以给出当前位置,还可以给出其他信息,后续研究。。。。

    淡然;敬胜怠,义胜欲;知其雄,守其雌
  • 相关阅读:
    SpringBoot+AOP+自定义注解
    在win10上安装Linux系统安装
    spring、springMvc、springBoot和springCloud的联系与区别
    spring与springMVC的区别
    spring boot与spring mvc的区别是什么?
    返回的响应代码
    Java为什么要实现Serializable接口
    @Data注解和如何使用,lombok
    使用generatorConfig自动生成实体类与dao的接口以及mappers映射文件
    MyBatis 配置
  • 原文地址:https://www.cnblogs.com/xblover/p/4806464.html
Copyright © 2020-2023  润新知