Share via


Abra o aplicativo de mapa

Browse sample. Navegue pelo exemplo

Este artigo descreve como você pode usar a interface .NET Multi-platform App UI (.NET MAUI). IMap Essa interface permite que um aplicativo abra o aplicativo de mapa instalado para um local específico ou marca de lugar.

A implementação padrão da interface está disponível por meio da IMapMap.Default propriedade. A interface e Map a IMap classe estão contidas no Microsoft.Maui.ApplicationModel namespace.

Introdução

Para acessar a funcionalidade do navegador, é necessária a seguinte configuração específica da plataforma.

O Android usa o esquema de geo: URI para iniciar o aplicativo de mapas no dispositivo. Isso pode solicitar que o usuário selecione um aplicativo existente que ofereça suporte a esse esquema de URI. O Google Maps é compatível com esse esquema.

No arquivo Platforms/Android/AndroidManifest.xml adicione os seguintes queries/intent nós ao manifest nó:

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

Usando o mapa

A funcionalidade de mapa funciona chamando o IMap.OpenAsync método e passando uma instância do Location tipo ou Placemark . O exemplo a seguir abre o aplicativo de mapa instalado em um local GPS específico:

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

Dica

Os Location tipos e Placemark estão no Microsoft.Maui.Devices.Sensors namespace.

Quando você usa um Placemark para abrir o mapa, mais informações são necessárias. As informações ajudam o aplicativo de mapa a procurar o lugar que você está procurando. As seguintes informações são necessárias:

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

Testando se o mapa foi aberto

Há sempre a possibilidade de que a abertura do aplicativo de mapa falhou, como quando não há um aplicativo de mapa ou seu aplicativo não tem as permissões corretas. Para cada IMap.OpenAsync sobrecarga de método, há um método correspondente IMap.TryOpenAsync , que retorna um valor booleano indicando que o aplicativo de mapa foi aberto com êxito. O exemplo de código a seguir usa o método para abrir o TryOpenAsync 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 extensão

Contanto que o namespace seja importado, o que um novo projeto .NET MAUI faz automaticamente, você pode usar o método OpenMapsAsync de extensão interno para abrir o Microsoft.Maui.Devices.Sensors 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
    }
}

Adicionar navegação

Ao abrir o mapa, você pode calcular uma rota do local atual do dispositivo para o local especificado. Passe o tipo para o método, especificando o MapLaunchOptionsMap.OpenAsync modo de navegação. O exemplo a seguir abre o aplicativo de mapa e especifica um modo de navegação de condução:

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

Diferenças de plataforma

Esta seção descreve as diferenças específicas da plataforma com a API de mapas.

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