Partilhar via


Inicie o aplicativo de mapa nativo a partir de Xamarin.Forms

O aplicativo de mapa nativo em cada plataforma pode ser iniciado a Xamarin.EssentialsLauncher partir de um Xamarin.Forms aplicativo pela classe. Essa classe permite que um aplicativo abra outro aplicativo por meio de seu esquema de URI personalizado. A funcionalidade do iniciador pode ser invocada com o OpenAsync método, passando um string ou Uri argumento que representa o esquema de URL personalizado a ser aberto. Para obter mais informações sobre Xamarin.Essentials, consulte Xamarin.Essentials.

Observação

Uma alternativa para usar a Xamarin.EssentialsLauncher classe é usar sua Map classe. Para obter mais informações, consulte Xamarin.Essentials: Mapa.

O aplicativo de mapas em cada plataforma usa um esquema de URI personalizado exclusivo. Para obter informações sobre o esquema de URI de mapas no iOS, consulte Links de mapa no developer.apple.com. Para obter informações sobre o esquema de URI do Google Maps no Android, consulte Guia do desenvolvedor do Google Maps e Intenções do Google Maps para Android no developers.android.com. Para obter informações sobre o esquema de URI de mapas na Plataforma Universal do Windows (UWP), consulte Iniciar o aplicativo Windows Maps.

Inicie o aplicativo de mapa em um local específico

Um local no aplicativo de mapas nativo pode ser aberto adicionando parâmetros de consulta apropriados ao esquema de URI personalizado para cada aplicativo de mapa:

if (Device.RuntimePlatform == Device.iOS)
{
    // https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html
    await Launcher.OpenAsync("http://maps.apple.com/?q=394+Pacific+Ave+San+Francisco+CA");
}
else if (Device.RuntimePlatform == Device.Android)
{
    // open the maps app directly
    await Launcher.OpenAsync("geo:0,0?q=394+Pacific+Ave+San+Francisco+CA");
}
else if (Device.RuntimePlatform == Device.UWP)
{
    await Launcher.OpenAsync("bingmaps:?where=394 Pacific Ave San Francisco CA");
}

Este código de exemplo resulta no aplicativo de mapa nativo sendo iniciado em cada plataforma, com o mapa centralizado em um alfinete representando o local especificado:

Captura de tela do aplicativo de mapa nativo, no iOS e Android

Inicie o aplicativo de mapa com direções

O aplicativo de mapas nativo pode ser iniciado exibindo direções, adicionando parâmetros de consulta apropriados ao esquema de URI personalizado para cada aplicativo de mapa:

if (Device.RuntimePlatform == Device.iOS)
{
    // https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html
    await Launcher.OpenAsync("http://maps.apple.com/?daddr=San+Francisco,+CA&saddr=cupertino");
}
else if (Device.RuntimePlatform == Device.Android)
{
    // opens the 'task chooser' so the user can pick Maps, Chrome or other mapping app
    await Launcher.OpenAsync("http://maps.google.com/?daddr=San+Francisco,+CA&saddr=Mountain+View");
}
else if (Device.RuntimePlatform == Device.UWP)
{
    await Launcher.OpenAsync("bingmaps:?rtp=adr.394 Pacific Ave San Francisco CA~adr.One Microsoft Way Redmond WA 98052");
}

Este código de exemplo resulta no aplicativo de mapa nativo sendo iniciado em cada plataforma, com o mapa centralizado em uma rota entre os locais especificados:

Captura de tela da rota do aplicativo de mapa nativo, no iOS e Android