77 lines
2.2 KiB
Dart
77 lines
2.2 KiB
Dart
// map_dialog_view.dart
|
|
|
|
import 'dart:io';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:url_launcher/url_launcher.dart';
|
|
|
|
class MapDialogView extends StatelessWidget {
|
|
final double latitude;
|
|
final double longitude;
|
|
|
|
const MapDialogView({
|
|
super.key,
|
|
required this.latitude,
|
|
required this.longitude,
|
|
});
|
|
|
|
// Funktion zum Öffnen der Karten-URL
|
|
void _openMap() async {
|
|
String url = '';
|
|
final coords = '$latitude,$longitude';
|
|
|
|
if (Platform.isAndroid) {
|
|
// Android: Startet die Google Maps Navigation
|
|
url =
|
|
'https://www.google.com/maps/dir/?api=1&destination=$coords'; // mode=d für Fahren
|
|
} else if (Platform.isIOS) {
|
|
// iOS: Startet die Apple Maps Navigation
|
|
url =
|
|
'https://maps.apple.com/?daddr=$coords&dirflg=d'; // daddr für destination, dirflg=d für driving
|
|
} else {
|
|
// Fallback-URL für die Google Maps Website mit Wegbeschreibung
|
|
url = 'https://www.google.com/maps/dir/?api=1&destination=$coords';
|
|
}
|
|
// Hier die URL-Logik einfügen, die Sie bereits kennen
|
|
//final url = 'http://googleusercontent.com/maps.google.com/8';
|
|
final uri = Uri.parse(url);
|
|
|
|
if (await canLaunchUrl(uri)) {
|
|
await launchUrl(uri);
|
|
} else {
|
|
// Eine Snackbar oder ein Dialog, um den Fehler zu melden
|
|
print('Fehler: Konnte Karten-App nicht öffnen.');
|
|
}
|
|
Get.back();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return AlertDialog(
|
|
title: const Text('Karte öffnen'),
|
|
content: Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
crossAxisAlignment:
|
|
CrossAxisAlignment.start, // Passt die Höhe an den Inhalt an
|
|
children: [
|
|
Text('Koordinaten'),
|
|
Text('Latitude: $latitude'),
|
|
Text('Longitude: $longitude'),
|
|
const SizedBox(height: 20),
|
|
ElevatedButton(
|
|
onPressed: _openMap, // Ruft die Methode zum Öffnen der Karte auf
|
|
child: const Text('Karten-App öffnen'),
|
|
),
|
|
],
|
|
),
|
|
actions: [
|
|
TextButton(
|
|
onPressed: () => Navigator.of(context).pop(), // Schließt den Dialog
|
|
child: const Text('Schließen'),
|
|
),
|
|
],
|
|
);
|
|
}
|
|
}
|