Karten-App öffnen
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.