【讀書筆記】iOS-定位服務與地圖應用開發

来源:http://www.cnblogs.com/yang-guang-girl/archive/2017/12/18/8056068.html
-Advertisement-
Play Games

一,定位服務。 iOS設備能提供3種不同的定位途徑: 1,WiFi定位,通過查詢一個WiFi路由器的地理位置的信息,比較省電;iPhone,Ipod touch 和iPad都可以。 2,蜂窩式行動電話基站定位,通過移動運營商基站定位,只有iPhone,3G版本的iPod touch和iPad可以採用 ...


一,定位服務。

 

iOS設備能提供3種不同的定位途徑:

1,WiFi定位,通過查詢一個WiFi路由器的地理位置的信息,比較省電;iPhone,Ipod touch 和iPad都可以。

2,蜂窩式行動電話基站定位,通過移動運營商基站定位,只有iPhone,3G版本的iPod touch和iPad可以採用。

3,GPS衛星定位,通過3~4顆GPS衛星位置定位,最為準確,但是耗電量大,不能遮擋,iPhone,iPod touch和iPad都可以採用。

 

iOS不像android系統在定位服務編程時可以指定採用哪種途徑進行定位。iOS的API把底層這些細節屏蔽掉了,開發人員和用戶並不知道現在設備採用哪種方式進行定位,iOS系統會根據設備的情況和周圍的環境,採用一太最佳的解決方案。這個方案是這樣的:如果能夠接收GPS信息,那麼設備優先採用GPS定位,否則採用WiFi或蜂窩基站定位,在WiFi和蜂窩基站之間優先使用WiFi,如果無法連接WiFi才使用蜂窩基站定位。

 

總體來說,GPS定位的優點是準確,覆蓋面廣闊,缺點是不能被遮擋(例如在建築物里收不到GPS衛星信號),GPS開啟後比較費電。蜂窩基站不僅誤差比較大,而且會耗費用戶流量費。而WiFi定位應該是最經濟實惠的。

 

二,定位服務編程

 

1,精度越高請求獲得位置信息的頻率越高,這就意味著設備越耗電。

2,調用方法startUpdatingLocation定位服務就會開啟,它根據設定的條件,不斷地請求回調新的位置信息。因此開啟這個方法一定要慎重,要在最合適的時候開,在視圖控制器的聲明周期方法中viewWillAppear:方法是最合適的。停止服務的方法是stopUpdatingLocation,它是視圖控制器的viewWillAppear:方法中調用的,代碼如下:

-(void)viewWillDisappear:(BOOL)animated

{

    [super viewWillDisappear:animated];

    //停止定位

    [_locationManager stopUpdatingLocation];

}

 

 三,地理信息反編碼

 

地標類屬性:

1,addressDictionary,地址信息的字典,包含一些鍵值對,其中的鍵是在Address Book framework(地址簿框架)中定義好的。

2,ISOcountryCode,ISO國家代號;

3,country,國家信息。

4,postalCode,郵政編碼。

5,administrativeArea,行政區域信息。

6,subAdministrativeArea,行政區域附加信息。

7,locality,指定城市信息。

8,subLocality,指定城市信息附加信息。

9.thoroughfare,指定街道級別信息。

10,subThoroughfare,指定街道級別的附加信息。

 

四,關於定位服務的測試。

 

定位服務應用的測試和運行有兩個選擇:模擬器和設備。原則上是先通過模擬器,然後使用設備測試。由於定位服務的特別,使用設備測試需要我們拿著設備到現場進行測試,因此有的時候是有局限性的,我們不可能為了測試香港有沒有叫“南城”的飯館去一趟香港。所以,模擬器的測試,有時候是不可替代的。

 

一般使用www.mygeoposition.com通過的GPX工具。這是一個免費提供地理信息編碼和反編碼,生成KML和GPX文件等服務的網站。

 

五,使用iOS6蘋果地圖。

 

在iOS6之後不再使用谷歌地圖了,而是使用蘋果自己的地圖,但是API編碼介面沒有太大的變化,使得開發人員不需要學習新東西才能進行地圖的開發。這是負責任的做法。

