IOS開發(fā)之CoreLocation地理定位

一、簡(jiǎn)介

  • 在移動(dòng)互聯(lián)網(wǎng)時(shí)代,移動(dòng)app能解決用戶的很多生活瑣事喉酌,比如導(dǎo)航:去任意陌生的地方周邊:找餐館、找酒店赐俗、找銀行、找電影院
    在上述應(yīng)用中弊知,都用到了地圖定位功能阻逮,在iOS開發(fā)中,要想加入這2大功能秩彤,必須基于2個(gè)框架進(jìn)行開發(fā)
    Map Kit :用于地圖展示Core Location :用于地理定位
    2個(gè)熱門專業(yè)術(shù)語(yǔ)LBS :Location Based ServiceSoLoMo :Social Local Mobile(索羅門)

二叔扼、CoreLocation框架的使用

CoreLocation框架使用前提
1.先導(dǎo)入框架:


2.導(dǎo)入主頭文件:
#import <CoreLocation/CoreLocation.h>
CoreLocation框架使用須知
1事哭、CoreLocation框架中所有數(shù)據(jù)類型的前綴都是CL
2、CoreLocation中使用CLLocationManager對(duì)象來(lái)做用戶定位
注意:用Xcode開發(fā)瓜富,模擬器沒(méi)有位置鳍咱,這里可以在調(diào)試中設(shè)置一個(gè)模擬位置:

三、CLLocationManager

CLLocationManager的常用操作
1.開始用戶定位

- (void)startUpdatingLocation;

2.停止用戶定位

- (void) stopUpdatingLocation;

3.當(dāng)調(diào)用了startUpdatingLocation方法后与柑,就開始不斷地定位用戶的位置谤辜,中途會(huì)頻繁地調(diào)用代理的下面方法

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

locations參數(shù)里面裝著CLLocation對(duì)象

四、CLLoaction

CLLocation用來(lái)表示某個(gè)位置的地理信息价捧,比如經(jīng)緯度丑念、海拔等等
1、經(jīng)緯度

@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;

2.海拔

@property(readonly, nonatomic) CLLocationDistance altitude;

3.路線结蟋,航向(取值范圍是0.0° ~ 359.9°脯倚,0.0°代表真北方向)

@property(readonly, nonatomic) CLLocationDirection course;

4.行走速度(單位是m/s)

@property(readonly, nonatomic) CLLocationSpeed speed;

5.計(jì)算2個(gè)位置之間的距離

-(CLLocationDistance)distanceFromLocation:(const CLLocation *)location

CLLocationManager

6.每隔多少米定位一次

@property(assign, nonatomic) CLLocationDistance distanceFilter;

7.定位精確度(越精確就越耗電)

@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;

CLLocationCoordinate2D

CLLocationCoordinate2D是一個(gè)用來(lái)表示經(jīng)緯度的結(jié)構(gòu)體,定義如下:

typedef struct {
           CLLocationDegrees latitude; // 緯度 
           CLLocationDegrees longitude; // 經(jīng)度
} CLLocationCoordinate2D;

一般用CLLocationCoordinate2DMake函數(shù)來(lái)創(chuàng)建CLLocationCoordinate2D

經(jīng)緯度了解

模擬位置

如果是模擬器嵌屎,需要設(shè)置模擬位置(經(jīng)緯度)朝帝都的經(jīng)緯度是:北緯40°推正,東經(jīng)116°


用戶隱私的保護(hù)

我們知道,蘋果對(duì)用戶的隱私保護(hù)的非常好宝惰,如果需要打開相機(jī)植榕、相冊(cè)等,需要用戶授權(quán)才可以掌测。
開發(fā)者可以在Info.plist中設(shè)置NSLocationUsageDescription說(shuō)明定位的目的(Privacy - Location Usage Description)




一旦用戶選擇了“Don’t Allow”内贮,意味著你的應(yīng)用以后就無(wú)法使用定位功能.為了嚴(yán)謹(jǐn)起見(jiàn),最好在使用定位功能之前判斷當(dāng)前應(yīng)用的定位功能是否可用CLLocationManager有個(gè)類方法可以判斷當(dāng)前應(yīng)用的定位功能是否可用

+ (BOOL)locationServicesEnabled;

CLGeocoder

使用CLGeocoder可以完成“地理編碼”和“反地理編碼”地理編碼:根據(jù)給定的地名汞斧,獲得具體的位置信息(比如經(jīng)緯度、地址的全稱等)什燕。反地理編碼:根據(jù)給定的經(jīng)緯度粘勒,獲得具體的位置信息。
-地理編碼方法

