定位功能

实现iOS定位功能首要步骤:当时是新建一个工程啦~ !~

步骤一:导入系统定位的类库  CoreLocation.framework

步骤二:

需要在plist文件中添加默认缺省的字段“NSLocationAlwaysUsageDescription”,这个提示是:“允许应用程序在您并未使用该应用程序时访问您的位置吗?”NSLocationAlwaysUsageDescription对应的值是告诉用户使用定位的目的或者是标记。(无论有用没用应用程序,都获得用户位置)

需要在plist文件中添加默认缺省的字段“NSLocationWhenInUsageDescription”,这个时候的提示是:“允许应用程序在您使用该应用程序时访问您的位置吗?”

接下来,上代码

步骤三:

首先在需要定位的类中导入头文件,并生成定位管理者属性

#import "ViewController.h"
//系统定位的类库
#import <CoreLocation/CoreLocation.h>

@interface ViewController () <CLLocationManagerDelegate>

@property (nonatomic, strong) CLLocationManager *manager;

@end

步骤四:

在viewDidLoad方法中,初始化定位管理者、设置代理、并开启定位功能

- (void)viewDidLoad {
    [super viewDidLoad];

    //1.创建位置管理者
    self.manager = [[CLLocationManager alloc] init];

    //判断当前的系统版本号是否大于8.0
    if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
        //若能进入If 说明当前系统是大于8.0

        //向用户请求我们的程序使用位置
        [self.manager requestAlwaysAuthorization];
        [self.manager requestWhenInUseAuthorization];
    }

    //设置定位的更新距离(每移动10米更新一次,实质上是让代理方法重新走一次)
    self.manager.distanceFilter = 10.0f;

    //设置代理啊
    self.manager.delegate = self;

    //开启定位功能
    [self.manager startUpdatingLocation];
}

步骤五:

实现定位代理方法

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    NSLog(@"locations = %@",locations);

    //获得当前的卫星的位置
    CLLocation *location = (CLLocation *)[locations lastObject];

    //从位置信息中获取经纬度
    double lat = location.coordinate.latitude;
    double lon = location.coordinate.longitude;
    NSLog(@"lat=====%f,lon+++++%f",lat,lon);

    //使用位置 反编码 解析 位置信息
    //创建位置反编码的对象
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    //使用该对象获得位置信息
    [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error){
        //遍历解析出来的位置信息
        for (CLPlacemark *placemark in placemarks) {
            NSLog(@"name = %@",placemark.locality);
        }
    }];
}

得到打印的结果是

2016-01-23 08:35:24.186 LocationDemo[798:258157] locations = (
    "<+22.65055322,+114.04342625> +/- 65.00m (speed -1.00 mps / course -1.00) @ 16/1/23 \U4e2d\U56fd\U6807\U51c6\U65f6\U95f4 \U4e0a\U53488:35:24"
)
2016-01-23 08:35:24.187 LocationDemo[798:258157] lat=====22.650553,lon+++++114.043426
2016-01-23 08:35:25.117 LocationDemo[798:258157] name = 深圳市

ps:反地理编码是通过经纬度得到地理位置信息

  反地理编码的方法:

  

CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    //使用该对象获得位置信息
    [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error){
        //遍历解析出来的位置信息
        for (CLPlacemark *placemark in placemarks) {
            NSLog(@"name = %@",placemark.locality);
        }
    }];

   地理编码是通过地理位置得到经纬度信息

  地理编码的方法:

  

[geocoder geocodeAddressString:@"深圳市" completionHandler:^(NSArray *placemarks, NSError *error) {
        for (CLPlacemark *placemark in placemarks) {
            NSLog(@"%@",placemark.location);
        }
    }];

  通过触摸事件来停止更新定位

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //停止定位更新
    [self.manager stopUpdatingLocation];
}

当然定位功能还有很多,例如获取手机的朝向等等,这里就不一一列举了。

时间: 2024-11-09 14:33:43

定位功能的相关文章

【MUI】百度地图定位功能

