Starten Der nativen Karten-App über Xamarin.Forms

Beispiel herunterladen Das Beispiel herunterladen

Die native Karten-App auf jeder Plattform kann von Xamarin.EssentialsLauncher der -Klasse aus einer Xamarin.Forms Anwendung gestartet werden. Diese Klasse ermöglicht es einer Anwendung, eine andere App über ihr benutzerdefiniertes URI-Schema zu öffnen. Die Startprogrammfunktionalität kann mit der OpenAsync -Methode aufgerufen werden, wobei ein string - oder Uri -Argument übergeben wird, das das zu öffnende benutzerdefinierte URL-Schema darstellt. Weitere Informationen zu Xamarin.Essentials finden Sie unter Xamarin.Essentials.

Hinweis

Eine Alternative zur Verwendung der -Klasse ist die Xamarin.EssentialsLauncher Verwendung ihrer Map -Klasse. Weitere Informationen finden Sie unter Xamarin.Essentials: Zuordnung.

Die Karten-App auf jeder Plattform verwendet ein eindeutiges benutzerdefiniertes URI-Schema. Informationen zum Zuordnungs-URI-Schema unter iOS finden Sie unter Zuordnungslinks auf developer.apple.com. Informationen zum Karten-URI-Schema unter Android finden Sie unter Maps Developer Guide und Google Maps Intents for Android on developers.android.com. Informationen zum Zuordnungs-URI-Schema auf der Universelle Windows-Plattform (UWP) finden Sie unter Starten der Windows-Karten-App.

Starten der Karten-App an einem bestimmten Ort

Ein Speicherort in der nativen Karten-App kann geöffnet werden, indem dem benutzerdefinierten URI-Schema für jede Karten-App die entsprechenden Abfrageparameter hinzugefügt werden:

if (Device.RuntimePlatform == Device.iOS)
{
    // https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html
    await Launcher.OpenAsync("http://maps.apple.com/?q=394+Pacific+Ave+San+Francisco+CA");
}
else if (Device.RuntimePlatform == Device.Android)
{
    // open the maps app directly
    await Launcher.OpenAsync("geo:0,0?q=394+Pacific+Ave+San+Francisco+CA");
}
else if (Device.RuntimePlatform == Device.UWP)
{
    await Launcher.OpenAsync("bingmaps:?where=394 Pacific Ave San Francisco CA");
}

Dieser Beispielcode führt dazu, dass die native Karten-App auf jeder Plattform gestartet wird, wobei die Karte auf einer Stecknadel zentriert ist, die den angegebenen Speicherort darstellt:

Screenshot der nativen Karten-App unter iOS und Android

Starten der Karten-App mit Wegbeschreibungen

Die native Karten-App kann gestartet werden, um Wegbeschreibungen anzuzeigen, indem dem benutzerdefinierten URI-Schema für jede Karten-App die entsprechenden Abfrageparameter hinzugefügt werden:

if (Device.RuntimePlatform == Device.iOS)
{
    // https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html
    await Launcher.OpenAsync("http://maps.apple.com/?daddr=San+Francisco,+CA&saddr=cupertino");
}
else if (Device.RuntimePlatform == Device.Android)
{
    // opens the 'task chooser' so the user can pick Maps, Chrome or other mapping app
    await Launcher.OpenAsync("http://maps.google.com/?daddr=San+Francisco,+CA&saddr=Mountain+View");
}
else if (Device.RuntimePlatform == Device.UWP)
{
    await Launcher.OpenAsync("bingmaps:?rtp=adr.394 Pacific Ave San Francisco CA~adr.One Microsoft Way Redmond WA 98052");
}

Dieser Beispielcode führt dazu, dass die native Karten-App auf jeder Plattform gestartet wird, wobei die Karte auf einer Route zwischen den angegebenen Standorten zentriert ist:

Karten-App Screenshot der Route der nativen Karten-App unter iOS und Android