Fala, galera! Tudo beleza?
Quem ai já precisou abrir um mapa para indicar uma rota pra alguém? Tem gente que liga, desenha no papel e ainda assim a pessoa não chega.
De forma nativa cada plataforma tem uma maneira para tratar abertura de mapas. Além disso, cada plataforma tem seu próprio mapa!
Para fazer isso em Xamarin.Forms, precisaríamos implementar por plataforma – felizmente, o Homem Plugin, James Montemagno, nos deu uma mãozinha!
Hoje vamos conhecer o ExternalMaps e abrir mapas externos de forma fácil!
Vamos lá!
Configurando o plugin
Vamos ao nuget para baixar o plugin Xam.Plugin.ExternalMaps e instalar em todas as plataformas:
Pronto! Sim, é só isso.
Utilizando o plugin
Para deixar mais legal a brincadeira eu criei uma tela simples com um desenho de um mapa e um botão para navegar até a localização:
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:MapaExternoExemplo" x:Class="MapaExternoExemplo.MainPage">
<StackLayout Spacing="0" BackgroundColor="{DynamicResource WindowBackground}">
<StackLayout BackgroundColor="White">
<Image
Source="mapa.png" VerticalOptions="Center" HorizontalOptions="Center"
Aspect="AspectFill"/>
</StackLayout>
<Button Clicked="Handle_Clicked"
Text="Direções ate o local" />
</StackLayout>
</ContentPage>
Em seguida, no click vamos chamar o seguinte comando:
CrossExternalMaps.Current.NavigateTo(“NESS Processos e Tecnologia”, -23.6008793, -46.6950054);:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Plugin.ExternalMaps;
using Xamarin.Forms;
namespace MapaExternoExemplo
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
public async void Handle_Clicked(object sender, EventArgs e)
{
var success = await CrossExternalMaps.Current.
NavigateTo("NESS Processos e Tecnologia", -23.6008793, -46.6950054);
}
}
}
Basicamente passamos o nome do local (da mesma forma que procuramos no Google Maps), a latitude e a longitude.
Então rodamos:
Só? Não! Esse plugin é tão incrível que ele nos dá outras opções como, por exemplo, passar o endereço do lugar, país, estado e etc. Para isso, basta configurar da seguinte forma:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Plugin.ExternalMaps;
using Xamarin.Forms;
namespace MapaExternoExemplo
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
public async void Handle_Clicked(object sender, EventArgs e)
{
//NESS Processos e Tecnologia - Rua Doutor Geraldo Campos Moreira - Cidade Monções, SP
var success = await CrossExternalMaps.Current.NavigateTo("NESS Processos e Tecnologia",
"Rua Doutor Geraldo Campos Moreira 240", "São Paulo", "São Paulo", "04533-085", "Brasil", "");
}
}
}
Rodando!
Creio que esse plugin ajude bastante. Caso queira baixar o código utilizado no exemplo, clique aqui.
Quer ver outros artigos sobre Xamarin? Acesse este link.
Espero ter ajudado. Aquele abraço!