googlemaps / googlemaps/react-native-navigation-sdk

TurnByTurn JS payload diverges from the TS types: step field names, maneuver type, missing/empty fields

オープン
#641 コメント 1 件 リアクション 0 件 担当者 1 名 @jokerttu が担当を希望しています GitHub で見る
主要言語
TypeScript
スター
227
フォーク
38
平均マージ
5日 7時間
マージ済み PR(30日)
10

説明

While building CarPlay/Android Auto guidance on top of `onTurnByTurn` (SDK 0.16.3), we hit four places where the wire payload differs from the TypeScript declarations. Each cost us a real on-device defect (silently rejected car turn cards), so documenting them with sources:

1. **Step distance/time field names don't match.** `StepInfoSpec` (NativeNavModule) declares `distanceMeters`/`durationSeconds`, but both native layers emit `distanceFromPrevStepMeters`/`timeFromPrevStepSeconds` instead — see `ObjectTranslationUtil.getMapFromStepInfo` (Android) and `NavModule.mm`'s `getDictionaryFromStepInfo` (iOS). The spec-named fields are never present at runtime.

2. **`maneuver` is typed `string` but is a number on the wire.** Both platforms `putInt`/`numberWithInteger` the platform maneuver constant (which, helpfully, uses identical values 0–65 on both platforms).

3. **Fields emitted but untyped:** `fullRoadName` and `stepNumber` (both platforms), `roundaboutTurnNumber`/`exitNumber` (Android) are in the payload but absent from `StepInfoSpec`.

4. **`instruction` is empty on the final arrival tick** (iOS observed; the arrival step arrives with maneuver=DESTINATION and an empty instruction). Worth documenting since `instruction` reads as always-populated from the types.

Also: `TurnByTurnEvent` in the public API is an empty interface, so none of the above is even visible to consumers without reading native source. Happy to PR type updates if you'd take them — aligning `StepInfoSpec` with the actual emitters seems the minimal fix.

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。