#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()<CLLocationManagerDelegate>
//必須把CLLocationManger聲明屬性
@property (nonatomic, strong) CLLocationManager *mgr;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1.初始化manager對(duì)象
self.mgr = [CLLocationManager new];
//2.詢問/征求用戶定義允許(iOS8+)
if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) {
//需要用戶的同意(僅僅是在使用期間/前臺(tái))+Info.plist添加key
[self.mgr requestWhenInUseAuthorization];
//征求前臺(tái)和后臺(tái)都定位+Info.plist添加key
// [self.mgr requestAlwaysAuthorization];
} else {
//直接定位
[self.mgr startUpdatingLocation];
}
//3.設(shè)置代理
self.mgr.delegate = self;
}
//監(jiān)聽用戶的狀態(tài)(同意/不同意)
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
if (status == kCLAuthorizationStatusAuthorizedWhenInUse) {
//用戶同意前臺(tái)定位; 開始定位(開始更新位置)
//系統(tǒng)默認(rèn)每一秒發(fā)送一次請(qǐng)求(不能改)
//定位的精確度(默認(rèn)精度是最高精度/耗電;其他的設(shè)置相對(duì)不耗電)
self.mgr.desiredAccuracy = kCLLocationAccuracyHundredMeters;
//位置的更新頻率(減少didUpdateLocations方法的調(diào)用;模擬器沒有什么用處)
self.mgr.distanceFilter = 10000;//單位:米
// [self.mgr startUpdatingLocation];
//V2:保證只發(fā)送一次請(qǐng)求(模擬器不靠譜)
[self.mgr requestLocation];
} else if (status == kCLAuthorizationStatusDenied) {
//用戶沒有同意定位
NSLog(@"用戶不同意定位....");
}
}
//[self.mgr startUpdatingLocation];
//監(jiān)聽用戶的位置觸發(fā)下面的方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {
//獲取用戶的最新位置(數(shù)組的最后一個(gè)對(duì)象)
CLLocation *location = [locations lastObject];
NSLog(@"緯度%f; 經(jīng)度%f", location.coordinate.latitude, location.coordinate.longitude);
//調(diào)用停止定位服務(wù)(不會(huì)再觸發(fā)這個(gè)方法)
[self.mgr stopUpdatingLocation];
//設(shè)置mgr為nil,一定只調(diào)用一次
// self.mgr = nil;//因?yàn)檎{(diào)用requestLocation方法
}
//失敗獲取用戶的位置
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
NSLog(@"服務(wù)器返回失敗:%@", error);
}
@end
iOS中用CoreLocation實(shí)現(xiàn)定位
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 1、首先得引入CoreLocation系統(tǒng)框架 2、導(dǎo)入頭文件 遵循代理 import <CoreLocation...
- 今天做iOS項(xiàng)目的時(shí)候,需要通過定位來拿到當(dāng)期城市的名稱。百度地圖SDK有這個(gè)功能,但為了不依賴第三方,這里我用i...
- 基于位置的服務(wù)可以讓App實(shí)現(xiàn)個(gè)性化定制,比如以前微信中附近的人和搖一搖,大眾點(diǎn)評(píng)和美團(tuán)中附近的商家等等.有了用戶...
- 定位功能介紹 關(guān)于定位開發(fā)一般用兩種方法實(shí)現(xiàn),一種使用高德百度的第三方SDK,另一種使用蘋果自帶的CoreLoca...
- From http://developer.android.youdaxue.com/training/index...