SKNavigationListener与事件处理有关

时间:2014-06-05 19:11:22

标签: android navigation gps skmaps

我正在使用skobbler / telenav SDK(也称为SKMaps)开发Android应用程序。我目前正在使用SKRouteManager和SKNavigation管理器以及相应的Listeners实现一个简单的gps导航系统。到目前为止,我已经能够通过使用google api将邮政编码地理编码为gps位置来设置导航的目的地。我也有替代路由,SKNavigationListener的onReRoutingStarted()事件正常工作。但是,我在onDestinationReached()上遇到了问题 - 当我到达目的地时似乎没有被调用,所以导航不会停止。因此,如果我继续驾驶并通过目的地点,应用程序将重新开始重新路由我。在实现它时,onDestinationReached()或任何特殊要求是否存在问题?

我认为它应该有效,因为它首先成功地计算了路线,所以它应该知道目的地点,我不应该以任何其他方式指定它。但是当我到达路线的末端时,应用程序不会调用该方法。

我还遇到了SKNavigationListener事件的另一个问题 - onUpdateNavigationState(SKNavigationState navigationState)。在方法内部,我试图获取SKNavigationState对象应该能够提供给我的一些信息。问题如下:

  1. Eclipse无法识别方法getDistanceToDestination() - 就好像它没有在SKNavigationState类中定义。
  2. getCurrentAdviceCurrentStreetName()返回null
  3. 据我所知,getCurrentAdviceDistanceToAdvice()应该给我一个距离,我将收到另一个建议,getCurrentAdviceDistanceToDestination()应该给我剩余的路径终点距离。两种方法都应该以米为单位返回距离,但是当我的路线长度仅为5公里时,它们为我提供了一些非常大的数字(超过十亿)。此外,有时他们会返回0。
  4. onUpdateNavigationState(SKNavigationState导航状态)应该在跟踪路径时多次被调用,并且每次都向我提供有关导航状态的新信息。它确实被多次调用,但是当我使用上述方法时,它们会保持返回相同的值(如果我重新启动应用程序,则值会更改,但在单次测试期间,它们会给出相同的值)。
  5. 如果有人有任何线索可能会出错。这真的很令人困惑,因为我可以使用getCurrentSpeed()从SKNavigationState对象成功获取当前速度。但不知何故,有些方法似乎不存在,而其他方法则返回不合理的价值。

1 个答案:

答案 0 :(得分:0)

此问题是2.0.2 SDK版本的一个错误 - 它已在vs 2.1.0中修复(应该在2014年6月30日之前发布)