iOS地理位置使用

iOS地理位置使用

经纬度介绍

英语不好,老是分不开这两个单词,在这记录一下。

经度:longitude,竖线,(long有纵向之意,用来表示经度)

纬度:latitude,

使用

1.在项目导入 CoreLocation.framework

2.申请用户授权(ios 8之后才需要)。在info.plist文件中添加一个键:

NSLocationAlwaysUsageDescription或者NSLocationWhenInUseUsageDescription。其中NSLocationAlwaysUsageDescription是要始终使用定位服务,NSLocationWhenInUseUsageDescription是只在前台使用定位服务。

分别对应的授权方法为:

- (void)requestAlwaysAuthorization;
- (void)requestWhenInUseAuthorization;

3.初始化,代码如下:

    //创建地理位置管理对象
    self.locationManager = [[CLLocationManager alloc] init];
    //申请授权
    [self.locationManager requestAlwaysAuthorization];
    //设置管理器委托
    self.locationManager.delegate = self;
    //设置精度
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    //启动位置管理器
    [self.locationManager startUpdatingLocation];

4.实现委托方法

//地理位置发生更新时
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
    //如果在一段比较短的时间发生了多次位置更新,这几次位置更新有可能会被一次性全部上报。无论何时,最后一项表示当前位置
    CLLocation *newLocation = [locations lastObject];

    //显示纬度
    NSString *latitudeString = [NSString stringWithFormat:@"%g\u00B0",newLocation.coordinate.latitude];
    self.latitudeLabel.text = latitudeString;

    //显示经度
    NSString *longitudeString = [NSString stringWithFormat:@"%g\u00B0",newLocation.coordinate.longitude];
    self.longitudeLabel.text = longitudeString;

    //显示水平精度
    NSString *horizontalAccuracyString = [NSString stringWithFormat:@"%gm",newLocation.horizontalAccuracy];
    self.horizontalAccuracyLabel.text = horizontalAccuracyString;

    //显示海拔高度
    NSString *altitudeString = [NSString stringWithFormat:@"%gm",newLocation.altitude];
    self.altitudeLabel.text = altitudeString;

    //显示垂直精度
    NSString *verticalAccuracyString = [NSString stringWithFormat:@"%gm",newLocation.verticalAccuracy];
    self.verticalAccuracyLabel.text = verticalAccuracyString;

    if (newLocation.verticalAccuracy < 0 || newLocation.horizontalAccuracy < 0) {
        return;
    }

    if (newLocation.horizontalAccuracy > 100 || newLocation.verticalAccuracy > 50) {
        return;
    }

    if (self.previousPoint == nil) {
        return;
    } else {
        self.totalMovementDistance += [newLocation distanceFromLocation:self.previousPoint];
    }
    self.previousPoint = newLocation;

    NSString *distanceString = [NSString stringWithFormat:@"%gm",self.totalMovementDistance];
    self.distanceTraveledLabel.text = distanceString;

}

//获取地理位置失败时
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
    NSString *errorType = (error.code == kCLErrorDenied) ? @"Access Denied": @"Unknown Error";
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error getting Location" message:errorType delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil];
    [alert show];
}

代码下载

https://github.com/limaofuyuanzhang/WhereAmI

参考

iOS定位服务的应用

《精通iOS开发(第6版)》第19章 Core Location和Map Kit

时间: 2024-08-02 20:29:08

iOS地理位置使用的相关文章

iOS 地理位置反编码

获取城市的名字,具体还可以获得街道信息,不多说直接上代码: CLLocation *currentLocation = [locations lastObject]; MJLog(@"currentLocation == %@",currentLocation); // 创建位置 CLGeocoder *revGeo = [[CLGeocoder alloc] init]; [revGeo reverseGeocodeLocation:currentLocation completio

ios 客户端定位的3种方法

1.客户端通过IP地址定位 http://int.dpool.sina.com.cn/iplookup/iplookup.php 输出:城市 1 -1 -1 中国 广东 深圳 2.客户端获取经纬度,调用服务器接口获得位置 3.客户端获取经纬度,自己查找位置 1)iOS 地理位置反编码,只测试出国内 输出:详细位置,不准确 中国广东省深圳市福田区香蜜湖街道东海花园二期福禄居(东区)香蜜湖东亚国际风情街 2)百度api,好像也只能国内 http://api.map.baidu.com/geocode

