iOS學習48地圖

来源:http://www.cnblogs.com/gfxxbk/archive/2016/05/31/5547590.html
-Advertisement-
Play Games

一、地圖的簡介 在移動互聯網時代,移動app能解決用戶的很多生活瑣事,比如 導航:去任意陌生的地方 周邊:找餐館、找酒店、找銀行、找電影院 手機軟體:微信搖一搖、QQ附近的人、微博、支付寶等 在上述應用中,都用到了地圖和定位功能,在iOS開發中,要想加入這兩大功能,必須基於兩個框架進行開發 MapK ...


一、地圖的簡介

 在移動互聯網時代,移動app能解決用戶的很多生活瑣事,比如   

  導航:去任意陌生的地方

  周邊:找餐館、找酒店、找銀行、找電影院

  手機軟體:微信搖一搖、QQ附近的人、微博、支付寶等

 在上述應用中,都用到了地圖和定位功能,在iOS開發中,要想加入這兩大功能,必須基於兩個框架進行開發

  MapKit :用於地圖展示

  CoreLocation :用於地理定位

二、地圖定位(CoreLocation框架,地理編碼與反地理編碼)

 1、CoreLocation框架的使用

  • 導入框架  (iOS5之後不再需要)

  • 導入頭文件
#import <CoreLocation/CoreLocation.h>
  • CoreLocation框架使用須知

        CoreLocation 框架中所有數據類型的首碼都是CL

        CoreLocation 中使用 CLLocationManager 對象來做用戶定位 

 2、CLLocationManager的常用操作(詳細使用說明見註釋)

// 開始用戶定位
- (void)startUpdatingLocation;
// 停止用戶定位
- (void) stopUpdatingLocation;

// 每隔多少米定位一次
@property(assign, nonatomic) CLLocationDistance distanceFilter;
// 定位精確度(越精確就越耗電)
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;

// 當調用了startUpdatingLocation方法後,就開始不斷地定位用戶的位置,中途會頻繁地調用下麵的代理方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations; // 參數locations中的元素對象是CLLocation對象,是一系列的位置信息

// 當定位失敗的時候,會調用下麵的代理方法
- (void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(nullable CLRegion *)region withError:(NSError *)error;

  CLLocationAccuracy 是一個枚舉值

/*
最佳導航
  kCLLocationAccuracyBestForNavigation 
最精準
     kCLLocationAccuracyBest;
10米
     kCLLocationAccuracyNearestTenMeters; 
百米
     kCLLocationAccuracyHundredMeters; 
千米
     kCLLocationAccuracyKilometer; 
3千米
     kCLLocationAccuracyThreeKilometers;     
*/

 3、CLLocation

  CLLocation用來表示某個位置的地理信息,比如經緯度、海拔等等

// 經緯度
@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;

// 海拔
@property(readonly, nonatomic) CLLocationDistance altitude;

// 路線,航向(取值範圍是0.0° ~ 359.9°,0.0°代表正北方向)
@property(readonly, nonatomic) CLLocationDirection course;

// 行走速度(單位是m/s)
@property(readonly, nonatomic) CLLocationSpeed speed;

// 此方法可以計算2個位置(CLLocation)之間的距離
- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location

 4、CLLocationCoordinate2D

  CLLocationCoordinate2D 是一個用來表示經緯度的結構體,定義如下

typedef struct {
    CLLocationDegrees latitude; // 緯度
    CLLocationDegrees longitude; // 經度
} CLLocationCoordinate2D;

  一般用 CLLocationCoordinate2DMake 函數來創建 CLLocationCoordinate2D

 5、實現定位的步驟

  • 第一步:初始化定位管理器
self.manager = [[CLLocationManager alloc] init];
  • 第二步:進行隱私的判斷和授權    

  1> 進行定位服務是否開啟的判斷       

   若 locationServicesEnabled 為 NO,就跳轉到隱私界面進行設置

  2> 進行版本判斷(iOS8.0前後的定位方式不一樣)獲取版本數:[[[UIDevice currentDevice] systemVersion] integerValue]

  3> iOS8.0之後授權的操作
            ① 判斷授權狀態:authorizationStatus
                五種狀態枚舉值
                    kCLAuthorizationStatusNotDetermined: 用戶尚未做出決定是否啟用定位服務
                    kCLAuthorizationStatusRestricted: 沒有獲得用戶授權使用定位服務,可能用戶沒有自己禁止訪問授權
                    kCLAuthorizationStatusDenied:用戶已經明確禁止應用使用定位服務或者當前系統定位服務處於關閉狀態
                    kCLAuthorizationStatusAuthorizedAlways: 應用獲得授權可以一直使用定位服務,即使應用不在使用狀態(常用)
                    kCLAuthorizationStatusAuthorizedWhenInUse: 使用此應用過程中允許訪問定位服務(常用)
            ② 在授權請求之前需要在infoPlist文件中設置 NSLocationUsageDescription 允許定位內容
                authorizationStatus 為 kCLAuthorizationStatusAuthorizedWhenInUse 時使用NSLocationWhenInUseUsageDescription 進行設置
                authorizationStatus 為 kCLAuthorizationStatusAuthorizedAlways 時使用 NSLocationAlwaysUsageDescription 進行設置

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天比較閑所以就花點時間又寫了點東西。 相信這種價格表大家不會陌生 現在我就模仿它做一個簡單版本的。效果如下 首先需要兩個時間控制項,我這裡用的是HTML5裡面的時間控制項,這個沒限制喜歡用什麼就用什麼 直接上代碼吧!我都寫了註釋。 ...
  • 如題: ...
  • [Bootstrap](http://hovertree.com/menu/bootstrap/) 是由兩個 twitter 員工開發並開源的前端框架,非常火爆,而如此火爆自然有它的道理,在我們團隊的所有項目中正全面推行使用 Bootstrap,我想根據自己的實際使用體驗來說明一下為什麼要用 Boo ...
  • 在前端領域里,很多時候,一個簡單的功能可以有很多種不同的實現方式,今天就拿星期幾的不同腳本實現方法作為例子,希望能激發童鞋們更多的想法。 1、使用 if 語句: 2、使用switch case 語句: 3、神器,一句話解決: ...
  • 說說我自己的思路 首先需要一個初始div 然後就是滑鼠事件,想象一下拖動這個過程需要用到哪些事件。。。 1、滑鼠按鈕按下事件mousedown 2、滑鼠按鈕鬆開事件mouseup 3、滑鼠移動事件mousemove 第一步:給div添加滑鼠按鈕按下事件,這個事件需要完成以下事情 一、獲取div到瀏覽 ...
  • Fragment使用的基本知識點總結, 包括Fragment的添加, 參數傳遞和通信, 生命周期和各種操作. ...
  • 開發中有很多地方會用到自定義對話框,為了避免不必要的城府代碼,在此總結出一個工具類。 彈出對話框的地方很多,但是都大同小異,不同無非就是提示內容或者圖片不同,下麵這個類是將提示內容和圖片放到了自定義函數的參數中,並且是靜態,可以用類直接調用此函數。 對話框的xml文件佈局: Activity中彈出對 ...
  • 一、地圖的簡介 在移動互聯網時代,移動app能解決用戶的很多生活瑣事,比如: 導航:去任意陌生的地方。 周邊:找餐館、找酒店、找銀行、找電影院。 手機軟體:微信搖一搖、QQ附近的人、微博、支付寶等。 在上述應用中,都用到了地圖和定位功能,在iOS開發中,要想加入這兩大功能,必須基於兩個框架進行開發: ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...