【问题标题】:Titanium geolocation tracking not work correctlyTitanium 地理定位跟踪无法正常工作
【发布时间】:2017-05-09 15:32:13
【问题描述】:

我正在构建一个需要跟踪用户位置的应用,我正在使用

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 进行测试

【问题讨论】:

    标签: android ios geolocation titanium appcelerator


    【解决方案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
        },...
    

    【讨论】:

    • 当我只是更改 iOS ACCURACY_BEST 的准确度 --> ACCURACY_BEST_FOR_NAVIGATION 它工作正常。但我不明白为什么 ACCURACY_BEST 之前有效?
    猜你喜欢
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 2016-03-07
    • 2016-01-06
    相关资源
    最近更新 更多