zoukankan      html  css  js  c++  java
  • 欧美斯项目签到功能,实时获取当前所在位置的经纬度

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

    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
    
  • 相关阅读:
    [PATCH] input: add driver for Bosch Sensortec's BMA150 accelerometer
    linux内核GPIO模拟I2C实例
    修改默认apn数据的方法
    Android平台开发WIFI function portingWIFI功能移植
    Silverlight中后台获取样式的方法
    Silverlight中读取Word
    Silverlight找到模板中的子控件
    根据年月来获取该年该月的天数
    Silverlight中Treeview中判断当前节点是否含有父节点
    修改 Linux /etc/profile 以后如何生效
  • 原文地址:https://www.cnblogs.com/yuanyuandachao/p/3880278.html
Copyright © 2011-2022 走看看