ios系统定位

前期准备

系统定位功能,需要用到框架:CoreLocation/CoreLocation.h, 然后导入文件#import <CoreLocation/CoreLocation.h>

注意使用定位功能的位置,需要设置delegate,CLLocationManagerDelegate

实现代码

//属性
@property (strong, nonatomic) CLLocationManager* locationManager; //实现
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. [self locate];
} #pragma mark- Private method
//开始定位
- (void)locate
{
// 判断定位操作是否被允许
if([CLLocationManager locationServicesEnabled]) {
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;//代理
self.locationManager.distanceFilter = 1000.0f;// 多少距离更新一次
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;//精确度
//如果是ios8设备,需要配置文件,看后面。
if ([[[UIDevice currentDevice] systemVersion] doubleValue] > 8.0) {
//设置定位权限 仅ios8有意义
[self.locationManager requestWhenInUseAuthorization];// 前台定位
// [locationManager requestAlwaysAuthorization];// 前后台同时定位
}
// 开始定位
[self.locationManager startUpdatingLocation];
}else{
//提示用户无法进行定位操作
NSLog(@"无法定位");
}
} #pragma mark - CoreLocation Delegate -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
//此处locations存储了持续更新的位置坐标值,取最后一个值为最新位置,如果不想让其持续更新位置,则在此方法中获取到一个值之后topUpdatingLocation
CLLocation *currentLocation = [locations lastObject]; // 获取当前所在的城市名
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
//根据经纬度反向地理编译出地址信息
[geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *array, NSError *error)
{
if (array.count > 0){
CLPlacemark *placemark = [array objectAtIndex:0];
//获取位置信息
NSLog(@"%@",placemark.name);
//NSLog(@"thoroughfare,%@",placemark.thoroughfare); //街道 //NSLog(@"subThoroughfare,%@",placemark.subThoroughfare); //子街道
//NSLog(@"locality,%@",placemark.locality); // 市
//NSLog(@"subLocality,%@",placemark.subLocality);// 区
//NSLog(@"country,%@",placemark.country);// 国家
//获取城市
NSString *city = placemark.locality;
if (!city) {
//四大直辖市的城市信息无法通过locality获得,只能通过获取省份的方法来获得(如果city为空,则可知为直辖市)
city = placemark.administrativeArea;
}
}
else if (error == nil && [array count] == 0){
NSLog(@"No results were returned.");
}
else if (error != nil){
NSLog(@"An error occurred = %@", error);
}
}]; //系统会一直更新数据,直到选择停止更新,因为我们只需要获得一次经纬度即可,所以获取之后就停止更新
[manager stopUpdatingLocation];
} - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
NSLog(@"定位失败:error: %@", error);
} @end

ios8代理解决问题

详情: http://www.cnblogs.com/peer/archive/2011/05/12/2044122.html

-

这是因为xcode升级造成的定位权限设置问题。

升级xcode6以后打开以前xcode5工程,程序不能定位。工程升级到xcode6编译时需要iOS8 要自己写授权,不然没权限定位。

解决方法: 首先在 info.plist里加入对应的缺省字段 ,值设置为YES(前台定位写上边字段,前后台定位写下边字段)

NSLocationWhenInUseUsageDescription //允许在前台获取GPS的描述

NSLocationAlwaysUsageDescription //允许在前、后台获取GPS的描述

  • 后方附图

iOS-系统定位功能的更多相关文章

  1. iOS 设备定位功能可用的判断

    if ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] ...

  2. iOS - (利用/调用系统定位获取当前经纬度与地理信息)

    这些天做iOS项目的时候,需要通过定位来拿到当期城市的名称.百度地图SDK有这个功能,但为了不依赖第三方,这里使用iOS自带框架CoreLocation来实现这个需求.iOS8出来之后,针对定位需要多 ...

  3. Flex AIR应用GPS定位功能(Android和IOS)

    说明: 使用AIR进行GPS定位功能实现时,会经常判断GPS是否打开.一般的官方或者书上的介绍的方法,测试后,只能对Android系统进行判断,而对ios系统则无法进行判断. 经过研究测试,终于解决实 ...

  4. 有关iOS系统中调用相机设备实现二维码扫描功能的注意点(3/3)

    今天我们接着聊聊iOS系统实现二维码扫描的其他注意点. 大家还记得前面我们用到的输出数据的类对象吗?AVCaptureMetadataOutput,就是它!如果我们需要实现目前主流APP扫描二维码的功 ...

  5. iOS定位功能

    1.实现定位功能需要导入系统库MapKit.framework 2.在iPhone手机上默认是禁止手机定位的,所以,要询问系统是否开启手机定位功能. 为了开启手机定位功能,还需在info.plist中 ...

  6. iOS各框架功能简述以及系统层次结构简单分析

    iOS各个框架所对应的功能简单介绍 iOS系统结构层次:

  7. ios开发之 -- 调用系统定位获取当前经纬度与地理信息

    ios 10定位: 在info.plist中加入: //允许在前台使用时获取GPS的描述 定位权限:Privacy - Location When In Use Usage Description / ...

  8. 检测iOS系统的定位服务

    [CLLocationManager locationServicesEnabled]检测的是整个iOS系统的位置服务开关

  9. ios中关于系统定位CLLocationManager的使用解析

    //1.添加定位管理委托协议 CLLocationManagerDelegate //2.初始化定位管理对象 self.locationManager=[[CLLocationManager allo ...

随机推荐

  1. Laravel之路——缓存使用

    1.使用Redis类 use Illuminate\Support\Facades\Redis; //设置指定 key 的值(覆盖老的value) Redis::setex('key','value' ...

  2. theano中的logisticregression代码学习

    1 class LogisticRegression (object): 2 def __int__(self,...): 3 4 #定义一些与逻辑回归相关的各种函数 5 6 def method1( ...

  3. 自己挖坑自己跳 之JsonMappingException: (was java.lang.NullPointerException) (through reference chain:)

    在Web项目中,我们经常会设计一些与界面相对应的JavaBean作为Entity,而为了兼容前台传入的空值,有些字段我们会用包装类型而不是基本类型.可是往往我的Entity已经设计完成,很多时候我们会 ...

  4. [BZOJ 3680] 吊打XXX 【模拟退火】

    题目链接:BZOJ - 3680 题目分析 这道题是SLYZ的神犇把JSOI的平衡点那道题改了一下题面变成了吊打GTY神犇..Orz 第一次写模拟退火,只能照着别人的代码写,我看的是PoPoQQQ神犇 ...

  5. eclipse设置字体大小

    eclipse是我们常用的开发工具.eclipse中的默认字体往往并不满足我们的需要,我经常要调节一下它的大小或者换一下风格.eclipse中的字体大小怎么改变呢? 工具/原料 eclipse 方法/ ...

  6. android 上传图片到服务器Tomcat(Struts2)

    在做android开发的时候,有时你会用到图片的上传功能,在我的android项目中,我是选中图片,点击上传多张图片 android客户端上传图片部分的代码如下: package com.exampl ...

  7. bzoj1212

    trie树最基本的应用了不难得到f[i]=f[j] if (s[j+1~i]∈dictionary);可以用trie树匹配 ..] of boolean; son:..,..] of longint; ...

  8. (转载)[MySQL技巧]INSERT INTO… ON DUPLICATE KEY UPDATE

    (转载)http://blog.zol.com.cn/2299/article_2298921.html MySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDA ...

  9. 10.8 OSInstall破解

    解决 无法完成您的购买,不兼容的问题 http://pan.baidu.com/share/link?shareid=2396730945&uk=1764629622

  10. [转载] cookie、JS记录及跳转到页面原来的位置

    额....如下 <!-- 定位页面的 Cookie function SetCookie(sName, sValue) { date = new Date(); s = date.getDate ...