Curso Windows Phone – Como visualizar sua atual posição geográfica em um mapa

Olá pessoal, tudo bom?

Nesse post demonstro como podemos desenvolver uma APP para Windows Phone capaz de exibir sua posição geográfica atual em um mapa e ainda permitir que o usuário tenha à disposição um controle para aumentar ou diminuir o zoom de visualização.

Bem, tendo criado uma aplicação Windows Phone no Visual Studio, adicione uma nova página e nela faça referência ao XML namespace Microsoft.Phone.Maps.Controls.


xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"

Na sequencia, adicione um elemento Map e um Slider para composição da interface de teste.

...
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

<maps:Map x:Name="mapa"
 ZoomLevel="15" CartographicMode="Aerial" ColorMode="Light"
 HorizontalAlignment="Left" Margin="10,10,0,0"
 VerticalAlignment="Top" Height="587" Width="436"/>

<Slider x:Name="zoom" HorizontalAlignment="Left"
 Margin="392,0,0,0" VerticalAlignment="Top" Width="76" Maximum="19"
 Minimum="1" Orientation="Vertical" Grid.Row="1" Height="322"
 ValueChanged="zoom_ValueChanged" Value="15"/>
</Grid>
...

A imagem abaixo lhe dá uma ideia de como o layout está ficando.

layout-mapa

Ajustando as Capabilities da APP

Para que seja possível usar os recursos de mapa e geolocalização é necessário que você abra o arquivo WMAppManifest.xml que fica junto à pasta Properties da aplicação e marque as capabilities ID_CAP_LOCATION e ID_CAP_MAP.

wp-capacidades-emulador

Codificação em C#

Agora que já cuidamos do layout em XAML e das Capabilities da APP verifiquemos a implementação do código C#.

...

//Construtor
public Mapa()
{
  InitializeComponent();
  //Após o carregamento da página, o método para
  //leitura da posição geográfica atual e exibição
  //do mapa é acionado.
  this.Loaded += Mapa_Loaded;
}

private async void Mapa_Loaded(object sender, RoutedEventArgs e)
{
  //Objeto que será usado para obter a posição geográfica atual
  Geolocator geo = new Geolocator();
  if (geo.LocationStatus != PositionStatus.Disabled)
  {
    //Obtendo a posição geográfica
    Geoposition pos = await geo.GetGeopositionAsync();
    //Centralizando o mapa na coordenada geográfica obtida
    mapa.Center = pos.Coordinate.ToGeoCoordinate();
  }
}

//Método que trata o aumento ou diminuição do zoom
private void zoom_ValueChanged(object sender, RoutedPropertyChangedEventArgs&lt;double&gt; e)
{
  try
  {
    //Ajustando o zoom...
    mapa.ZoomLevel = e.NewValue;
  }
  catch { }
}

Ao executar a aplicação teremos o seguinte resultado:

app-mapa

Fica a dica!

Grande abraço,

Eduardo Henrique Rizo

MCP

Posts Relacionados: 

[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]

1 comentário em “Curso Windows Phone – Como visualizar sua atual posição geográfica em um mapa”

  1. Pingback: Free: Curso Windows Phone – Vários tópicos | Blog do Eduardo H. Rizo

Deixe um comentário