Xamarin.Essentials:Mapa

A classe Maps permite que um aplicativo abra o aplicativo de mapas instalado em um local ou marcador específico.

Introdução

Para começar a usar essa API, leia o guia de introdução para Xamarin.Essentials garantir que a biblioteca esteja instalada e configurada corretamente em seus projetos.

Usando o mapa

Adicione uma referência a Xamarin.Essentials em sua classe:

using Xamarin.Essentials;

A funcionalidade Map funciona chamando o método OpenAsync com Location ou Placemark para abrir com MapLaunchOptions opcional.

public class MapTest
{
    public async Task NavigateToBuilding25()
    {
        var location = new Location(47.645160, -122.1306032);
        var options =  new MapLaunchOptions { Name = "Microsoft Building 25" };

        try
        {
            await Map.OpenAsync(location, options);
        }
        catch (Exception ex)
        {
            // No map application available to open
        }
    }
}

Ao abrir com um Placemark, as seguintes informações são necessárias:

  • CountryName
  • AdminArea
  • Thoroughfare
  • Locality
public class MapTest
{
    public async Task NavigateToBuilding25()
    {
        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.OpenAsync(placemark, options);
        }
        catch (Exception ex)
        {
            // No map application available to open or placemark can not be located
        }
    }
}

Métodos de Extensão

Se você já tiver uma referência a uma Location ou Placemark, use o método de extensão interno OpenMapAsync com MapLaunchOptions opcional:

public class MapTest
{
    public async Task OpenPlacemarkOnMap(Placemark placemark)
    {
        try
        {
            await placemark.OpenMapAsync();
        }
        catch (Exception ex)
        {
            // No map application available to open
        }
    }
}

Modo de direções

Se você chamar OpenMapAsync sem MapLaunchOptions, o mapa será iniciado no local especificado. Se quiser, tenha uma rota de navegação calculada a partir da posição atual do dispositivo. Isso é feito definindo o NavigationMode nas MapLaunchOptions:

public class MapTest
{
    public async Task NavigateToBuilding25()
    {
        var location = new Location(47.645160, -122.1306032);
        var options =  new MapLaunchOptions { NavigationMode = NavigationMode.Driving };

        await Map.OpenAsync(location, options);
    }
}

Diferenças entre plataformas

  • NavigationMode oferece suporte a Ciclismo, Condução de veículos e Caminhada.

Particularidades de implementação da plataforma

O Android usa o esquema de Uri geo: para iniciar o aplicativo de mapas no dispositivo. Isso pode levar o usuário a optar por um aplicativo existente que suporte esse esquema de Uri. Xamarin.Essentials é testado com o Google Mapas, que dá suporte a esse esquema.

API

Encontre mais vídeos sobre o Xamarin no Channel 9 e no YouTube.