openGoogleMapsNavigation static method

void openGoogleMapsNavigation(
  1. GoogleMapData googleMapData
)

Opens Google Maps with turn-by-turn navigation to the given place. Uses native app schemes so the Maps app starts navigation when installed.

Implementation

static void openGoogleMapsNavigation(GoogleMapData googleMapData) {
  if (!kIsWeb && Platform.isAndroid) {
    String query;
    if (googleMapData.address != null && googleMapData.address!.isNotEmpty) {
      query = Uri.encodeQueryComponent(googleMapData.address!);
    } else if (googleMapData.position != null) {
      query =
          '${googleMapData.position!.latitude},${googleMapData.position!.longitude}';
    } else {
      return;
    }
    final Uri uri = Uri.parse('google.navigation:q=$query');
    DeviceService.openLinkUri(uri, preferNonBrowserApp: true);
  } else {
    // iOS: comgooglemaps://?daddr=...&directionsmode=driving
    String destinationAddress;
    if (googleMapData.address != null && googleMapData.address!.isNotEmpty) {
      destinationAddress = Uri.encodeQueryComponent(googleMapData.address!);
    } else if (googleMapData.position != null) {
      destinationAddress =
          '${googleMapData.position!.latitude},${googleMapData.position!.longitude}';
    } else {
      return;
    }
    final Uri uri = Uri.parse(
        'comgooglemaps://?daddr=$destinationAddress&directionsmode=driving');
    DeviceService.openLinkUri(uri, preferNonBrowserApp: true);
  }
}