zoukankan      html  css  js  c++  java
  • CoreLocation获取当前位置信息

    参考来源一:http://xiongzhend.blog.163.com/blog/static/64098501201041383342989/

    参考来源二: http://blog.iosxcode4.com/archives/23 

      iPhone可以使用CoreLocation框架确定他的物理位置,可以利用三种技术来实现该功能:GPS,WiFi定位和蜂窝基站三角网定位。但在程序中我们只需设定我们希望的精度级别,由CoreLocation决定采用哪种技术可以更好的满足我们的请求。

    1.Wi-Fi定位扫描本地路由器,使用它们的MAC地址搜索一个中心位置数据库,所有iPhone和iPod touch平台都免费提供了这种定位方式。

    2.蜂窝定位则依赖于天线,但是只有iPhone上才有这样的天线。这种技术利用本地蜂窝基站进行三角定位,这些基站的位置是在手机公司安装基站时就确 定的。最后一种、也是最准确的一种定位方式是GPS,只有第二代和更新的iPhone才提供GPS。第一代iPhone没有内置GPS,目前所有iPod touch设备也没有提供GPS。

    3.第三代iPhone 3G S引入了一个内置的罗盘(通过一个磁强计),并提供了用于支持它的Core Location API。

    首先,将CoreGraphics.framework 加入到framework;

    其次,声明中要加入<CLLocationManagerDelegate>协议;

    接下来是获取数据和实现委托:

     1 #import "ViewController.h"
    2 #import "CoreLocation/CoreLocation.h"
    3
    4 @implementation ViewController
    5
    6 CLLocationManager *locationManager;
    7 CLLocation* startingPoint;//开始位置
    8 - (void)viewDidLoad
    9 {
    10 [super viewDidLoad];
    11 // Do any additional setup after loading the view, typically from a nib.
    12
    13
    14 //创建一个位置管理器
    15 locationManager = [[CLLocationManager alloc] init];//初始化
    16 locationManager.delegate=self;//委托自己
    17 locationManager.desiredAccuracy=kCLLocationAccuracyBest;//精度设定,有好几种选择(kCLLocationAccuracyNearestTenMeters,kCLLocationAccuracyHundredMeters,kCLLocationAccuracyKilometer,kCLLocationAccuracyThreeKilometers精度逐渐降低)
    18 locationManager.distanceFilter=1000.0f;//设置距离筛选器
    19 [locationManager startUpdatingLocation];//开启位置更新
    20
    21 }
    22
    23
    24 #pragma mark - CLLocationManagerDelegate Methods
    25 /*
    26 *确定当前位置和位置更新时调用该方法
    27 */
    28 -(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
    29 //获取经度
    30 NSString *latitudeString=[[NSString alloc] initWithFormat:@"%g",newLocation.coordinate.latitude];
    31 //latitudeLabel.text=latitudeString;
    32 [latitudeString release];
    33
    34 //获取纬度
    35 NSString *longitudeString=[[NSString alloc] initWithFormat:@"%g",newLocation.coordinate.longitude];
    36 //longitudeLabel.text=longitudeString;
    37 [longitudeString release];
    38
    39 if(startingPoint==nil)
    40 startingPoint= newLocation;
    41 //newLocation.coordinate.latitude;//经度
    42 //newLocation.coordinate.longitude;//纬度
    43 //newLocation.horizontalAccuracy;//水平精度
    44 //newLocation.altitude;//高度
    45 //newLocation.verticalAccuracy;//垂直精度
    46
    47 CLLocationDistance distance = [newLocation distanceFromLocation:startingPoint];//移动的距离
    48 NSString *distanceString = [[NSString alloc] initWithFormat:@"%gm",distance];//格式化移动距离
    49 NSLog(@"distanceString:%@",distanceString);
    50 }
    51
    52 /*
    53 *位置查询遇到错误时调用这个方法
    54 */
    55
    56 -(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
    57
    58 NSString *errorType = (error.code == kCLErrorDenied) ? @"Access Denied" : @"Unknown Error";
    59
    60 UIAlertView *alert = [[UIAlertView alloc]
    61 initWithTitle:@"Error getting Location"
    62 message:errorType
    63 delegate:nil
    64 cancelButtonTitle:@"Okay"
    65 otherButtonTitles:nil];
    66
    67 [alert show];
    68 [alert release];
    69
    70 }




  • 相关阅读:
    ios 中的循环引用问题及解决
    Leetcode-Maximum Depth of Binary Tree
    Leetcode-Min Stack
    Leetcode-Intersection of Two Linked Lists
    Leetcode-Binary Tree Inorder Traversal
    Leetcode-Unique Binary Search Trees II
    Leetcode-Unique Binary Search Trees
    Leetcode-binary Tree Zigzag Level Order Traversal
    Leetcode-Construct Binary Tree from inorder and preorder travesal
    Leetcode-Next Permutation
  • 原文地址:https://www.cnblogs.com/foxmin/p/2394499.html
Copyright © 2011-2022 走看看