Jestem w trakcie tworzenia aplikacji na WP7 wykorzystującej mapy Bing do zaprezentowania trasy zbudowanej w oparciu o współrzędne pobrane z GPS. Niby nic wielkiego, jednak w sieci nie udało mi się znaleźć żadnego sensownego i działającego przykładu, co było bezpośrednim przyczynkiem do powstania tego wpisu. Po przekopaniu się przez dokumentację, stworzyłem prosty kod, wyświetlający na mapie “wężyka”, obrazującego trasę między zadanymi współrzędnymi.

W XAML-u za dużo nie zrobimy.

<my:Map Name="Mapka" CredentialsProvider="super_tajny_klucz" />

Cała magia dzieje się w C#.

// tworzymy kolekcję lokalizacji
LocationCollection locations = new LocationCollection();
// Points to lista współrzędnych (List<geocoordinate>)
foreach (GeoCoordinate p in Points)
{
    locations.Add(p);
}

// ustawiamy opcje wężyka
MapPolyline routeLine = new MapPolyline();
routeLine.Locations = locations; // punkty, między którymi będzie rysowana trasa
routeLine.Stroke = new SolidColorBrush(Colors.Blue);
routeLine.Opacity = 0.5;
routeLine.StrokeThickness = 5.0;

// dodajemy do mapy nową warstwę z wężykiem
MapLayer routeLayer = new MapLayer();
routeLayer.Children.Add(routeLine);
Mapka.Children.Add(routeLayer);

// zmieniamy ustawienia mamy, any wskazywała na pierwszy punkt z listy
Mapka.ZoomLevel = 12;
Mapka.SetView(LocationRect.CreateLocationRect(Points[0]));
Mapka.ZoomBarVisibility = System.Windows.Visibility.Visible;

I to wszystko. Nieco ponad 20 wierszy kodu i mamy wężyka na mapie.