详解关于Vue2.0路由开启keep-alive时需要注意的地方

Vue2.0 做应用必有的需求就是页面数据需要做缓存,不用每次进入页面都要把数据重新请求一遍,每次页面切换都有段等待数据相应时间,这个用户体验可想有多么蛋疼,所以页面缓存是必要的,啥时候需要更新页面数据呢?可以监听状态变化,或者是手动下拉刷新重新请求数据,酱紫,我想用户体验会做的更好. keep-alive的作用以及好处 在做电商有关的项目中,当我们第一次进入列表页需要请求一下数据,当我从列表页进入详情页,详情页不缓存也需要请求下数据,然后返回列表页,这时候我们使用keep-alive来缓存组件

转载]IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本 )

原文地址:IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本作者:佐佐木小次郎 因为最近项目上要用有关LBS的功能.于是我便做一下预研. 一般说来LBS功能一般分为两块:一块是地理定位,就是获取当前精度.纬度和地理位置的功能,这一部分功能主要用到CoreLocation.Frameworks.一部分就是显示地图信息.丰富地图内容等,这一部分主要用到MapKit.Frameworks.以上这几个功能的测试最好都要在真机上进行.模拟器上定位一般会在Apple的加州总部. 首先介绍

iOS开发-iOS8地理位置定位

现在的App基本上都有定位功能,旅游网站根据定位推荐旅游景点,新闻App通过地理位置推荐当地新闻,社交类的App通过位置交友,iOS中实现以上功能需要一个核心的框架CoreLocation,框架提供了一些服务可以获取和定位用户当前的位置.服务会通过一种低功耗的方式通知用户地理位置的变化,iOS中三种地位方式, Wifi定位(通过查询一个Wifi路由器的地理位置的信息),蜂窝基站定位(通过移动运用商基站定位) 和GPS卫星定位(准确度最高,耗电量最大). 1.新建一个iOS项目,在ViewCont

iOS 百度地图获取地理位置名称

目前很多的应用都用到了百度地图这一版本,不过有些方法是我在网上并没有找到的,但是这并不意味着就没有相关的文章介绍,那么这里我所记录的就是百度地图获取地理位置,以及省份,城市,区域,其他的不多说了,直接进入正题吧:       创建地图基本图层 首先,需要到http://dev.baidu.com/wiki/imap/index.php?title=iOS平台/相关下载下载全部内容,包括文档,示例代码和开发包. 然后获取自己的API KEY,具体方法按百度的官网申请就行,比较简单. 下载的文件应该

IOS获取当前地理位置文本

本文转载至  http://blog.csdn.net/lvxiangan/article/details/28101119 以下内容摘抄自网络,著作权属于原作者 方法1:使用ios自带联网查询功能,断网会报 PBRequester failed with Error Error Domain=NSURLErrorDomain Code=-1009 "似乎已断开与互联网的连接." UserInfo=0x1e2ea840 {NSErrorFailingURLStringKey=https

iOS 关于图片地理位置隐私信息的分析和读取

今天突然想到微信朋友圈发照片,涉及个人隐私的地理位置是否外泄.由于iphone拍照的照片都会带有地理位置等信息.我们先来实现怎么读取里面的安全信息.然后再来分析 #import "ViewController.h" #import <ImageIO/ImageIO.h> #import <AssetsLibrary/AssetsLibrary.h> @interface ViewController ()<UIImagePickerControllerDe

iOS之地理位置及定位系统 -- 入门笔记

这是因为xcode升级造成的定位权限设置问题.升级xcode6.xcode7以后打开以前xcode5工程,程序不能定位.工程升级到xcode6或xcode7编译时需要iOS8 要自己写授权,不然没权限定位.解决方法:首先在 info.plist里加入对应的缺省字段 ,值设置为YES(前台定位写上边字段,前后台定位写下边字段)          NSLocationWhenInUseUsageDescription   //允许在前台获取GPS的描述          NSLocationAlwa