googlemaps / googlemaps/react-native-navigation-sdk

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

Đang mở
#641 1 bình luận 0 reaction 1 người được giao Được @jokerttu nhận Xem trên GitHub
Ngôn ngữ chính
TypeScript
Star
227
Fork
38
Merge trung bình
4 ngày 8 giờ
Pull request đã merge (30 ngày)
16

Mô tả

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.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.