博主最近进行一款APP开发,需要用到定位功能,经过一番折腾,终于搞定,不废话,代码如下 mui.plusReady(function() { var longitude, latitude; //var map = new BMap.Map("container"); // navigator.geolocation.getCurrentPosition(function(position) { // longitude = position.coords.longitude; //

Android解决WebView的定位功能、视频全屏播放、下载功能、页面Url的处理、进度条处理

解决WebView的定位功能.视频全屏播放.下载功能.页面Url的处理.进度条处理 事先说明: 定位功能在安卓6.0需要用户手动确认权限后才能使用 若需在安卓6.0适配WebView的定位功能,则需要在WebView中手动增加用户权限访问 详细可百度安卓6.0权限管理系统,或者采用第三方封装好的权限管理类进行编写(如Bmob) 如果对内容不理解的话,可参考最后的整个类的代码 如果对BaseActivity这个抽象类不理解的话,可以查看下面一篇文章对BaseActivity的介绍 步骤一:webv

IOS-CLLocationManager的定位功能

注:在测定位功能的时候,比较多人会奇怪,为什么代码已经写好了,可是测试的时候,只有首次启动模拟器定位代码才有效.那是因为模拟器除了首次启动的时候会有默认的定位位置(默认位置是苹果美国总部),其它时候都需要你手动的去开启,在调试->位置->自定位置(填写经纬度). .h 1 #import <CoreLocation/CoreLocation.h> 2 3 // 定位管理器,作用是:定位当前用户的经度和纬度 4 @property (nonatomic, strong) CLLoca

iOS 地图和定位功能

1:定位使用的生活场景 在移动互联网时代,移动app能解决用户的很多生活琐事,比如导航:去任意陌生的地方 周边:找餐馆.找酒店.找银行.找电影院 在上述应用中,都用到了地图和定位功能 2:iOS定位依赖的框架 在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发 Map Kit :用于地图展示(比较重量级) Core Location :用于地理定位 Map Kit的定位是基于Core Location的 iOS定位热门术语: LBS :Location Based Service So

iOS 自带定位功能

第一步:导入头文件 #import <CoreLocation/CoreLocation.h> #import <CoreLocation/CLLocationManagerDelegate.h> 第二步:设置代理 CLLocationManagerDelegate 第三步:创建一个属性 @property(nonatomic, strong) CLLocationManager *locationManager; 第四步:初始化     //定位服务管理对象初始化     _lo

浅谈百度地图的简单开发之结合方向传感器实现定位功能(三)

  今天我们来谈下百度地图的定位功能.在此之前我已经将百度地图的基本地图大概说了下,事实上百度地图的基本功能还有非常多的内容. 感兴趣的能够到百度地图的开发人员的官网看看.今天就開始来讲下百度地图中的定位功能. 今天所讲的百度地图所涉及的内容主要有:基本定位的实现.自己定义定位图标.结合方向传感器定位,选择定位中的几种模式(罗盘模式,普通模式,尾随模式). 一.基本定位的实现: 所谓定位无非就是获取到一个地方所处地球的经纬度坐标.这个反映到地图中就是一个点.可是怎么去实现一个定位呢?? 首先,须

iOS开发 -- 实现简单的定位功能

一.定位的说明 现在的应用很多都拥有定位功能.确实,定位功能是很好用的,对我们的生活也有很大的帮助.例如帮你找酒店,找银行等等... 要实现定位有三种方式:   1. 手机基站:(依赖于手机机战(信号塔)的密集程度)  2. GPS:卫星定位,精确度高,但是费电     3. WIFI:根据上网的IP地址,(必须要能上网) 而我们开发中一般都是用GPS定位比较多,我们要实现定位需要用到CoreLocation框架,CoreLocation中主要包含了定位.地理编码(包括反编码)功能. 在iOS8

项目开发--------地图与定位功能

一.定位. 1.定位功能 : 定位是一个很常用的功能,如一些地图软件打开之后如果用户允许软件定位的话,那么打开软件后就会自动锁定到当前位置,如果用户手机移动那么当前位置也会跟随着变化.要实现这个功能需要使用Core Loaction中CLLocationManager类. 相关方法:(在前面的方法和属性属于较为常用和重要的) 示例代码: //地理定位----------------------------------------------- - (void)viewDidLoad { [sup

CSS+JS实现的div层定位功能和自动消失

CSS顶部固定功能,有空的时候研究了一下CSS的定位功能,做了这个大家熟悉的顶部固定功能,鼠标移上去顶部会消失,并可判断浏览器是否支持audio元素!顶部元素在时间控制下也可自动消失. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns