Abra o aplicativo de mapa
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 IMap
Map.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 MapLaunchOptions Map.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.