Mobile

28 fev, 2019

Abrindo um mapa externo

Publicidade

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!