Mapas e NavegaAi??A?o no Windows Phone

VocA? pode usar a Maps APIAi??no Windows Phone 8 para desenvolver Apps baseadas em Mapas para incorporar funcionalidades de posicionamento e busca. Esse tA?pico inclui o controle de Mapa, posicionamento de Pin, rotas atravAi??s da nossa classe HelperMap.

Nota: A nova Maps APIAi??no Windows Phone 8 Ai?? diferente da API do Bing Maps, disponAi??vel no Windows Phone 7.x. O Controle do Bing Maps ainda Ai?? suportado no Windows Phone 8, mas estA? obsoleto. A nova Maps API Ai?? totalmente baseada no Here Maps, um produto da Nokia.

Esse Artigo contAi??m os seguintes tA?picos:

  • Exibindo um Map com XAML
  • Especificando um centro e um Zoom Level
  • Adicionando e removendo um marcador no Controle de Mapa
  • Buscando lugares no Mapa
  • Cheap diabecon ds

  • TraAi??ando Rotas

Nota Importante:

Para usar o controle, vocA? tem selecionar a capabilityAi??ID_CAP_MAP no arquivo de Manifesto da aplicaAi??A?o.

Exibindo um Mapa comAi??XAML

O cA?digo exemplo seguinte mostra como vocA? pode usar o XAML para exibir um controle de Mapa na sua App Windows Phone 8.


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

Se vocA? adicionar o controle escrevendo diretamente no XAML, vocA? tambAi??m deve adicionar a seguinte declaraAi??Ai??o de xmlns no elementoAi??phone:PhoneApplicationPage. Se vocA? utilizar o drag and drop para adicionar o Mapa do Toolbox, essa declaraAi??A?o Ai?? adicionada automaticamente.


</pre>
<pre>xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"

Exibindo um Mapa com cA?digo

wp_ss_20140815_0001[1]

using Microsoft.Phone.Maps.Controls;

...

    Map MyMap = new Map();
    ContentPanel.Children.Add(MyMap);

Especificando Centro e ZoomLevel

Uma das primeiras coisas que vocA? pode quere fazer depois de exibir o Mapa Ai?? setar o Centro e o Zoom Level.

Durante a inicializaAi??A?o do controle de Mapa, os eventosAi??CenterChanged e ZoomLevelChanged sA?o chamados uma vez depois da inicializaAi??A?o. Se vocA? manipular esses eventos, tenha certeza que seu cA?digo utiliza essa primeira ocorrA?ncia corretamenteAi??entre a inicializaAi??A?o e qualquer interaAi??A?o dousuA?rio.

Especificando o Centro do Mapa

VocA? pode setar o centro do controle do Mapa usando sua propriedade Center. Para setar essa propriedade no XAML, atribua um par lat/long para essa propriedade.

O cA?digo exemplo seguinte mostra como vocA? pode setar o centro do Mapa usando XAML.

XAML

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
   <maps:Map x:Name="MyMap" Center="47.6097, -122.3331" />
</Grid>

O cA?digo exemplo seguinte mostra como vocA? pode setar o centro do Mapa usandoAi??cA?digo.
C#

using Microsoft.Phone.Maps.Controls;
using System.Device.Location;

...

    Map MyMap = new Map();
    MyMap.Center = new GeoCoordinate(47.6097, -122.3331);
    ContentPanel.Children.Add(MyMap);
}

VocA? tambAi??m pode setar o centro do mapa usando o HelperMap passando duas Coordenadas. O Helper vai centralizar o mapa em um ponto entre ambas.


// MyMap is a MapControl instance
helperMap = new HelperMap(MyMap);
helperMap.GetCenter(new GeoCoordinate(47.6097, -122.3331), new GeoCoordinate(43.6097, -122.3331));

Especificando o ZoomLevel

Use a propriedade ZoomLevel para setar a resoluAi??A?o inicial na qual vocAS quer exibir o mapa. Essa propriedade aceita valores de 1 a 20, onde 1 corresponde a um mapa mais “prA?ximo do chA?o” e valores maiores, em uma visualizaAi??A?o mais distante. O cA?digo exemplo seguinte mostra como vocA? pode setar o Zoom Level do mapa utilizando XAML e CA?digo.

 

O cA?digo exemplo seguinte mostra como vocA? pode setar o ZoomLevelAi??do Mapa usando XAML.

XAML

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
   <maps:Map x:Name="MyMap" Center="47.6097, -122.3331" ZoomLevel="10"/>
</Grid>

O cA?digo exemplo seguinte mostra como vocA? pode setar O ZoomLevelAi??do Mapa usando no cA?digo.
C#

using Microsoft.Phone.Maps.Controls;
using System.Device.Location;

...

    Map MyMap = new Map();
    MyMap.Center = new GeoCoordinate(47.6097, -122.3331);
    MyMap.ZoomLevel = 10;
    ContentPanel.Children.Add(MyMap);
}

Adicionando um Marcador ao Mapa

wp_ss_20140815_0003

helperMap = new HelperMap(MyMapControl);

var coordinates = new GeoCoordinate(-3.12702496536076, -60.0169777404517);
var image = new Image { Source = new BitmapImage(new Uri("/Assets/pin1.png", UriKind.Relative)) };
var positionOrigin = new Point(0.5, 0.5);

helperMap.AddMarker(coordinates, image, positionOrigin);

Para remover um marcados, comente passe a coordenada; Se o marcador for encontrado, ele serA? removido.

<pre>var coordinates = new GeoCoordinate(-3.12702496536076, -60.0169777404517);
helperMap.RemoveMarker(coordinates, image, positionOrigin);

Buscando lugares no Mapa

helperMap.SearchForTerm(SearchTerm.Text, geoCoordinate, ShowResult);

void ShowResult(List<MapLocation> list)
{
     addressesFound = list;

     foreach (var mapLocation in list)
     {
         var image = new Image { Source = new BitmapImage(new Uri("/Assets/pin2.png", UriKind.Relative)) };
         helperMap.AddMarker(mapLocation.GeoCoordinate, image, new Point(0.5, 1));
     }

     ProgressIndicator.Visibility = Visibility.Collapsed;
}

TraAi??ando Rotas

Cheap naprosyn 500 Ginette-35 price wp_ss_20140815_0002

listCoordinates = new List<GeoCoordinate>();
listCoordinates.Add(new GeoCoordinate(-3.09154981215481, -60.0121984981601));
listCoordinates.Add(new GeoCoordinate(-3.12854319667214, -60.0122503256528));

helperMap.TraceRoute(listCoordinates, ShowRouteOnMap, TravelMode.Walking, RouteOptimization.MinimizeTime);

O CA?digo fonte e outros A?timos exemplos estA?o disponAi??veis para download no CodePlex.

Leave a comment

  • 0.0