iOS應用程式 使用MapKit API開發地圖應用程式。其核心是MKMapView類使用。

 

六,使用程式外地圖。

 

應用中調用程式外的地圖有兩個選擇:iOS6蘋果地圖和谷歌Web地圖。

 

七,調用谷歌的Web地圖API進行開發地圖應用程式,但這裡所涉及的技術都是Web技術了,而非本地技術。

 

八,使用本地化的百度地圖。

 

1,百度地圖使用C++編寫,我們需要把我們工程中一個*.m文件改成*.mm,就可以了。*.mm說明這個文件是Object-C++代碼文件,即代碼模塊中可以有C++代碼。

2,需要註意的是蘋果iOS SDK提供了CLGeocoder類,也可以實現地理信息的編碼和反編碼,但是如果你採用的地圖是百度地圖,那麼在地理信息編碼和反編碼時候,也最好採用百度地圖提供的API。

 

 

 

參考資料:《iOS網路編程與雲端應用-最佳實踐》


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

-Advertisement-
Play Games
更多相關文章
  • 今天按照網上和書上的要求,將目前的kubernetes網路換成flannel。其實配置起來還是很簡單的,但是一旦出現了問題,將很難解決。 配置方法我這邊不給出了。因為網上這樣的教程一大把,在說下去也無意義。但是錯誤還是遇見了幾個。 我的環境:centos7(master+2個node )+ etcd ...
  • 第1章 keepalived服務說明 1.1 keepalived是什麼? Keepalived軟體起初是專為LVS負載均衡軟體設計的,用來管理並監控LVS集群系統中各個服務節點的狀態,後來又加入了可以實現高可用的VRRP功能。因此,Keepalived除了能夠管理LVS軟體外,還可以作為其他服務( ...
  • 測試系統:centos7 修改連接埠 修改配置文件 去掉port 22的註釋,添加新的埠配置 自定義埠選擇建議在萬位的埠(如:10000 65535之間) 不要直接刪除port 22,以免遺忘新SSH埠或者埠不能訪問,我們還能繼續訪問SSH,保存並退出 重啟SSH配置 重新連接VPS並刪 ...
  • 1.1 集群是什麼 簡單地說,集群就是指一組(若幹個)相互獨立的電腦,利用高速通信網路組成的一個較大的電腦服務系統,每個集群節點(即集群中的每台電腦)都是運行各自服務的獨立服器。這些伺服器之間可以彼此通信,協同向用戶提供應用程式、系統資源和數據,並以單一系統的模式加以管理。當用戶客戶機請求集群 ...
  • 1、Flume概念 flume是分散式日誌收集系統,將各個伺服器的數據收集起來併發送到指定地方。 Flume是Cloudera提供的一個高可用、高可靠、分散式的海量日誌採集、聚合和傳輸的系統。Flume支持在日誌系統中定製各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各 ...
  • 一、什麼是序列 序列是用於生成唯一、連續序號的對象。序列可以是升序的,也可以是降序的,Oracle用戶想創建序列必須有創建序列的角色許可權。 二、創建序列的SQL語法 創建序列:CREATE SEQUENCE SEQ_NAME START WITH n INCREMENT BY n2 MAXVALUE ...
  • 本文是學習時的自我總結,用於日後溫習。如有錯誤還望諒解,不吝賜教。 此處附上一篇個人認為寫的比較好的博客,轉自枝葉飛揚的博文:http://blog.sina.com.cn/s/blog_605f5b4f010188lp.html### 將Map的輸出作為Reduce的輸入的過程就是Shuffle了 ...
  • mysql每次建立一個socket連接(connect)時,這個socket都會占用一定記憶體。即使你關閉(close)連接時,並不是真正的關閉,而是處於睡眠(sleep)狀態。 當你下次再進行連接時,就可以快速啟動當前處於睡眠狀態的socket。但是過多的socket會占用大量的記憶體,為解決這個問題 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...