日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

定位 - CoreLocation - 打印位置信息

發布時間:2024/10/12 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 定位 - CoreLocation - 打印位置信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 導入框架 <CoreLocation.framework>, 引入頭文件 import <CoreLocation/CoreLocation.h>;

2. 創建管理者對象 (strong)

#import "ViewController.h"

@interface ViewController ()<CLLocationManagerDelegate>

?

?/**? 定位管理者 ***/

@property (nonatomic, strong) CLLocationManager *mgr;

@end

?

@implementation ViewController?

?/**? 懶加載 ***/

- (CLLocationManager *)mgr{

? ? if (!_mgr) {

? ? ? ? _mgr = [[CLLocationManager alloc] init];

? ? }

? ? return _mgr;

}

?- (void)viewDidLoad {

? ? [super viewDidLoad];

?

? ? // 1. 創建CoreLocation管理者

?? ?

? ? // 2. 成為CoreLocaltion管理者的代理, 監聽獲取的位置

? ? self.mgr.delegate = self;

?? ?

? ? // 3. 設置屬性

? ? // 設置多久 獲取一次位置

//? ? self.mgr.distanceFilter = 500;

?? ?

? ? /**

?? ? ? kCLLocationAccuracyBestForNavigation -- 最佳導航

?? ? ? kCLLocationAccuracyBest; ? ? ? ? ? ? -- 最精準

?? ? ? kCLLocationAccuracyNearestTenMeters; -- 十米

?? ? ? kCLLocationAccuracyHundredMeters;? ? -- 百米

?? ? ? kCLLocationAccuracyKilometer;? ? ? ? -- 千米

?? ? ? kCLLocationAccuracyThreeKilometers;? -- 三千米

?

?? ? */

? ? // 設置定位精確度

? ? self.mgr.desiredAccuracy = kCLLocationAccuracyBestForNavigation;

?? ?

? ? /**

?? ? *? ios7 , 只要開始定位, 系統就會自動要求用戶對你的應用程序授權. 但是從ios8開始, 想要定位自己必須主動要求用戶授權,而且必須再info.plist文件中配置一項屬性, 才能彈出授權窗口.

?? ? ? ? NSLocationWhenInUseDescription,允許在前臺獲取GPS的描述

?? ? ? ? NSLocationAlwaysUsageDescription,允許在后臺獲取GPS的描述

?? ? */

?? ?

?? ?

? ? // 4. 請求授權定位

? ? if(IOS8){

? ? ? ? LogRed(@"ios 8");

?? ? ? ?

? ? ? ? // 主動要求用戶授權, 授權成功以后會調用對應的代理方法.

? ? ? ? [self.mgr requestAlwaysAuthorization]; // 請求前臺和后臺定位權限

//? ? ? ? [self.mgr requestWhenInUseAuthorization]; // 請求前臺定位權限

?? ? ? ?

?? ? ? ?

? ? }else{

? ? ? ? LogMagenta(@"ios 7");

?? ? ? ?

? ? ? ? // 3. 開始監聽

? ? ? ? [self.mgr startUpdatingLocation];

? ? }

}

?

/**

?*? 當授權狀態改變時, 調用此方法

?*

?*? @param manager 觸發事件的對象

?*? @param status? 授權狀態

?*/

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status

{

//

//? ? kCLAuthorizationStatusNotDetermined ? ---- 等待授權

//? ? kCLAuthorizationStatusRestricted, ? ? ---- 受限 -- 未授權

//? ? kCLAuthorizationStatusDenied? ? ? ? ? ---- 拒絕授權

//? ? kCLAuthorizationStatusAuthorizedAlways --- 前臺 后臺都授權

//? ? kCLAuthorizationStatusAuthorizedWhenInUse - 前臺授權

?? ?

? ? if (status == kCLAuthorizationStatusNotDetermined) {

? ? ? ? LogWhite(@"等待用戶授權");

? ? }else if (status == kCLAuthorizationStatusAuthorizedAlways ||

? ? ? ? ? ? ? status == kCLAuthorizationStatusAuthorizedWhenInUse)

? ? {

? ? ? ? LogRed(@"授權成功");

? ? ? ? // 開始定位

? ? ? ? [self.mgr startUpdatingLocation];

?? ? ? ?

? ? }else

? ? {

? ? ? ? LogGreen(@"授權失敗");

? ? }

}

?

#pragma mark - CLLocationManagerDelegate

/**

?*? 獲取到位置信息后就會調用

?*

?*? @param manager ? 觸發事件的對象

?*? @param locations 獲取到的位置

?*/

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

{

? ??

/**

?? ? *? // CLLocation

?? ? location.coordinate; 坐標, 包含經緯度

?? ? location.altitude; 設備海拔高度 單位是米

?? ? location.course; 設置前進方向 0表示北 90東 180南 270西

?? ? location.horizontalAccuracy; 水平精準度

?? ? location.verticalAccuracy; 垂直精準度

?? ? location.timestamp; 定位信息返回的時間

?? ? location.speed; 設備移動速度 單位是米/秒, 適用于行車速度而不太適用于不行

?? ? */

?? ?

? ? LogRed(@"%@",locations);

? ? // 1. 獲取最后一次定位的位置信息

? ? CLLocation *location = [locations lastObject];

?? ?

? ? LogYellow(@"%f --- %f ---%f",location.coordinate.latitude,location.coordinate.longitude,location.speed);

?? ?

//? ? [self.mgr stopUpdatingLocation];

}

?

轉載于:https://www.cnblogs.com/guangleijia/p/4825755.html

總結

以上是生活随笔為你收集整理的定位 - CoreLocation - 打印位置信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。