directions static method
Future<bool>
directions(
- double latitude,
- double longitude, {
- UMapApp app = UMapApp.system,
- UTravelMode mode = UTravelMode.driving,
Implementation
static Future<bool> directions(double latitude, double longitude, {UMapApp app = UMapApp.system, UTravelMode mode = UTravelMode.driving}) {
final String q = "$latitude,$longitude";
final String googleMode = switch (mode) {
UTravelMode.driving => "driving",
UTravelMode.walking => "walking",
UTravelMode.transit => "transit",
UTravelMode.cycling => "bicycling",
};
final String web = "https://www.google.com/maps/dir/?api=1&destination=$q&travelmode=$googleMode";
if (kIsWeb || Platform.isWindows || Platform.isLinux) return open(web);
if (Platform.isAndroid) {
return switch (app) {
UMapApp.google => open("google.navigation:q=$q&mode=${mode == UTravelMode.walking ? "w" : (mode == UTravelMode.cycling ? "b" : "d")}", androidPackage: "com.google.android.apps.maps"),
UMapApp.waze => open("https://waze.com/ul?ll=$q&navigate=yes", androidPackage: "com.waze"),
_ => open("geo:$q?q=$q", androidPackage: _androidMapPackage(app)),
};
}
final String appleMode = switch (mode) {
UTravelMode.walking => "w",
UTravelMode.transit => "r",
_ => "d",
};
return switch (app) {
UMapApp.google => _openFirst(<String>["comgooglemaps://?daddr=$q&directionsmode=$googleMode", web]),
UMapApp.waze => _openFirst(<String>["waze://?ll=$q&navigate=yes", "https://waze.com/ul?ll=$q&navigate=yes"]),
_ => open("maps://?daddr=$q&dirflg=$appleMode"),
};
}