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 自带定位CLLocationManager获取经纬度以及城市名称

第一,我们要导入苹果自带的库 #import 第二,我们要创建对象 @property (strong, nonatomic) CLLocationManager* locationMan...
  • WangQingLei0307
  • WangQingLei0307
  • 2017年01月20日 17:21
  • 8138

iOS定位和地理坐标类型解释

目前了解的地理坐标类型一共有三种:地球坐标(WGS84)、火星坐标(GCJ-02)、百度坐标(BD-09)...
  • xiaoqinggege062
  • xiaoqinggege062
  • 2015年11月16日 15:26
  • 634

IOS定位,获取经纬度,IOS8环境

// // FLShopsCtl.m // eher365 // // Created by fulin on 15/6/1. // Copyright (c) 2015年 fulin. Al...
  • smilebigdear
  • smilebigdear
  • 2015年06月02日 11:21
  • 805

iOS 定位失败 非洲 经纬度为0,0

问题:ios集成高德地图,显示当前定位点的时候,有时候定位在非洲边边上(经纬度(0,0)),特别是在第一次运行应用的时候 解决:1.初始化mamapview的时候需要将其usertracking...
  • u012909227
  • u012909227
  • 2016年02月27日 14:52
  • 295

获取指定经纬度及当前位置经纬度,并计算两个位置之间的距离

利用百度地图api和geolocation获取浏览器地理位置并计算位置距离 1、通过百度地图api获取浏览器经纬度 引入百度地图api(需申请获取ak) 引入文件申请获取"> js部分 ...
  • sinat_35861664
  • sinat_35861664
  • 2016年11月11日 16:17
  • 1431

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

最近公司提供了一个学习iOS的机会,问我是否愿意学习iOS,还是继续只做android开发。我感觉非常幸运,能有此机会去学习iOS,当即说要学习iOS开发。 学习了几天啦,做了一个小demo实现了获取...
  • VNanyesheshou
  • VNanyesheshou
  • 2015年12月01日 09:43
  • 4758

ios 高德地图 通过索引输出经纬度 根据经纬度 定位

ios 高德地图新出了几个方法
  • u014412933
  • u014412933
  • 2014年05月22日 09:40
  • 1834

多线程与IO密集/CPU密集

IO是一个通用的概念,即数据从一个地方移动到另一个地方,对一个实体来说,可以看成数据从外部进入,以及从实体输出到外部。 具体来说,常见的IO请求有网络IO,磁盘IO。 那么因为CPU的工作频率远远...
  • o83290102o5
  • o83290102o5
  • 2017年12月05日 18:18
  • 68

图像的开操作和闭操作

1.开操作 定义:B对A进行的开操作就是先用B对A腐蚀,然后用B对结果进行膨胀。 表示 : A。B =(AΘB)⊕B 含义:A。B 的边界通过B在A的边界内转动时,B中的点所能达到的A边界的最远...
  • u013146742
  • u013146742
  • 2015年11月05日 21:52
  • 448

iOS 百度地图,根据经纬度,显示大头针

//,可以根据百度地图的经纬度,来显示大头针 BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init]; annota...
  • qq_30023981
  • qq_30023981
  • 2016年06月24日 19:29
  • 2170
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS定位操作和经纬度距离计算
举报原因:
原因补充:

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