欧美斯项目签到功能,实时获取当前所在位置的经纬度

由于欧美斯项目需要签到功能,因此需要给后台传一个当前位置的经纬度,以下是获取经纬度的方法

1>导入CoreLocation.frameWork

2>引入头文件,并遵循协议

#import <CoreLocation/CoreLocation.h>

<CLLocationManagerDelegate>

3>代码

@interface YYAboutUsViewController ()<UIWebViewDelegate,CLLocationManagerDelegate>

{
    UIWebView *_webView;
    NSString * _currentLatitude;  //当前位置的纬度
    NSString * _currentLongitude; //当前位置的经度
    CLLocationManager *_locManager;
    
}

@end

@implementation YYAboutUsViewController

- (void)viewWillAppear:(BOOL)animated
{
    //实例化一个位置管理器
    _locManager = [[CLLocationManager alloc] init];
    _locManager.delegate = self;
   // 设置定位精度
    // kCLLocationAccuracyNearestTenMeters:精度10米
    // kCLLocationAccuracyHundredMeters:精度100 米
    // kCLLocationAccuracyKilometer:精度1000 米
    // kCLLocationAccuracyThreeKilometers:精度3000米
    // kCLLocationAccuracyBest:设备使用电池供电时候最高的精度
    // kCLLocationAccuracyBestForNavigation:导航情况下最高精度,一般要有外接电源时才能使用
    _locManager.desiredAccuracy = kCLLocationAccuracyBest;

    // distanceFilter是距离过滤器,为了减少对定位装置的轮询次数,位置的改变不会每次都去通知委托,而是在移动了足够的距离时才通知委托程序
    // 它的单位是米,这里设置为至少移动1000再通知委托处理更新;
    _locManager.distanceFilter = 1000.0f;  // 如果设为kCLDistanceFilterNone,则每秒更新一次;
    
    //判断手机定位是否开启
    // 开启定位:设置 > 隐私 > 位置 > 定位服务
    if ([CLLocationManager locationServicesEnabled]) {
       // 启动位置更新
        // 开启位置更新需要与服务器进行轮询所以会比较耗电,在不需要时用stopUpdatingLocation方法关闭;
        [_locManager startUpdatingLocation];
    }else{
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"请开启定位" message:nil delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];
        [alert show];
    }

}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"guanyu_nav"] forBarMetrics:UIBarMetricsDefault];
    
    
    
    
    if (Device_Is_IPhone5) {
        _webView =[[UIWebView alloc]initWithFrame:CGRectMake(0, 64, self.view.bounds.size.width, self.view.bounds.size.height - 64)];
    }else{
        _webView =[[UIWebView alloc]initWithFrame:CGRectMake(0, 44, self.view.bounds.size.width, self.view.bounds.size.height - 44)];
    }
    [self.view addSubview:_webView];

}

#pragma mark -CLLocationManagerDelegate
// 地理位置发生改变时触发
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    // 获取经纬度
    NSLog(@"纬度:%f",newLocation.coordinate.latitude);
    NSLog(@"经度:%f",newLocation.coordinate.longitude);
    
    
    //加载网络数据
    _webView.delegate = self;
    //aboutOMS.html
    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@?latitude=%f&longitude=%f",kBaseUrl,@"7.aspx",newLocation.coordinate.latitude,newLocation.coordinate.longitude]];
    NSURLRequest *request=[NSURLRequest requestWithURL:url];
    [_webView loadRequest:request];

    // 停止位置更新
    [manager stopUpdatingLocation];
}
#pragma mark -webView的代理方法-
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    return YES;
}

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    [MBProgressHUD showWithText:@"加载中..." toView:self.view];
    
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [MBProgressHUD hideHUDForView:self.view animated:YES];
}

@end
原文地址:https://www.cnblogs.com/yuanyuandachao/p/3880278.html