SKMaps とも呼ばれる skobbler/telenav SDK を使用して Android アプリケーションを開発しています。現在、SKRouteManager と SKNavigation マネージャー、および対応するリスナーを使用して、単純な GPS ナビゲーション システムを実装しています。これまでのところ、Google API を使用して郵便番号を GPS の場所にジオコーディングすることで、ナビゲーションの目的地を設定できました。代替ルートもあり、SKNavigationListener の onReRoutingStarted() イベントは正しく機能しています。ただし、onDestinationReached() に問題があります。目的地に到着したときに呼び出されないようで、ナビゲーションが停止しません。そのため、運転を続けて目的地を通過すると、アプリは再びルートを変更し始めます。onDestinationReached() またはそれを実装する際の特別な要件に問題はありますか?
最初にルートを正常に計算するので、目的地を知る必要があり、他の方法で指定する必要がないため、機能するはずだと思いました。しかし、ルートの終わりに到達すると、アプリによってメソッドが呼び出されません。
また、SKNavigationListener イベントで別の問題が発生しました - onUpdateNavigationState(SKNavigationState navigationState)。メソッド内で、SKNavigationState オブジェクトが提供できるはずの情報の一部を取得しようとしています。問題は次のとおりです。
- Eclipse はメソッド getDistanceToDestination() を認識できません - クラス SKNavigationState 内で定義されていないかのように動作します。
- getCurrentAdviceCurrentStreetName() は null を返します
- 私が理解している限り、 getCurrentAdviceDistanceToAdvice() は別のアドバイスを受け取るポイントまでの距離を示し、 getCurrentAdviceDistanceToDestination() はルートの終点までの残りの距離を示します。どちらのメソッドも距離をメートル単位で返すことになっていますが、ルートの長さが 5 キロメートルしかない場合でも、非常に大きな数値 (10 億以上) が得られます。また、0 を返すこともあります。
- onUpdateNavigationState(SKNavigationState navigation state) は、ルートをたどりながら複数回呼び出され、そのたびにナビゲーションの状態に関する新しい情報を提供することになっています。複数回呼び出されますが、上記のメソッドを使用すると、同じ値が返され続けます (アプリケーションを再起動すると値が変わりますが、1 回のテストで同じ値が返されます)。
誰かが何か手がかりを持っているなら、何がうまくいかないのか. getCurrentSpeed() を使用して SKNavigationState オブジェクトから現在の速度を正常に取得できるため、非常に混乱します。しかし、どういうわけか、いくつかのメソッドは存在しないように見え、他のメソッドは意味をなさない値を返します。