0

我有一個Ti.Geolocation的問題,讓我瘋狂。目前只使用IOS平臺。我的目標是在移動電話時獲得儘可能高精度的GPS回傳。Ti.Geolocation回調只適用於運行KitchenSink

問題是,我已經複製了KitchenSink中geolocation.js的大部分代碼,下面顯示了相關部分。它對我來說看起來不錯,但是我得到的行爲很奇怪。

我只是沒有定期的GPS回調,當我走動!指南針正常工作,並始終給我回電。我也嘗試過不訂閱「標題」事件,但GPS行爲沒有改變。

只有一個事件可以用正確的數據觸發GPS回調,並且正在運行KitchenSink!切換到KitchenSink後面也給我一個回調,準確度在5到10之間。如果我不這樣做,我的準確度可能高達1500-2500(如果我得到回調的話,那就是)。

KitchenSink似乎工作正常,但我沒有看到那個應用程序做什麼,我不知道?!?

我已經在手機中關閉了Wifi,因此它不會打擾。這個問題非常令人沮喪,我現在花了三天的時間,有人可以幫忙嗎?我也嘗試過針對不同的SDK編譯(通常是2.1.1GA,但也是1.8.2)。不用找了。

if (locationServicesAvailable()) { 
    // APPLICATION LOGIC 
    ui.init(); 

    Ti.Geolocation.purpose = "Get Lat/Long of your current position"; 
    Ti.Geolocation.accuracy = Ti.Geolocation.ACCURACY_BEST; 

    Ti.Geolocation.distanceFilter = 10; 
    Ti.Geolocation.frequency = 0; /* as fast as possible */ 
    Ti.Geolocation.preferredProvider = Ti.Geolocation.PROVIDER_GPS; 

    if (Ti.Geolocation.hasCompass) { 
     // TURN OFF ANNOYING COMPASS INTERFERENCE MESSAGE 
     Ti.Geolocation.showCalibration = false; 
     // SET THE HEADING FILTER (THIS IS IN DEGREES OF ANGLE CHANGE) 
     // EVENT WON'T FIRE UNLESS ANGLE CHANGE EXCEEDS THIS VALUE 
     Ti.Geolocation.headingFilter = 45; 
     /* 
     Ti.Geolocation.getCurrentHeading(handleCompass); 
     Ti.Geolocation.addEventListener('heading', handleCompass); 
     */ 
    } 

    Ti.Geolocation.getCurrentPosition(handlePosition); 
    Ti.Geolocation.addEventListener('location', handlePosition); 

    ui.refresh.addEventListener('click', function(e) { 
     Ti.Geolocation.getCurrentPosition(handlePosition); 
    }); 
} 

回答

0

好吧,似乎我已經找到了我的問題的答案。這與設置Ti.Geolocation.ACCURACY_NEAREST_TEN_METERS的準確性一樣簡單。我使用的是IOS平臺,如果它很重要,我就位於瑞典(在農村)。不知道這個解決方案是否適用於每個人,但我已經看到了對這個問題的引用(http://developer.appcelerator.com/question/130596/strange-behavior-of-the-gps)和解決方案,所以我知道它存在。

不知道爲什麼ACCURACY_BEST不起作用,但它不適合我。當我獲得時間時,我會測試所有其他設置,但現在至少我可以繼續開發。

相關問題