Freigeben über


Karten-App öffnen

Browse sample. Durchsuchen Sie das Beispiel

In diesem Artikel wird beschrieben, wie Sie die .NET Multi-Platform App UI (.NET MAUI) IMap-Schnittstelle verwenden können. Mit dieser Schnittstelle kann eine Anwendung die installierte Kartenanwendung für einen bestimmten Standort oder eine bestimmte Ortsmarkierung öffnen.

Die Standardimplementierung der IMap-Schnittstelle ist über die Map.Default-Eigenschaft verfügbar. Die IMap-Schnittstelle sowie die Map-Klasse sind im Microsoft.Maui.ApplicationModel-Namespace enthalten.

Erste Schritte

Für den Zugriff auf die Browser-Funktion ist die folgende plattformspezifische Einrichtung erforderlich.

Android verwendet das URI-Schema geo:, um die Kartenanwendung auf dem Gerät zu starten. Möglicherweise wird der Benutzer aufgefordert, eine vorhandene App auszuwählen, die dieses URI-Schema unterstützt. Google Maps unterstützt dieses Schema.

Fügen Sie in der Datei Platforms/Android/AndroidManifest.xml die folgenden Knoten queries/intent zum Knoten manifest hinzu:

<queries>
  <intent>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="geo"/>
  </intent>
</queries>

Verwenden der Karte

Die Kartenfunktionalität funktioniert, indem die Methode IMap.OpenAsync aufgerufen und entweder eine Instanz des Typs Placemark oder Location übergeben wird. Im folgenden Beispiel wird die installierte Karten-App an einem bestimmten GPS-Standort geöffnet:

public async Task NavigateToBuilding25()
{
    var location = new Location(47.645160, -122.1306032);
    var options = new MapLaunchOptions { Name = "Microsoft Building 25" };

    try
    {
        await Map.Default.OpenAsync(location, options);
    }
    catch (Exception ex)
    {
        // No map application available to open
    }
}

Tipp

Die Typen Location und Placemark befinden sich im Microsoft.Maui.Devices.Sensors-Namespace.

Wenn Sie eine Placemark zum Öffnen der Karte verwenden, sind weitere Informationen erforderlich. Die Informationen helfen der Karten-App bei der Suche nach dem gesuchten Ort. Folgende Informationen sind erforderlich:

public async Task NavigateToBuilding()
{
    var placemark = new Placemark
    {
        CountryName = "United States",
        AdminArea = "WA",
        Thoroughfare = "Microsoft Building 25",
        Locality = "Redmond"
    };
    var options = new MapLaunchOptions { Name = "Microsoft Building 25" };

    try
    {
        await Map.Default.OpenAsync(placemark, options);
    }
    catch (Exception ex)
    {
        // No map application available to open or placemark can not be located
    }
}

Testen, ob die Karte geöffnet wurde

Es besteht immer die Möglichkeit, dass das Öffnen der Karten-App fehlgeschlagen ist, beispielsweise, wenn keine Karten-App vorhanden ist oder Ihre App nicht über die richtigen Berechtigungen verfügt. Für jede IMap.OpenAsync-Methodenüberladung gibt es eine entsprechende IMap.TryOpenAsync-Methode, die einen booleschen Wert zurückgibt, der angibt, dass die Karten-App erfolgreich geöffnet wurde. Im folgenden Codebeispiel wird die TryOpenAsync-Methode zum Öffnen der Karte verwendet:

var location = new Location(47.645160, -122.1306032);
var options = new MapLaunchOptions { Name = "Microsoft Building 25" };

if (await Map.Default.TryOpenAsync(location, options) == false)
{
    // Map failed to open
}

Erweiterungsmethoden

Solange der Microsoft.Maui.Devices.Sensors-Namespace importiert wird, den ein neues .NET MAUI-Projekt automatisch ausführt, können Sie die integrierte Erweiterungsmethode OpenMapsAsync verwenden, um die Karte zu öffnen:

public async Task NavigateToBuildingByPlacemark()
{
    var placemark = new Placemark
    {
        CountryName = "United States",
        AdminArea = "WA",
        Thoroughfare = "Microsoft Building 25",
        Locality = "Redmond"
    };

    var options = new MapLaunchOptions { Name = "Microsoft Building 25" };

    try
    {
        await placemark.OpenMapsAsync(options);
    }
    catch (Exception ex)
    {
        // No map application available to open or placemark can not be located
    }
}

Navigation hinzufügen

Wenn Sie die Karte öffnen, können Sie eine Route von der aktuellen Position des Geräts zum angegebenen Standort berechnen. Übergeben Sie den MapLaunchOptions-Typ an die Map.OpenAsync-Methode, und geben Sie den Navigationsmodus an. Im folgenden Beispiel wird die Karten-App geöffnet und ein Fahrnavigationsmodus angegeben:

public async Task DriveToBuilding25()
{
    var location = new Location(47.645160, -122.1306032);
    var options = new MapLaunchOptions { Name = "Microsoft Building 25",
                                         NavigationMode = NavigationMode.Driving };

    try
    {
        await Map.Default.OpenAsync(location, options);
    }
    catch (Exception ex)
    {
        // No map application available to open
    }
}

Plattformunterschiede

In diesem Abschnitt werden die plattformspezifischen Unterschiede mit der Karten-API beschrieben.

NavigationMode unterstützt Radfahren, Fahren und Gehen.