Udostępnij za pośrednictwem


Otwieranie aplikacji mapy

Browse sample. Przeglądanie przykładu

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.