iPhone應用程式瞭解Locate定位技術

來源:互聯網
上載者:User

iPhone應用程式 瞭解Locate定位技術是本文要介紹的內容,其實使用iphone的定位系統開發軟體是很簡單的一件事,下面我們就來認識一下iphone的定位系統的使用。

1、Getting the User’s Current Location

擷取使用者當前位置。

擷取位置的方式有三種:GPS, cell tower triangulation蜂窩網站), 和 Wi-Fi Positioning Service (WPS).其中GPS是最精確的定位方式,但是在第一代iphone上沒有。GPS是通過讀取很多衛星微波訊號來確定當前位置的。蜂窩網站通過 iphone周圍的網站計算出來的,在蜂窩網站密集的地方使用這種技術可以達到一個準確的值,比如在城市但在蜂窩網站不密集的地方效果就沒那麼好了。最後一個WPS使用的是串連到Wi-Fi網路的IP地址來確定位置,這將會有較大的誤差。這三種方式都會消耗大量的電。

怎麼才能即實現定位功能又省電呢?下面的方法就可以解決:當使用Core Location時,可以選擇精確度,謹慎的選擇你所需要的準確度,可以協助你省很多電。Core Location使用的技術隱藏在應用程式中。我們無需選擇使用GPS、蜂窩網站技術還是WPS,我們只要告訴它我們需要的準確度它會自己決定選什麼技術來滿足我們的需求。

2.The Location Manager

Core Location的介面是很容易使用的。主要用到的類是CLLocationManager,就是通常說的Location Manager。為了使用Core Location我們需要建立Location Manager的實體:

 
  1. CLLocationManager *locationManager = [[CLLocationManager alloc] init];  

這樣我們就建立了 Location Manager的實體,但是我們還沒有開始定位。我們需要指派一個代理給Location Manager。當定位資訊改變時Location Manager將調用代理方法。定位的過程會花一段時間平均幾秒鐘。代理方法必須遵循CLLocationManagerDelegate協議。

3、Setting the Desired Accuracy

設定代理後,你還要設定需要的準確度。就像我們剛剛說的精確度越高越耗電。如果你只是要是應用程式確定是哪個國家或是哪個州那麼就不要設定很高的精確度。記住一點有時候你並不能得到你需要的精確度。

下面說一個設定代理和設定精確度的例子:

 
  1. locationManager.delegate = self;   
  2.  
  3. locationManager.desiredAccuracy = kCLLocationAccuracyBest;  

精確度使用的是一個double類型的常量。單位是米,所以如果你設定desiredAccuracy=10那麼精確度就是10米,這就告訴 Location Manager儘可能達到10米的精確度。還可以設定為其他常量:kCLLocationAccuracyBest,

 
  1. you can also use kCLLocationAccuracyNearestTenMeters, kCLLocationAccuracy   
  2. HundredMeters, kCLLocationAccuracyKilometer, and kCLLocationAccuracyThree   
  3. Kilometers.  

4、Setting the Distance Filter

預設情況是這樣的,每當位置改變時Location Manager就調用一次代理。通過設定distance filter可以實現當位置改變超出一定範圍時Location Manager才調用相應的代理方法。這樣可以達到省電的目的。

例如:locationManager.distanceFilter = 1000.0f;

如果設定預設值:

 
  1. locationManager.distanceFilter = kCLDistanceFilterNone;  

5、Starting the Location Manager

開始定位

當你轉備好為定位消耗電池時我們可以調用

 
  1. [locationManager startUpdatingLocation];  

來告訴 Location Manager開始定位

6、Using the Location Manager Wisely

如果你只需要確定當前位置而不需要進一步定位,當Location Manager查詢到當前位置時需要通知代理停止定位。

停止方法: [locationManager stopUpdatingLocation];

7、he Location Manager Delegate

Location Manager必須遵守CLLocationManagerDelegate協議,CLLocationManagerDelegate協議定義了兩個方法,並且這兩個方法都是可選的。其中一個方法是當確定當前位置或是位置資訊改變時調用。另一個方法是當遇到錯誤資訊時調用

8、Getting Location Updates

當Location Manager想通知它的代理當前位置時,它會調用

 
  1. locationManager:didUpdateToLocation:fromLocation:  

方法。

這個方法有3個參數第一個參數Location Manager。第二個參數是一個CLLocation對象用來確定當前位置,第三個是CLLocation 對象用來確定最近一次更新是的位置。該方法調用時,先前的location對象會被置空。

6、Getting Latitude and Longitude Using CLLocation

經緯度

位置資訊是通過使用CLLocation類的執行個體從Location Manager那裡得到的。這個類有5各屬性。latitude和longitude被封裝在coordinate屬性中。

擷取方式如下:

 
  1. CLLocationDegrees latitude = theLocation.coordinate.latitude;   
  2.  
  3. CLLocationDegrees longitude = theLocation.coordinate.longitude;  

CLLocation對象還可以告訴你精確度。

horizontalAccuracy屬性描述調整的中心點。horizontalAccuracy值越大越不精確。

CLLocation 還有一個叫altitude的屬性用來表示海拔

 
  1. CLLocationDistance altitude = theLocation.altitude;  

每一個CLLocation對象都有一個叫verticalAccuracy的屬性來判斷精確度。海拔數值可能會有verticalAccuracy大小的誤差,當verticalAccuracy為負值時,那是Core Location在通知你不能擷取海拔高度。

CLLocation的另一個屬性timestamp用來告訴Location Manager是什麼時候定位的。CLLocation還有一個執行個體方法來告訴你的兩個CLLocation對象之間的距離。這個方法叫:getDistanceFrom:

它是這樣工作的:

 
  1. CLLocationDistance distance = [fromLocation getDistanceFrom:toLocation];  

返回兩個時間段內的距離,有時候它是不考慮海拔的,所以要自己計算距離。

7、Error Notifications

如果Core Location不能指定你當前的位置,它將調用。CLLocation的第二個代理方法:locationManager:didFailWithError:,最常見的是使用者取消使用定位資訊。

小結:iPhone應用程式 瞭解Locate定位技術的內容介紹完了,希望本文對你有所協助!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.