Compartir a través de


Abrir la aplicación de mapa

Browse sample.Examinar la muestra.

En este artículo se describe cómo puedes usar la interfaz IMap de .NET Multi-platform App UI (.NET MAUI). Esta interfaz permite que una aplicación abra la aplicación de mapas instalada en una ubicación o marca de posición específica.

La implementación predeterminada de la interfaz IMap está disponible a través de la propiedad Map.Default. Tanto la interfaz IMap como la clase Map están contenidas en el espacio de nombres Microsoft.Maui.ApplicationModel.

Introducción

Para acceder a la función de explorador, se requiere la siguiente configuración específica para la plataforma.

Android usa el esquema de URI geo: para iniciar la aplicación de mapas en el dispositivo. De este modo, se le podría pedir al usuario que seleccione desde una aplicación existente que admita este esquema de URI. Google Maps admite este esquema.

En el archivo Platforms/Android/AndroidManifest.xml, agrega los siguientes nodos queries/intent al nodo manifest:

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

Uso del mapa

La funcionalidad de mapa funciona llamando al método IMap.OpenAsync y pasando una instancia del tipo Location o Placemark. En el ejemplo siguiente se abre la aplicación de mapa instalada en una ubicación GPS específica:

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

Sugerencia

Los tipos Location y Placemark están en el espacio de nombres Microsoft.Maui.Devices.Sensors.

Cuando se usa Placemark para abrir el mapa, se requiere más información. La información ayuda a la aplicación de mapa a buscar el lugar que estás buscando. Se requiere la siguiente información:

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

Probar si el mapa se abrió

Siempre existe la posibilidad de que se produzca un error al abrir la aplicación de mapa, como cuando no hay una aplicación de mapa o la aplicación no tiene los permisos correctos. Para cada sobrecarga de método IMap.OpenAsync, hay un método IMap.TryOpenAsync correspondiente, que devuelve un valor booleano que indica que la aplicación de mapa se abrió correctamente. En el ejemplo de código siguiente se usa el método TryOpenAsync para abrir el mapa:

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
}

Métodos de extensión

Siempre que se importe el espacio de nombres Microsoft.Maui.Devices.Sensors, que un nuevo proyecto de .NET MAUI hace automáticamente, puedes usar el método de extensión OpenMapsAsync integrado para abrir el mapa:

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

Agregar navegación

Al abrir el mapa, puedes calcular una ruta desde la ubicación actual del dispositivo a la ubicación especificada. Pasa el tipo MapLaunchOptions al método Map.OpenAsync y especifica el modo de navegación. En el ejemplo siguiente se abre la aplicación de mapa y se especifica un modo de navegación de conducción:

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

Diferencias entre plataformas

En esta sección se describen las diferencias específicas de la plataforma con la API de mapas.

NavigationMode admite Bicycling (Bicicleta), Driving (Automóvil) y Walking (A pie).