如何使iOS获取的地理位置有效

关于CLLocationManager获取地理位置遇到的一些小事;

项目使arc

第一步:获取是否允许定位

-(BOOL)IsLocationServicesEnabled
{
    /**
     * [CLLocationManager locationServicesEnabled] 系统设置允许定位服务是否开启
     * [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied  APP是否开启定位服务
     */
    return ([CLLocationManager locationServicesEnabled] && [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied);
}

第二步:开始定位,创建全局变量 (个人理解:如果CLLocationManager的属性不是全局的在ARC项目中,出了函数体 局部变量就会被release)

@property (nonatomic, strong) CLLocationManager *userLocation;

  

-(void)getUserLocationInfomation
{
    if ([self IsLocationServicesEnabled])
    {

        if (!self.userLocation)
        {
            self.userLocation = [[CLLocationManager alloc]init];
        }

        self.userLocation.delegate = self;
        //选择定位的方式为最优的状态
        self.userLocation.desiredAccuracy = kCLLocationAccuracyBest;
        //发生事件的最小距离间隔
        self.userLocation.distanceFilter = kCLDistanceFilterNone;
        [self.userLocation startUpdatingLocation];
    }
}

第三部分:delegate回调

#pragma locationManager delegate

-(void)locationManager:(CLLocationManager *)manager
   didUpdateToLocation:(CLLocation *)newLocation
          fromLocation:(CLLocation *)oldLocation
{
    NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];
    if (locationAge > 180.0) return;
    // 测试该水平精度是否有效
    if (newLocation.horizontalAccuracy < 0) return;
    // 写你的代码 现在拿到的newLocation是有效的   [self.userLocation stopUpdatingLocation];   self.userLocation.delegate = nil;

}

-(void)locationManager:(CLLocationManager *)manager
      didFailWithError:(NSError *)error
{

}

  

时间: 2024-08-10 17:18:41

如何使iOS获取的地理位置有效的相关文章

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 LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本 )

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

iOS 获取文件的目录路径的几种方法 [转]

iOS 获取文件的目录路径的几种方法 2 years ago davidzhang iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory())手动保存的文件在documents文件里 Nsuserdefaults保存的文件在tmp文件夹里 1.Documents 目录:您应该将所有的应用程序数据文件写入到这个目录下.这个目录用于存储用户数据或其它应该

检测SDWebImage有没有缓存图片 IOS 获取网络图片大小

NSURL *url = [NSURL URLWithString:[model.content objectForKey:@"image"]];             //请求网络地址数据的同步方法             //因为这个方法在子线程(全局队列)中执行,所以不需要考虑死线程的问题             SDWebImageManager *manager = [SDWebImageManager sharedManager];              [manag

微信公众平台开发(85) 获取用户地理位置

本文介绍在微信公众平台上如何使用高级接口开发获取用户地理位置的功能. 一.获取用户地理位置接口 开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会弹框让用户确认是否允许公众号使用其地理位置.弹框只在关注后出现一次,用户以后可以在公众号详情页面进行操作. 用户同意上报地理位置后,每次进入公众号会话时,都会在进入时上报地理位置,上报地理位置以推送XML数据包到开发者填写的URL来实现. 推送XML数据包示例: <xml> <ToUserName><![CDATA[t

iOS获取汉字的拼音

在iOS开发中经常涉及到汉字的排序,最常见的就是需要根据首字母的字符顺序排列,比如常见的通讯录等.总结出来,大致可以分为两种方法,其中参考文献[1]中提供的方法十分复杂,并且代码量很大,不建议采用.另一种方法是直接采用Core Foundation中提供的方法,十分简单,封装好的代码如下: 1 - (NSString *)transform:(NSString *)chinese{ 2 //将NSString装换成NSMutableString 3 NSMutableString *pinyin

iOS获取本地视频和网络URL视频的缩略图方法

iOS获取本地视频和网络URL视频的缩略图方法 字数222 阅读612 评论0 喜欢13 首先大家先添加AVFoundation和CoreMedia.framework两个框架 第一种本地视频获取缩略图 NSString *path = @"www.51ios.net/本地路径" MPMoviePlayerController *51iosMPMovie = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileU

ios 获取屏幕的属性和宽度

1.app尺寸,去掉状态栏 CGRect r = [ UIScreen mainScreen ].applicationFrame; r=0,20,320,460 另外:self.view.bounds.size 2.屏幕尺寸 CGRect rx = [ UIScreen mainScreen ].bounds; r=0,0,320,480 3.状态栏尺寸 CGRect rect; rect = [[UIApplication sharedApplication] statusBarFrame]

ios 获取当前视图第一响应者

Football on Table 题意:一些杆上有人,人有一个宽度,然后现在有一个球射过去,要求出球不会碰到任何人的概率 思路:计算出每根杆的概率,之后累乘,计算杆的概率的时候,可以先把每块人的区间长度再移动过程中会覆盖多少长度累加出来,然后(1?总和/可移动距离)就是不会碰到的概率 代码: #include <stdio.h> #include <string.h> #include <math.h> const double eps = 1e-8; int t,