簡體   English   中英

iPhone-即使打開了用戶的定位服務,LocationManager也不會收斂?

[英]iPhone - LocationManager doesn't converge even though a user's Location Services are on?

有誰知道即使開啟定位服務,也可能導致locationManager無法收斂到某個值?

編輯1-locationManager對於某些用戶而言工作正常,但對於其他用戶而言,其位置永遠不會更新。 用戶位置永遠不會更新的設備具有GPS,因為這些設備是iPhone 5,iPad3,iPhone 4等。我想知道它們是否在鄉下太遠並且總是在室內。 GPS,WiFi,手機信號塔無法到達? 但是他們以某種方式上網...

編輯2-進一步說明:用戶可以訪問Internet,因為他們可以在我的Web服務器上創建新帳戶。 而且,當locationManager使用下面的#2收斂於一個值時,我的Web服務器上的gps位置就會更新,但是永遠不會發生。 用戶在應用程序中的設備上停留的時間足以回答10個問題並上傳他們的照片。 如果用戶可以訪問互聯網,那是否沒有足夠的時間讓locationManager收斂?

編輯3-發生另一件事:在網站上創建用戶帳戶時,用戶的gps_lat設置為0。當用戶使用iPhone上的locationManager更新網站上的gps_lat時,gps_lat的更新值為(null )。 什么會導致locationManager產生輸出=(空)?

  1. 我使用以下代碼檢查定位服務是否處於打開狀態:

      BOOL locationServicesDenied = ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied); 
  2. 然后,當locationManager與以下代碼融合時,我將更新用戶在網站上的位置:

    -(void)locationManager:(CLLocationManager *)經理didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

     if((newLocation.horizontalAccuracy > 0.0f) && (newLocation.horizontalAccuracy < 7000.0f){ [self update_website:self]; } 

但是update_website永遠不會被調用。 這使我認為newLocation.horizo​​ntalAccuracy永遠不會低於7000。

有誰知道為什么即使開啟位置服務也無法使locationManager收斂?

您是否設置了位置管理器的delegate屬性,並在其上調用了startUpdatingLocation

[myLocationManager setDelegate:self];
[myLocationManager startUpdatingLocation];

編輯:我認為這只是在測試設備上發生的。 如果是在用戶設備上,則精度完全有可能超過7000m。 如果用於修復的唯一方法是蜂窩無線電(沒有GPS,沒有WiFi),則根據蜂窩塔的密度,精度約為1-10k。 在線用戶(以太網或WiFi)不能保證其WiFi位於已知(和映射)點的數據庫中。

如果沒有錯誤,並且GPS沒有足夠的信號來計算位置,則不會呼叫該代表。 GPS將繼續嘗試獲取位置,但是如果設備位於地下(例如),它將什么也不會得到(除非存在緩存的位置)。

你等了足夠長的時間嗎? 即使設備具有GPS信號但沒有數據網絡(WiFi / Cell),位置管理器也無法通過數據網絡獲取衛星星歷表。 獲取GPS位置將花費更長的時間,時間為2-10分鍾。 輔助GPS更快,但需要數據連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM