LocationDemo定位

  1 #import "ViewController.h"
  2 #import <CoreLocation/CoreLocation.h>
  3 @interface ViewController ()<CLLocationManagerDelegate>
  4
  5 @property (nonatomic,strong)CLLocationManager *manager ;
  6 @end
  7
  8 @implementation ViewController
  9
 10 - (void)viewDidLoad {
 11     [super viewDidLoad];
 12
 13     /*
 14      定位的方式
 15      1.手机基站:(依赖于手机站(信息塔)的密集程度)
 16      2.GPS卫星定位:精确度高,但是费电
 17      3.WIFI:上网的IP地址,(必须要能上网)
 18      */
 19
 20     //定位管理器
 21     self.manager = [[CLLocationManager alloc] init];
 22
 23 //    if (![CLLocationManager locationServicesEnabled]) {
 24 //
 25 //        NSLog(@"定位服务当前可能尚未打开,请设置打开!");
 26 //
 27 //        return ;
 28 //    }
 29
 30
 31
 32
 33
 34     //判断当前的系统版本号
 35     if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
 36
 37         //说明当前的系统是大于或者等于8.0的系统版本号
 38
 39         // 需要在plist文件中添加默认缺省的字段“NSLocationAlwaysUsageDescription”,这个提示是:“允许应用程序在您并未使用该应用程序时访问您的位置吗?”NSLocationAlwaysUsageDescription对应的值是告诉用户使用定位的目的或者是标记。
 40
 41         //需要在plist文件中添加默认缺省的字段“NSLocationWhenInUsageDescription”,这个时候的提示是:“允许应用程序在您使用该应用程序时访问您的位置吗?”
 42
 43         //向用户请求我们的程序使用位置
 44         [self.manager requestAlwaysAuthorization];
 45         [self.manager requestWhenInUseAuthorization];
 46
 47     }
 48
 49     //设置定位精度(更新距离)---实质就是让代理方法重新走一次
 50     self.manager.distanceFilter = 10.0 ;
 51
 52     //设置代理
 53     _manager.delegate = self ;
 54
 55     //启动实时定位的功能
 56     [_manager startUpdatingLocation];
 57
 58     //启动手机朝向的功能
 59 }
 60
 61 #pragma mark --更新最新的位置
 62 -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
 63 {
 64
 65 //    NSLog(@"%@",locations);
 66
 67     //获取当前的最新位置
 68     CLLocation *location = (CLLocation *)[locations lastObject];
 69
 70     //从位置信息中获取经纬度
 71     double lat = location.coordinate.latitude ;
 72     double lon = location.coordinate.longitude ;
 73
 74     NSLog(@"%f   %f",lat,lon);
 75
 76
 77     //使用位置反编码解析位置信息
 78     CLGeocoder *geocoder = [[CLGeocoder alloc] init];
 79
 80     //使用该对象获得该位置信息
 81
 82     [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
 83
 84         //遍历解析出来的位置信息
 85         for (CLPlacemark *placeMark in placemarks) {
 86
 87             NSLog(@"%@",placeMark);
 88
 89             /*
 90             NSString *name=placemark.name;  //地名
 91             NSString *thoroughfare=placemark.thoroughfare;  //街道
 92             NSString *subThoroughfare=placemark.subThoroughfare; //街道相关信息,例如门牌等
 93             NSString *locality=placemark.locality; // 城市
 94             NSString *subLocality=placemark.subLocality; // 城市相关信息,例如标志性建筑
 95             NSString *administrativeArea=placemark.administrativeArea; // 州
 96             NSString *subAdministrativeArea=placemark.subAdministrativeArea; //其他行政区域信息
 97             NSString *postalCode=placemark.postalCode; //邮编
 98             NSString *ISOcountryCode=placemark.ISOcountryCode; //国家编码
 99             NSString *country=placemark.country; //国家
100             NSString *inlandWater=placemark.inlandWater; //水源、湖泊
101             NSString *ocean=placemark.ocean; // 海洋
102             NSArray *areasOfInterest=placemark.areasOfInterest; //关联的或利益相关的地标
103
104             */
105         }
106
107     }];
108
109
110     //如果不需要实时定位,使用完即使关闭定位服务
111     [_manager stopUpdatingLocation];
112
113 }
114
115
116 #pragma amrk --更新手机朝向
117 -(void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
118 {
119     //获得手机里面的磁场方面
120     int header = newHeading.magneticHeading ;
121
122     if ((315<=header && header<=360) || (0<header && header<=45)){
123
124         NSLog(@"朝向北面");
125     }
126     else if (45< header && header<=135){
127
128         NSLog(@"朝向东面");
129     }
130     else if (135< header && header<=225){
131
132         NSLog(@"朝向南面");
133     }
134     else if (225< header && header<315){
135
136         NSLog(@"朝向西面");
137     }
138
139 }
时间: 2024-10-13 23:59:27

LocationDemo定位的相关文章

android百度地图定位开发

一.activity import android.app.Activity; import android.graphics.Point;import android.graphics.PointF;import android.os.Bundle;import android.os.Message;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu

百度地图开发的学习(二)——地图定位

定位是地图开发的必经重要的环节,我也在不断学习中,就自己了解写一下这些. 一.配置 1.百度的定位是有自己jar包和so文件的,所以记得将它们配置到对应的文件夹中并加载进工程里.具加载方法在学习一里面就有了,这里就不细讲了. 2.在百度的配置方法中导入完库文件后,还要进行声明libs源文件 如果是将jar包和so文件全部放入libs文件中,就需要这样的声明了,本人也试过,但是格式有点偏差,build.gradle会报错,改成下面这样就可以了. sourceSets { main { jniLib

定位功能

实现iOS定位功能首要步骤:当时是新建一个工程啦~ !~ 步骤一:导入系统定位的类库  CoreLocation.framework 步骤二: 需要在plist文件中添加默认缺省的字段“NSLocationAlwaysUsageDescription”,这个提示是:“允许应用程序在您并未使用该应用程序时访问您的位置吗?”NSLocationAlwaysUsageDescription对应的值是告诉用户使用定位的目的或者是标记.(无论有用没用应用程序,都获得用户位置) 需要在plist文件中添加默

百度定位SDK实现获取当前经纬度及位置

使用Android自带的LocationManager和Location获取位置的时候,经常会有获取的location为null的情况,并且操作起来也不是很方便,在这个Demo里我使用了百度地图API中的定位SDK,可以一次性获取当前位置经纬度以及详细地址信息,还可以获取周边POI信息,同时可以设定位置通知点,当到达某一位置时,发出通知信息等方式来告知用户.jar包下载以及官方文档请参照:百度定位SDK,前提是需要注册百度开发者账号.下面来看看定位的基本原理,目前,定位SDK可以通过GPS.基站

详解Android定位

相信很多的朋友都有在APP中实现定位的需求,今天我就再次超炒冷饭,为大家献上国内开发者常用到的三种定位方式.它们分别为GPS,百度和高德,惯例先简单介绍下定位的背景知识. 什么是GPS定位.基站定位和Wi-Fi定位? 1.GPS定位:根据设备GPS芯片和GPS卫星实现定位,GPS定位在室内是不可以使用的.GPS定位精度和芯片本身以及实际使用环境有关,一般情况下,GPS定位精度在10m左右. 2.基站定位:根据设备获取的基站信息实现定位,基站定位精度一般不受使用环境影响,主要和基站的覆盖半径有关.

Android百度地图API集成二《定位》

书接上回 ↑ 基础地图请查看Android百度地图API集成一<基础地图>: 地址http://www.cnblogs.com/dhr125/p/5969980.html 1.在Application标签中声明SERVICE组件 <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> <

android 百度地图定位开发2

先下载了示例代码 进行配置(可查看开发 指南 Hello BaiDuMap) 第一步:创建并配置工程(具体方法参见工程配置部分的介绍): 第二步:在AndroidManifest中添加开发密钥.所需权限等信息: (1)在application中添加开发密钥 <application> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="开发者 key" /> &l

具体解释Android定位

相信非常多的朋友都有在APP中实现定位的需求,今天我就再次超炒冷饭,为大家献上国内开发人员经常使用到的三种定位方式.它们分别为GPS,百度和高德,惯例先简介下定位的背景知识. 什么是GPS定位.基站定位和Wi-Fi定位? 1.GPS定位:依据设备GPS芯片和GPS卫星实现定位,GPS定位在室内是不能够使用的.GPS定位精度和芯片本身以及实际使用环境有关,普通情况下.GPS定位精度在10m左右. 2.基站定位:依据设备获取的基站信息实现定位,基站定位精度一般不受使用环境影响.主要和基站的覆盖半径有

Android 百度sdk5.0定位

在开发中可能 会用到诸如“定位出当前所在城市,所在位置的经纬度”等功能.一次性的定位肯能定位不成功,可能经纬度未读出来,也可能是地址信息或者城市信息未读出来.此时就需对定位后拿到的信息做判断,加入没有拿到理想的数据,则再定位一次,知道定位成功并且拿到理想的数据. 代码如下 public class LocationCurrentCity { private LocationClient locationClient; private Context context; public Locatio