//
//  ViewController.m
//  LBS
//
//  Created by tonnyhuang on 15/8/28.
//  Copyright (c) 2015年 tonnyhuang. All rights reserved.
//

#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>

//首先,我们需要在工程中导入CoreLocation系统框架。然后在我们的控制器中引入头文件。
//然后,声明一个CLLocationManager对象作为成员变量,用于定位获取经纬度坐标,并遵守协议CLLocationManager的协议。
@interface ViewController ()<CLLocationManagerDelegate>
{
    CLLocationManager *_locationManager;
}

@end

@implementation ViewController

//实现其中的代理方法
#pragma mark - CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation {
    //获取经度
    NSLog(@"经度 == %lf", newLocation.coordinate.longitude);
    //获取纬度
    NSLog(@"纬度 == %lf", newLocation.coordinate.latitude);
    //获取当前所在的城市名
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    //根据经纬度反向地理编码出地址信息
    [geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) {
        CLPlacemark *placemark = [placemarks objectAtIndex:0];
        NSLog(@"%@", placemark.name);
        //获取城市
        NSString *city = placemark.locality;
       
        //四大直辖市的城市信息无法通过locality获得,只能通过获取省份的方法来获得(如果city为空,则可知为直辖市
       
        if (!city) {
            city = placemark.administrativeArea;
        } else if (error == nil && [placemarks count] == 0){
            NSLog(@"no result were returned");
        } else if (error != nil) {
            NSLog(@"error = %@", error);
        }
        NSLog(@"city = %@", city);
    }];
    //系统会一直更新数据,直到选择停止更新,因为我们只需要获得一次经纬度即可,所以获取之后就停止更新
}

//最后在viewDidLoad中初始化定位管理器。
- (void)viewDidLoad {
    [super viewDidLoad];
    [self initializeLocationService];
}

- (void)initializeLocationService {
    //初始化定位管理器
    _locationManager = [[CLLocationManager alloc] init];
    //设置代理
    _locationManager.delegate = self;
    //设置定位精确度到米
    _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    //设置过滤器为无
    _locationManager.distanceFilter = kCLDistanceFilterNone;
    //开始定位
    [_locationManager requestAlwaysAuthorization];
    //取得定位权限,有两个方法,取决于你的定位使用情况
    [_locationManager startUpdatingLocation];
}

//如果需要正常定位,相对iOS7而言,iOS8需要额外处理两个地方。
//1. 工程的plist文件里面添加两个字段:NSLocationAlwaysUsageDescription,

//NSLocationWhenInUseUsageDescription,type类型均为string,值可以根据你的需要填写(也可以不填),填写的内容会展示在APP提示用户是否允许定位的alert内容里面,具体效果可以自行测试,这里就不额外截图。
这儿的位置不要错误  在上边的info.plist中添加字段
//2. 调用定位方法之前需要额外调用一个函数,直接在上面iOS7初始化定位服务的方法里面修改即可,具体如下:

// 开始定位
// 取得定位权限,有两个方法,取决于你的定位使用情况
// 一个是requestAlwaysAuthorization,一个是requestWhenInUseAuthorization
//[_locationManager requestAlwaysAuthorization];//这句话ios8以上版本使用。
//[_locationManager startUpdatingLocation];

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

转载于:https://www.cnblogs.com/tian-sun/p/5019975.html

