成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

瘋狂ios講義之使用CoreLocation定位(4)

瘋狂ios講義之使用CoreLocation定位(4)9.4區(qū)域監(jiān)測

如果希望iOS設備進入某個區(qū)域發(fā)出通知,那么這種區(qū)域監(jiān)測的功能也被稱為臨近警告。所謂臨近警告的示意圖如圖9.6所示。

創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都做網站、成都網站設計、成都外貿網站建設、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯(lián)網時代的龍鳳網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

瘋狂ios講義之使用CoreLocation定位(4)

圖9.6臨近警告的示意圖

用戶設備不斷地臨近指定固定點,當與該固定點的距離小于指定范圍時,系統(tǒng)可以觸發(fā)相應的處理。用戶設備離開指定固定點,當與該固定點的距離大于指定范圍時,系統(tǒng)也可以觸發(fā)相應的處理。

iOS的區(qū)域監(jiān)測同樣可以使用CLLocationManager來實現(xiàn),監(jiān)聽設備是否進入/離開某個區(qū)域的步驟如下。

創(chuàng)建CLLocationManager對象,該對象負責獲取定位相關信息,并為該對象設置一些必要的屬性。對于區(qū)域監(jiān)測而言,CLLocationManager對象需要設置monitoredRegions屬性,該屬性值用于設置該設備監(jiān)聽的多個區(qū)域。

為CLLocationManager指定delegate屬性,該屬性值必須是一個實現(xiàn)CLLocationManagerDelegate協(xié)議的對象。實現(xiàn)CLLocationManagerDelegate協(xié)議時可根據(jù)需要實現(xiàn)協(xié)議中特定的方法。

調用CLLocationManager的startMonitoringForRegion:方法進行區(qū)域監(jiān)測。區(qū)域監(jiān)測結束時,可調用stopMonitoringForRegion:方法結束區(qū)域監(jiān)測。

當設備進入指定區(qū)域時,iOS系統(tǒng)將會自動激發(fā)CLLocationManager的delegate對象的locationManager:didEnterRegion:方法;當設備離開指定區(qū)域時,iOS系統(tǒng)將會自動激發(fā)CLLocationManager的delegate對象的locationManager:didExitRegion:方法,開發(fā)者可重寫這兩個方法對用戶進行提醒。

iOS提供了CLRegion來定義被監(jiān)測的區(qū)域,但實際編程中推薦使用CLCircularRegion(CLRegion的子類)創(chuàng)建圓形區(qū)域,創(chuàng)建CLCircularRegion對象時無非就是指定圓心、半徑等信息,非常簡單。下面示例會進行詳細示范。

新建一個SingleView Application,該應用無須修改界面設計文件,直接修改視圖控制器類的實現(xiàn)部分來監(jiān)測設備是否進入、離開某個區(qū)域。該示例的視圖控制器類的實現(xiàn)部分代碼如下。

程序清單:codes/09/9.4/RegionMonitor/RegionMonitor/FKViewController.m

@interface FKViewController ()<CLLocationManagerDelegate>

@property (retain,nonatomic) CLLocationManager*locationManager;

@end

@implementation FKViewController

- (void)viewDidLoad

{

[superviewDidLoad];

if([CLLocationManager locationServicesEnabled])

{

self.locationManager = [[CLLocationManager alloc] init];

self.locationManager.delegate = self;

// 定義一個CLLocationCoordinate2D作為區(qū)域的圓心

CLLocationCoordinate2D companyCenter;

companyCenter.latitude = 23.126272;

companyCenter.longitude = 113.395568;

// 使用CLCircularRegion創(chuàng)建一個圓形區(qū)域,半徑為500米

CLRegion* fkit = [[CLCircularRegionalloc] initWithCenter:companyCenter

radius:500 identifier:@"fkit"];

// 開始監(jiān)聽fkit區(qū)域

[self.locationManagerstartMonitoringForRegion:fkit];

}

else

{

// 使用警告框提醒用戶

[[[UIAlertView alloc] initWithTitle:@"提醒"

message:@"您的設備不支持定位" delegate:self

cancelButtonTitle:@"確定"otherButtonTitles: nil] show];

}

}

// 進入指定區(qū)域以后將彈出提示框提示用戶

-(void)locationManager:(CLLocationManager*)manager

didEnterRegion:(CLRegion *)region

{

[[[UIAlertView alloc] initWithTitle:@"區(qū)域檢測提示"

message:@"您已經【進入】瘋狂軟件教育中心區(qū)域內!" delegate:nil

cancelButtonTitle:@"OK" otherButtonTitles:nil] show];

}

// 離開指定區(qū)域以后將彈出提示框提示用戶

-(void)locationManager:(CLLocationManager*)manager

didExitRegion:(CLRegion *)region

{

[[[UIAlertView alloc] initWithTitle:@"區(qū)域檢測提示"

message:@"您已經【離開】瘋狂軟件教育中心區(qū)域!" delegate:nil

cancelButtonTitle:@"OK" otherButtonTitles:nil] show];

}

@end

正如上面程序中的粗體字代碼所看到的,第1行粗體字代碼創(chuàng)建了一個CLRegion對象作為被監(jiān)測區(qū)域,接下來調用CLLocationManager的startMonitoringForRegion:方法監(jiān)聽該設備是否進入/離開指定區(qū)域。

當該設備進入或離開指定區(qū)域時,iOS系統(tǒng)都會自動激發(fā)CLLocationManager的delegate對象的相應方法,上面程序重寫了這兩個方法對用戶進行提醒。

編譯、運行該程序,如果將模擬器的位置設為{23.126272, 113.395568},此時設備將會進入“瘋狂軟件教育中心區(qū)域內”,系統(tǒng)將會顯示如圖9.7所示的提示。

編譯、運行該程序,如果將模擬器的位置設為其他位置,使之離開{23.126272, 113.395568}超過500米,此時設備將會離開“瘋狂軟件教育中心區(qū)域內”,系統(tǒng)將會顯示如圖9.8所示的提示。

瘋狂ios講義之使用CoreLocation定位(4)

圖9.7進入區(qū)域提示

瘋狂ios講義之使用CoreLocation定位(4)

圖9.8離開區(qū)域提示

本文題目:瘋狂ios講義之使用CoreLocation定位(4)
網站網址:http://jinyejixie.com/article2/pggiic.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號網站建設網站營銷、自適應網站營銷型網站建設、云服務器

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網站建設
沙田区| 淳安县| 辉县市| 留坝县| 平顺县| 东海县| 永和县| 锡林郭勒盟| 微山县| 上犹县| 伊金霍洛旗| 邳州市| 富川| 察隅县| 盐城市| 成安县| 咸丰县| 本溪| 宿松县| 西乡县| 高淳县| 松阳县| 蓬安县| 中宁县| 方正县| 象山县| 黎川县| 新乡市| 长泰县| 江山市| 绍兴县| 周宁县| 温州市| 徐水县| 阿合奇县| 沙河市| 台北市| 安顺市| 西华县| 商河县| 定襄县|