반응형
질문
Google Maps 앱이 iOS에 설치되어 있는지 감지하고, 설치되어 있다면 실행하고, 그렇지 않으면 Apple Maps를 실행하려고 합니다. 지금까지 한 작업은 다음과 같습니다. 그러나 Google Maps가 설치된 폰에서는 감지되지 않고 적절하게 실행되지 않습니다.
어떤 아이디어가 있나요?
import 'package:url_launcher/url_launcher.dart';
_launchMaps() async {
String googleUrl =
'comgooglemaps://?center=${trip.origLocationObj.lat},${trip.origLocationObj.lon}';
String appleUrl =
'https://maps.apple.com/?sll=${trip.origLocationObj.lat},${trip.origLocationObj.lon}';
if (await canLaunch("comgooglemaps://")) {
print('launching com googleUrl');
await launch(googleUrl);
} else if (await canLaunch(appleUrl)) {
print('launching apple url');
await launch(appleUrl);
} else {
throw 'Could not launch url';
}
}
URL 스키마는 여기에서 가져왔습니다: How would I be able to open google maps when I press a button in my app?
답변
패키지 url_launcher를 설치하고 아래의 코드를 사용할 수 있습니다:
import 'package:url_launcher/url_launcher.dart';
class MapUtils {
MapUtils._();
static Future<void> openMap(double latitude, double longitude) async {
String googleUrl = 'https://www.google.com/maps/search/?api=1&query=$latitude,$longitude';
if (await canLaunch(googleUrl)) {
await launch(googleUrl);
} else {
throw '지도를 열 수 없습니다.';
}
}
}
이제 앱에서 구글 지도를 열기 위해 이 메소드를 호출할 수 있습니다:
MapUtils.openMap(-3.823216,-38.481700);
반응형
댓글