Skip to content

Commit 9280761

Browse files
fix: waypoint conversion issue while using placeId (#439)
* fix: route segments issue while using placeid
1 parent f172971 commit 9280761

File tree

3 files changed

+41
-6
lines changed

3 files changed

+41
-6
lines changed

example/integration_test/t03_navigation_test.dart

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,40 @@ void main() {
742742
tolerance,
743743
);
744744

745-
/// Set Destination.
745+
/// Test route segments with placeId
746+
final Destinations placeIdDestinations = Destinations(
747+
waypoints: <NavigationWaypoint>[
748+
NavigationWaypoint.withPlaceID(
749+
title: "Golden Gate Bridge",
750+
placeID: "ChIJw____96GhYARCVVwg5cT7c0",
751+
),
752+
],
753+
displayOptions: NavigationDisplayOptions(showDestinationMarkers: false),
754+
);
755+
final NavigationRouteStatus placeIdStatus =
756+
await GoogleMapsNavigator.setDestinations(placeIdDestinations);
757+
expect(placeIdStatus, NavigationRouteStatus.statusOk);
758+
await $.pumpAndSettle(timeout: const Duration(seconds: 1));
759+
760+
final List<RouteSegment> placeIdBeginRouteSegments =
761+
await GoogleMapsNavigator.getRouteSegments();
762+
final RouteSegment? placeIdBeginCurrentSegment =
763+
await GoogleMapsNavigator.getCurrentRouteSegment();
764+
765+
/// The route segments list is not empty.
766+
expect(placeIdBeginRouteSegments.length, greaterThan(0));
767+
768+
/// The current route segment.
769+
expect(
770+
placeIdBeginCurrentSegment,
771+
isNotNull,
772+
reason: 'Current segment is null.',
773+
);
774+
775+
// Clear placeId waypoints
776+
await GoogleMapsNavigator.clearDestinations();
777+
778+
/// Set Destination with target.
746779
final Destinations destinations = Destinations(
747780
waypoints: <NavigationWaypoint>[
748781
NavigationWaypoint.withLatLngTarget(

ios/google_navigation_flutter/Sources/google_navigation_flutter/Convert.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -288,10 +288,12 @@ enum Convert {
288288
{
289289
.init(
290290
title: gmsNavigationWaypoint.title,
291-
target: .init(
292-
latitude: gmsNavigationWaypoint.coordinate.latitude,
293-
longitude: gmsNavigationWaypoint.coordinate.longitude
294-
),
291+
target: CLLocationCoordinate2DIsValid(gmsNavigationWaypoint.coordinate)
292+
? .init(
293+
latitude: gmsNavigationWaypoint.coordinate.latitude,
294+
longitude: gmsNavigationWaypoint.coordinate.longitude
295+
)
296+
: nil,
295297
placeID: gmsNavigationWaypoint.placeID,
296298
preferSameSideOfRoad: gmsNavigationWaypoint.preferSameSideOfRoad,
297299
preferredSegmentHeading: Int64(gmsNavigationWaypoint.preferredHeading)

lib/src/method_channel/convert/navigation_waypoint.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ extension ConvertNavigationWaypointDto on NavigationWaypointDto {
2121
/// Converts [NavigationWaypointDto] to [NavigationWaypoint]
2222
NavigationWaypoint toNavigationWaypoint() => NavigationWaypoint(
2323
title: title,
24-
target: target?.toLatLng(),
24+
target: placeID == null ? target?.toLatLng() : null,
2525
placeID: placeID,
2626
preferSameSideOfRoad: preferSameSideOfRoad,
2727
preferredSegmentHeading: preferredSegmentHeading,

0 commit comments

Comments
 (0)