googlemaps / googlemaps/react-native-navigation-sdk
TurnByTurn JS payload diverges from the TS types: step field names, maneuver type, missing/empty fields
- 主要语言
- TypeScript
- 星标
- 227
- 派生
- 38
- 平均合并
- 4 天 8 小时
- 30 天内合并 PR
- 16
描述
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 还没有评估数据。