Otwieranie aplikacji mapy
W tym artykule opisano sposób używania interfejsu użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI). IMap Ten interfejs umożliwia aplikacji otwieranie zainstalowanej aplikacji mapowania na określoną lokalizację lub znacznik miejsca.
Domyślna implementacja interfejsu IMap
jest dostępna za pośrednictwem Map.Default właściwości . Zarówno interfejs, jak IMap
i Map
klasa są zawarte w Microsoft.Maui.ApplicationModel
przestrzeni nazw.
Rozpocznij
Aby uzyskać dostęp do funkcji przeglądarki, wymagana jest następująca konfiguracja specyficzna dla platformy.
System Android używa schematu identyfikatora geo:
URI do uruchamiania aplikacji map na urządzeniu. Może to spowodować wyświetlenie monitu użytkownika o wybranie z istniejącej aplikacji obsługującej ten schemat identyfikatora URI. Mapy Google obsługuje ten schemat.
W pliku Platforms/Android/AndroidManifest.xml dodaj następujące queries/intent
węzły do węzłamanifest
:
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="geo"/>
</intent>
</queries>
Korzystanie z mapy
Funkcja mapy działa przez wywołanie IMap.OpenAsync metody i przekazanie wystąpienia Location typu lub Placemark . Poniższy przykład otwiera zainstalowaną aplikację mapy w określonej lokalizacji GPS:
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
}
}
Napiwek
Typy Location
i Placemark
znajdują się w Microsoft.Maui.Devices.Sensors
przestrzeni nazw.
Jeśli używasz elementu do Placemark
otwierania mapy, wymagana jest więcej informacji. Informacje pomagają aplikacji mapy wyszukać szukane miejsce. Wymagane są następujące informacje:
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
}
}
Testowanie, czy mapa została otwarta
Zawsze istnieje możliwość, że otwarcie aplikacji mapy nie powiodło się, na przykład wtedy, gdy nie ma aplikacji mapy lub aplikacja nie ma odpowiednich uprawnień. Dla każdego IMap.OpenAsync przeciążenia metody istnieje odpowiednia IMap.TryOpenAsync metoda, która zwraca wartość logiczną wskazującą, że aplikacja mapy została pomyślnie otwarta. Poniższy przykład kodu używa TryOpenAsync
metody , aby otworzyć mapę:
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
}
Metody rozszerzeń
O ile Microsoft.Maui.Devices.Sensors
przestrzeń nazw jest importowana, co automatycznie wykonuje nowy projekt MAUI platformy .NET, możesz użyć wbudowanej metody OpenMapsAsync
rozszerzenia, aby otworzyć mapę:
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
}
}
Dodawanie nawigacji
Po otwarciu mapy można obliczyć trasę z bieżącej lokalizacji urządzenia do określonej lokalizacji. MapLaunchOptions Przekaż typ do Map.OpenAsync
metody, określając tryb nawigacji. Poniższy przykład otwiera aplikację mapy i określa tryb nawigacji jazdy:
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
}
}
Różnice między platformami
W tej sekcji opisano różnice specyficzne dla platformy dotyczące interfejsu API map.
NavigationMode
obsługuje cykle jazdy, jazdy i chodzenia.