iOS定位和位置信息獲取

来源:http://www.cnblogs.com/shouce/archive/2016/06/08/5569195.html
-Advertisement-
Play Games

要實現地圖、導航功能,往往需要先熟悉定位功能,在iOS中通過Core Location框架進行定位操作。Core Location自身可以單獨使用,和地圖開發框架MapKit完全是獨立的,但是往往地圖開發要配合定位框架使用。在Core Location中主要包含了定位、地理編碼(包括反編碼)功能。 ...


要實現地圖、導航功能,往往需要先熟悉定位功能,在iOS中通過Core Location框架進行定位操作。Core Location自身可以單獨使用,和地圖開發框架MapKit完全是獨立的,但是往往地圖開發要配合定位框架使用。在Core Location中主要包含了定位、地理編碼(包括反編碼)功能。

定位是一個很常用的功能,如一些地圖軟體打開之後如果用戶允許軟體定位的話,那麼打開軟體後就會自動鎖定到當前位置,如果用戶手機移動那麼當前位置也會跟隨著變化。要實現這個功能需要使用Core Loaction中CLLocationManager類。首先看一下這個類的一些主要方法和屬性:

 

iOS 8 還提供了更加人性化的定位服務選項。App 的定位服務不再僅僅是關閉或打開,現在,定位服務的啟用提供了三個選項,「永不」「使用應用程式期間」和「始終」。同時,考慮到能耗問題,如果一款 App 要求始終能在後臺開啟定位服務,iOS 8 不僅會在首次打開 App 時主動向你詢問,還會在日常使用中彈窗提醒你該 App 一直在後臺使用定位服務,並詢問你是否繼續允許。在iOS7及以前的版本,如果在應用程式中使用定位服務只要在程式中調用startUpdatingLocation方法應用就會詢問用戶是否允許此應用是否允許使用定位服務,同時在提示過程中可以通過在info.plist中配置通過配置Privacy - Location Usage Description告訴用戶使用的目的,同時這個配置是可選的。
但是在iOS8中配置配置項發生了變化,可以通過配置NSLocationAlwaysUsageDescription或者NSLocationWhenInUseUsageDescription來告訴用戶使用定位服務的目的,並且註意這個配置是必須的,如果不進行配置則預設情況下應用無法使用定位服務,打開應用不會給出打開定位服務的提示,除非安裝後自己設置此應用的定位服務。同時,在應用程式中需要根據配置對requestAlwaysAuthorization或locationServicesEnabled方法進行請求。由於本人機器已經更新到最新的iOS8.1下麵的內容主要針對iOS8,使用iOS7的朋友需要稍作調整。

 

 

下麵我就總結了下定位功能的簡單實現。

定位和反查位置信息要載入兩個動態庫 CoreLocation.framework 和 MapKit.framework 一個獲取坐標一個提供反查

RootViewController的.h文件中,

 

RootViewController的.m文件中,

button的響應方法,當點擊button的時候開始等位

 

locationManager的代理方法

 

 

iOS從6.0開始地圖數據不再由谷歌驅動,而是改用自家地圖,當然在國內它的數據是由高德地圖提供的。這樣一來,如果在iOS6.0之前進行地圖開發的話使用方法會有所不同,基於目前的情況其實使用iOS6.0之前版本的系統基本已經寥寥無幾了,所有在接下來的內容中不會再針對iOS5及之前版本的地圖開發進行介紹。

在iOS中進行地圖開發主要有兩種方式,一種是直接利用MapKit框架進行地圖開發,利用這種方式可以對地圖進行精準的控制;另一種方式是直接調用蘋果官方自帶的地圖應用,主要用於一些簡單的地圖應用(例如:進行導航覆蓋物填充等),無法進行精確的控制。當然,本節重點內容還是前者,後面的內容也會稍加提示。

用MapKit之前需要簡單瞭解一下MapKit中地圖展示控制項MKMapView的的一些常用屬性和方法,具體如下表:

 

 

詳細請參考:http://www.cnblogs.com/kenshincui/p/4125570.html


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

-Advertisement-
Play Games
更多相關文章
  • 一、背景 1、背景顏色用background-color屬性,例如:body{background-color:red} 2、用圖像做背景用background-image屬性,例如body{background-image:ul1(23.jpg) 3、背景由圖片重覆平鋪用backgroud-rep ...
  • 函數的四種存在形態: 1.函數形態 2.方法形態 將函數賦值給某一個對象的成員,那麼就稱為方法 3.構造器形態 4.上下文形態 1.函數形態: var foo = function() { alert(this); //this是window }; 2.方法形態: o = {}; o.foo = f ...
  • 概述 當我們在談論面向對象編程時,我們在談論什麼?我們首先談論的是一些概念:對象、類、封裝、繼承、多態。對象和類是面向對象的基礎,封裝、繼承和多態是面向對象編程的三大特性。 JavaScript提供了對象卻缺乏類,它不能像C#一樣能顯式地定義一個類。但是JavaScript的函數功能非常靈活,其中之... ...
  • ...
  • E:first-child解釋:E的父元素的第一個子元素正好是E,給這個E定義樣式 E:last-child解釋:E的父元素的最後一個子元素正好是E,給這個E定義樣式 E:only-child解釋:E的父元素只有一個子元素,這個正好是E,給這個E定義樣式 E:empty解釋:E元素沒有子元素和文本內 ...
  • 今天在製作焦點輪播圖的時候,遇到一個問題,在使用style.left獲取圖片的位置時,怎麼也獲取不到。換用offsetLeft就能夠成功獲取到了。雖然實現了我想要的效果,但是還是不甘心啊,沒有找到原因,心裡就是怪怪的,於是我翻開JavaScript高級程式設計,將style.left和offsetL ...
  • CSS3 target 偽類不得不說那些事兒(純CSS實現tab切換) CSS3 target 偽類不得不說那些事兒(純CSS實現tab切換) 是不是覺得target有點眼熟?! 今天要講的不是HTML的<a>標簽裡面有個target屬性。 target偽類是css3的新屬性。 說到偽類,對css屬 ...
  • Activity: String myArguments; public String getarguments() { return myArguments; } public void setarguments(String title) { this.myArguments = title; ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...