此解决方案适用于 Android 和 iOS 平台。
import 'dart:io' show Platform;
import 'package:flutter/foundation.dart';
import 'package:url_launcher/url_launcher.dart';
class MapsLauncher {
static String createQueryUrl(String query) {
var uri;
if (kIsWeb) {
uri = Uri.https(
'www.google.com', '/maps/search/', {'api': '1', 'query': query});
} else if (Platform.isAndroid) {
uri = Uri(scheme: 'geo', host: '0,0', queryParameters: {'q': query});
} else if (Platform.isIOS) {
uri = Uri.https('maps.apple.com', '/', {'q': query});
} else {
uri = Uri.https(
'www.google.com', '/maps/search/', {'api': '1', 'query': query});
}
return uri.toString();
}
static String createCoordinatesUrl(double latitude, double longitude,
[String? label]) {
var uri;
if (kIsWeb) {
uri = Uri.https('www.google.com', '/maps/search/',
{'api': '1', 'query': '$latitude,$longitude'});
} else if (Platform.isAndroid) {
var query = '$latitude,$longitude';
if (label != null) query += '($label)';
uri = Uri(scheme: 'geo', host: '0,0', queryParameters: {'q': query});
} else if (Platform.isIOS) {
var params = {'ll': '$latitude,$longitude'};
if (label != null) params['q'] = label;
uri = Uri.https('maps.apple.com', '/', params);
} else {
uri = Uri.https('www.google.com', '/maps/search/',
{'api': '1', 'query': '$latitude,$longitude'});
}
return uri.toString();
}
static Future<bool> launchQuery(String query) {
return launch(createQueryUrl(query));
}
static Future<bool> launchCoordinates(double latitude, double longitude,
[String? label]) {
return launch(createCoordinatesUrl(latitude, longitude, label));
}
}
这样称呼它:
MapsLauncher.launchCoordinates(
37.4220041, -122.0862462, "地址");