使用系统的CoreLocation定位相关推荐

  1. iOS开发 --- 定位功能(系统框架CoreLocation)

    最近在做定位功能,只需要获取当前位置信息,包括经纬度.位置等,不需要持续获取. 对CoreLocation的封装.将定位相关的代码从 Controller 中分离,封装到 NSObject 对象中.采 ...

  2. 使用CoreLocation定位

    CoreLocation框架(CoreLocation.framework)可用于定位设备当前的经纬度,通过该框架,应用程序可通过附近的蜂窝基站.WIFI信号或者GPS等信息计算用户位置. iOS S ...

  3. 漫谈 ClickHouse 在实时分析系统中的定位与作用

    ClickHouse 是一款由俄罗斯Yandex公司开源的OLAP数据库,拥有着卓越的性能表现,在官方公布的基准测试中,ClickHouse的平均响应速度是Vertica的2.63倍.InfiniDB ...

  4. 物流系统车辆仓库定位的实现——基于RFID定位的实现方法

    2019独角兽企业重金招聘Python工程师标准>>> 物流系统车辆仓库定位的实现--基于RFID定位的实现方法 RFID射频识别技术以其非接触.可重复使用.快速扫描.数据容量大.使 ...

  5. 因为计算机丢失user32.dll,Win7系统出现无法定位动态链接库user32.dll错误提示解决方法...

    在使用电脑过程中,如果某些文件丢失或缺失损坏的话,那么会导致无法关联相关应用程序,无法正常使用电脑系统等等.有用户在运行某些软件时出现"无法定位程序输入点dwmhintdxupdate于动态 ...

  6. win10系统地图无法定位服务器,Win10无法启用定位功能(灰色)解决办法

    Win10在超极本等电脑上可以使用定位功能,但也用户反映定位功能无法使用,打开定位时按键为灰色,由于win10定位无法使用,导致地图等使用定位服务的应用无法正常运行. Win10定位打不开故障现象: ...

  7. 基于Android系统的高精度定位SDK方案

    内容简介 1.Android经典架构 2.Android高精度SDK架构设计说明 3.Android高精度SDK系统层技术设计详解 课程实录 一.Android经典架构 Android系统的架构分为四 ...

  8. android+集成北斗定位,基于Android系统的北斗定位通信手持设备研究

    摘要: 卫星导航系统广泛应用于交通运输,军事活动,野外作业,抗险救灾等重要领域,其重要程度关系国家重大利益.我国北斗卫星导航系统日趋完善,研发基于北斗系统的地面手持终端对于开发利用北斗导航卫星系统非常 ...

  9. 安卓开启位置服务器,安卓系统打开gps定位服务器地址

    安卓系统打开gps定位服务器地址 内容精选 换一换 安卓模拟器(Android Virtual Device),简称AVD,可以模拟安卓设备并将其运行在服务器上.利用AVD,您可以对安卓应用进行原型设 ...

最新文章

  1. 1-2-3 CodeForces - 863C(规律+思维)
  2. C++和Opencv4.5 实现全景图像拼接
  3. [壹刊]Azure AD(四)知识补充-服务主体
  4. jssdk分享设置_JSSDK自定义分享
  5. Knapsack Cryptosystem【折半+查找】
  6. 常量的定义与使用 1006 c#
  7. C#生成dll, VS或unity调用
  8. 三年一个人使用虚幻引擎(UDK)开发的一个游戏心路
  9. print to pdf in windows 7
  10. 计算机类学术期刊SCI/EI期刊核心期刊有哪些?
  11. 2.12 变形工具的使用 [Ps教程]
  12. 劝学篇翻译软件测试,《劝学篇》 全文、注释、翻译和赏析 - 可可诗词网
  13. AR增强现实技术解读
  14. H5 vue单页面 活体检测
  15. 四万亿,让多少人彻夜不眠!
  16. 【面试题】MyBatis面试题
  17. vue2[初级] vuex状态集中式管理
  18. 各种SQL子查询实例
  19. Unity使用AVProVideo播放透明视频
  20. html网页设计阶段性测试题

热门文章

  1. 可观测性PHP秩判据,线性系统的可控性与可观测性
  2. Linux系统文件属性,什么是Linux系统的文件属性?
  3. 文件服务器有病毒,服务器共享文件会被病毒加密吗
  4. java字符串笔试题_五道Java常见笔试题及答案汇总
  5. 三菱plcfx5u指令手册_从西门子200的PLC程序来看三菱FX5U的PLC程序
  6. 你了解的继承方式html,法定继承、遗嘱继承、遗赠,这三种房产过户方式你了解多少?...
  7. dw连接服务器文档类型,dw怎么连接服务器的数据库
  8. 在java继承机制中 父类中的私有_Java中子类能继承父类的私有属性吗?
  9. 零基础mysql项目实例_MySQL-零基础开发
  10. 服务器2012系统在dos卸载,Windows系统下彻底删除Windows.old 文件夹的方法