iOS定位操作和经纬度距离计算

原创 2015年07月06日 16:29:40

iOS的原声定位以来CoreLocation和MapKit框架
在iOS8以后执行定位操作需要在info.plst添加两个关键字段NSLocationAlwaysUsageDescription和NSLocationWhenInUseUsageDescription如下图:


在需要定位的地方导入#import <CoreLocation/CoreLocation.h>

//开始定位

-(void)startLocation{

    

    //判断定位操作是否被允许

    if([CLLocationManager locationServicesEnabled]) {

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

        self.locationManager.delegate = self;

        [self.locationManager requestAlwaysAuthorization];

        self.locationManager.desiredAccuracy=kCLLocationAccuracyBest;

        self.locationManager.distanceFilter=kCLDistanceFilterNone;

        [self.locationManager startUpdatingLocation];

    }else {

        //提示用户无法进行定位操作

        UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:

                                  @"提示"message:@"定位不成功 ,请确认开启定位" delegate:nil cancelButtonTitle:@"取消"otherButtonTitles:@"确定",nil];

        [alertView show];

    }

    

}

//定位的回调方法,

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

    

    CLLocation *oldLocation = locations[0];

    CLLocationCoordinate2D oldCoordinate = oldLocation.coordinate;

    DLog(@"旧的经度:%f,旧的纬度:%f",oldCoordinate.longitude,oldCoordinate.latitude);

    

    [manager stopUpdatingLocation]; //停止定位

    

    CLLocation* curLocation = [[CLLocation alloc] initWithLatitude:116.396566 longitude:39.930309];

    CLLocation* otherLocation = [[CLLocation alloc] initWithLatitude:116.394158 longitude:39.929957];

    double distance  = [curLocation distanceFromLocation:otherLocation];

    NSLog(@"%f",distance);

    

    //------------------位置反编码---5.0之后使用-----------------

    CLGeocoder *geocoder = [[CLGeocoder alloc] init];

    [geocoder reverseGeocodeLocation:oldLocation

                   completionHandler:^(NSArray *placemarks, NSError *error){

                       

                       for (CLPlacemark *place in placemarks) {

                           

                           //                           UILabel *label = (UILabel *)[self.window viewWithTag:101];

                           //                           label.text = place.name;

                           NSLog(@"name,%@",place.name);                       // 位置名

                           NSLog(@"thoroughfare,%@",place.thoroughfare);       // 街道

                           NSLog(@"subThoroughfare,%@",place.subThoroughfare); // 子街道

                           NSLog(@"locality,%@",place.locality);               //

                           NSLog(@"subLocality,%@",place.subLocality);         //

                           NSLog(@"country,%@",place.country);                 // 国家

                       }

                       

                   }];

   

}

警告:在模拟器定位需要给模拟器一个位置。

计算两个坐标点之间的距离

    CLLocation* curLocation = [[CLLocation alloc] initWithLatitude:116.396566 longitude:39.930309];

    CLLocation* otherLocation = [[CLLocation alloc] initWithLatitude:116.394158 longitude:39.929957];

    double distance  = [curLocation distanceFromLocation:otherLocation];

默认单位为米。

相关文章推荐

iOS定位操作,获取当前位置,计算两点之间距离

一、导入CoreLocation.framework 二、#import 三、声明代理 CLLocationManagerDelegate> 四、代码实现 1、声明 ...

iOS定位操作,获取当前位置,计算两点之间距离

http://my.oschina.net/joanfen/blog/152136 摘要: 通过CoreLocation定位,获取到用户当前位置,跟地图中的定位不同,并计算两点之间的...

根据两点间经纬度坐标(double值)计算两点间距离,LBS操作相关工具类

LBS操作相关工具类

IOS开发——根据两点的经纬度计算距离

IOS开发——根据两点的经纬度计算距离

IOS根据两个经纬度计算相距距离

//第一种苹果自带的     CLLocation *orig=[[[CLLocation alloc] initWithLatitude:[mainDelegate.latitude_self ...
  • ck89757
  • ck89757
  • 2012年07月20日 15:58
  • 17670

iOS开发——定位 获取经纬度

最近公司提供了一个学习iOS的机会,问我是否愿意学习iOS,还是继续只做android开发。我感觉非常幸运,能有此机会去学习iOS,当即说要学习iOS开发。 学习了几天啦,做了一个小demo实现了获取...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS定位操作和经纬度距离计算
举报原因:
原因补充:

(最多只允许输入30个字)