Condividi tramite


Aprire l'app per la mappa

Browse sample. Esplorare l'esempio

Questo articolo descrive come usare l'interfaccia dell'interfaccia utente dell'app multipiattaforma .NET (.NET MAUI). IMap Questa interfaccia consente a un'applicazione di aprire l'applicazione mappa installata in una posizione o un punto di posizione specifico.

L'implementazione predefinita dell'interfaccia IMap è disponibile tramite la Map.Default proprietà . Sia l'interfaccia che Map la IMap classe sono contenute nello spazio dei Microsoft.Maui.ApplicationModel nomi .

Introduzione

Per accedere alla funzionalità del browser, è necessaria la configurazione specifica della piattaforma seguente.

Android usa lo geo: schema URI per avviare l'applicazione maps nel dispositivo. Ciò potrebbe richiedere all'utente di selezionare da un'app esistente che supporta questo schema URI. Google Mappe supporta questo schema.

Nel file Platforms/Android/AndroidManifest.xml aggiungere i nodi seguenti queries/intent al manifest nodo:

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

Uso della mappa

La funzionalità della mappa funziona chiamando il IMap.OpenAsync metodo e passando un'istanza Location del tipo o Placemark . L'esempio seguente apre l'app mappa installata in una posizione GPS specifica:

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
    }
}

Suggerimento

I Location tipi e Placemark si trovano nello spazio dei Microsoft.Maui.Devices.Sensors nomi .

Quando si usa un Placemark oggetto per aprire la mappa, sono necessarie altre informazioni. Le informazioni consentono all'app di mappa di cercare il posto che si sta cercando. Sono richieste le informazioni seguenti:

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
    }
}

Test se la mappa è stata aperta

È sempre possibile che l'apertura dell'app mappa non sia riuscita, ad esempio quando non è presente un'app mappa o che l'app non dispone delle autorizzazioni corrette. Per ogni IMap.OpenAsync overload del metodo è presente un metodo corrispondente IMap.TryOpenAsync , che restituisce un valore booleano che indica che l'app della mappa è stata aperta correttamente. Nell'esempio di codice seguente viene usato il TryOpenAsync metodo per aprire la mappa:

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
}

Metodi di estensione

Finché lo Microsoft.Maui.Devices.Sensors spazio dei nomi viene importato, che esegue automaticamente un nuovo progetto MAUI .NET, è possibile usare il metodo OpenMapsAsync di estensione predefinito per aprire la mappa:

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
    }
}

Aggiungere l'esplorazione

Quando si apre la mappa, è possibile calcolare un itinerario dalla posizione corrente del dispositivo alla posizione specificata. Passare il MapLaunchOptions tipo al Map.OpenAsync metodo , specificando la modalità di spostamento. L'esempio seguente apre l'app mappa e specifica una modalità di spostamento di guida:

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
    }
}

Differenze tra le piattaforme

Questa sezione descrive le differenze specifiche della piattaforma con l'API mappe.

NavigationMode supporta Bicycling, Driving e Walking.