- (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;

-反地理編碼方法

- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler;
CLGeocodeCompletionHandler
CLGeocodeCompletionHandlertypedef void (^CLGeocodeCompletionHandler)(NSArray *placemarks, NSError *error);

這個(gè)block傳遞2個(gè)參數(shù)error :當(dāng)編碼出錯(cuò)時(shí)(比如編碼不出具體的信息)有值placemarks :里面裝著CLPlacemark對(duì)象

CLPlacemark

CLPlacemark的字面意思是地標(biāo)屎即,封裝詳細(xì)的地址位置信息1庙睡、地理位置

@property (nonatomic, readonly) CLLocation *location;

2、區(qū)域

@property (nonatomic, readonly) CLRegion *region;

3技俐、詳細(xì)的地址信息

@property (nonatomic, readonly) NSDictionary *addressDictionary;

4乘陪、地址名稱

@property (nonatomic, readonly) NSString *name;

5、城市

@property (nonatomic, readonly) NSString *locality;

測(cè)試代碼:

//
//  IWViewController.m
//  0717-CoreLocation
//
//  Created by kaiyi on 16-7-17.
//  Copyright (c) 2016年 kaiyi. All rights reserved.
//

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

@interface IWViewController ()<CLLocationManagerDelegate>

@property(nonatomic, strong) CLLocationManager *locMgr;

@end


@implementation IWViewController

// 初始化屬性值
-(CLLocationManager *)locMgr
{
    if(!_locMgr)
    {
        // 創(chuàng)建定位管理者
        // CLLocationManager *locMgr = [[CLLocationManager alloc] init];
        self.locMgr = [[CLLocationManager alloc] init];

        // 設(shè)置代理
        // locMgr.delegate = self;
         self.locMgr.delegate = self;

    }
    
    return _locMgr;
}


- (void)viewDidLoad
{
    [super viewDidLoad];
    
    
    // 開始定義用戶的位置
    [self.locMgr startUpdatingLocation];
    
    
}

/**
 *
 * 只要定位到用戶的位置雕擂,就會(huì)調(diào)用(調(diào)用頻率非常高)
 */
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    // 1.取出位置對(duì)象
    CLLocation *loc = [locations firstObject];
    
    // 2.取出經(jīng)緯度
    CLLocationCoordinate2D coordinate = loc.coordinate;
    
    // 3.打印經(jīng)緯度
    NSLog(@"經(jīng)度:%f-----緯度:----%f", coordinate.latitude, coordinate.longitude);
    
    NSLog(@"didUpdateLocations");
    
    // 停止定位
    [manager stopUpdatingHeading];
    
}


@end

轉(zhuǎn)自 IOS開發(fā)之CoreLocation地理定位--- segmentfault

作者 Corwien

感覺(jué)軌跡這塊的相關(guān)資料比較少啡邑,網(wǎng)上找的一些資料整理下來(lái)

相關(guān)資料:

地圖處理之基本使用匯總
iOS 原生地圖(MapKit、MKMapView)軌跡漸變
iOS原生地圖MKMapView添加半透明遮蓋物和軌跡起點(diǎn)井赌、終點(diǎn)等自定義annotation
iOS開發(fā)系列--地圖與定位

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谤逼,一起剝皮案震驚了整個(gè)濱河市贵扰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌流部,老刑警劉巖戚绕,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異枝冀,居然都是意外死亡舞丛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門果漾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)球切,“玉大人,你說(shuō)我怎么就攤上這事跨晴∨菲福” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵端盆,是天一觀的道長(zhǎng)怀骤。 經(jīng)常有香客問(wèn)我,道長(zhǎng)焕妙,這世上最難降的妖魔是什么蒋伦? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮焚鹊,結(jié)果婚禮上痕届,老公的妹妹穿的比我還像新娘。我一直安慰自己末患,他們只是感情好研叫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著璧针,像睡著了一般嚷炉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上探橱,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天申屹,我揣著相機(jī)與錄音,去河邊找鬼隧膏。 笑死哗讥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的胞枕。 我是一名探鬼主播杆煞,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了索绪?” 一聲冷哼從身側(cè)響起湖员,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瑞驱,沒(méi)想到半個(gè)月后娘摔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唤反,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年凳寺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彤侍。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡肠缨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盏阶,到底是詐尸還是另有隱情晒奕,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布名斟,位于F島的核電站脑慧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏砰盐。R本人自食惡果不足惜闷袒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岩梳。 院中可真熱鬧囊骤,春花似錦、人聲如沸冀值。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)列疗。三九已至焦除,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間作彤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工乌逐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竭讳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓浙踢,卻偏偏與公主長(zhǎng)得像绢慢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容