2017-05-09 55 views
1

我建設,需要跟蹤用戶位置的應用程序,我使用鈦地理位置跟蹤無法正常工作

Ti.Geolocation.accuracy = Ti.Geolocation.ACCURACY_BEST; 
Ti.Geolocation.distanceFilter = 0; 
Ti.Geolocation.preferredProvider = Ti.Geolocation.PROVIDER_GPS 
Ti.Geolocation.addEventListener('location', locationChange); 

在iOS上,當設備處於該事件不經常開的舉措,當它的發射我沒有航向和速度(甚至測試了駕駛時)

... 
heading : -1, 
speed : -1 
... 

,但如果我的背景(如計劃)運行其他導航應用的事件不斷解僱,我已經航向和設備的速度,如果我只是因爲其他應用程序纔得到這些事件。

其Android手機上的事件一樣的問題是不是與TI SDK 5.1.2和5.5.1

回答

1

這絆倒了我在過去的正確

測試發射。添加 Ti.Geolocation.accuracy = Ti.Geolocation.ACCURACY_BEST_FOR_NAVIGATION;

另請注意,距離過濾器中的非常小的數字可能會導致一些問題。

我用這個

if (OS_IOS) { 
    Ti.Geolocation.accuracy = Ti.Geolocation.ACCURACY_BEST_FOR_NAVIGATION; 
    Ti.Geolocation.distanceFilter = Alloy.CFG.minUpdateDistance; 
    Ti.Geolocation.preferredProvider = Ti.Geolocation.PROVIDER_GPS; 
    Ti.Geolocation.pauseLocationUpdateAutomatically = true; 
    Ti.Geolocation.activityType = Ti.Geolocation.ACTIVITYTYPE_OTHER_NAVIGATION; 
} else { //Android 
    Ti.Geolocation.Android.manualMode = true; 
    var gpsProvider = Ti.Geolocation.Android.createLocationProvider({ 
     name:    Ti.Geolocation.PROVIDER_GPS, 
     minUpdateTime:  Alloy.CFG.minAge/1000, 
     minUpdateDistance: Alloy.CFG.minUpdateDistance 
    }); 

    var gpsRule = Ti.Geolocation.Android.createLocationRule({ 
     provider: Ti.Geolocation.PROVIDER_GPS, 
     accuracy: Alloy.CFG.accuracy, 
     maxAge: Alloy.CFG.maxAge, 
     minAge: Alloy.CFG.minAge, 
    }); 

    Ti.Geolocation.Android.addLocationProvider(gpsProvider); 
    Ti.Geolocation.Android.addLocationRule(gpsRule); 
    Ti.Geolocation.Android.manualMode = true; 
} 

的Alloy.CFG設置在config.json文件中設置。

{ 
"global": { 
    "minUpdateDistance": 10, 
    "os:android": { 
    "accuracy": 20, 
    "minAge": 10000, 
    "maxAge": 30000 
    },... 
+0

當我只是更改iOS ACCURACY_BEST的準確性 - > ACCURACY_BEST_FOR_NAVIGATION它的工作正常。 但我不明白爲什麼ACCURACY_BEST它的工作原理? – genocsb