Süßer als vom verbotenen Baum?

10 Tipps für Windows Phone Mango 1. Standortspezifische Applikationen bauen
Kommentare

Einst galt sie als Speise der Götter – „Mangifera indica“ so der lateinische Name der Frucht, die namensgebend für die neueste Version von Windows Phone ist. In dieser Artikelserie erfahren Sie Tipps und Tricks, die die Entwicklung Ihrer Windows-Phone-7.5-Applikation erleichtern sollen. Beginnen wollen wir mit dem Bauen von Standort-abhängigen Anwendungen.

Ein Kernkonzept von Windows Phone ist die Standortrelevanz einer Applikation. Deshalb sollten Sie je nach Art Ihrer Anwendung erwägen, ob der Standort für die Darstellung der Daten relevant ist. Windows Phone bietet dafür eine Reihe eingebauter Funktionen, die wir in diesem Tipp vorstellen.

GPS-Koordinaten und Adresse des Standortes herausfinden

Jedes Windows Phone verfügt über dreierlei Arten den eigenen Standort herauszufinden. Diese sind in der Reihenfolge ihrer Genauigkeit: GPS, GSM-Masten-Triangulation, WLAN-Triangulation. Für EntwicklerInnen ist der Einsatz derselben transparent. Durch Verwendung der Klasse GeoCoordinateWatcher aus der System.Device.dll wird der Standort mithilfe der jeweils besten verfügbaren Methode festgestellt. Wie Listing 1 zeigt, kann bei der Instanzierung des GeoCoordinateWatchers eine Genauigkeit sowie ein Mindestabstand angegeben werden. Der Watcher besitzt Events, um asynchron über Status- und Positionsänderungen des Standortdienstes zu berichten. Das Event PositionChanged wird dann aufgerufen, wenn zwischen alter und neuer Position der Mindestabstand erreicht ist. Damit kann also die Häufigkeit der Benachrichtigungen gesteuert werden. Bei einer Positionsänderung können über das Event die neuen Längen-, Breiten- und Höhenkoordinaten sowie der Zeitpunkt der Ortung abgerufen werden.

var watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
watcher.MovementThreshold = 100.0;
watcher.PositionChanged += w_PositionChanged;
watcher.StatusChanged += w_StatusChanged;
            
watcher.Start();
}

void w_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
{
    GeoPositionStatus status = e.Status;
    ..
}
void w_PositionChanged(object sender, GeoPositionChangedEventArgs e)
{
    double latitude = e.Position.Location.Latitude;
    double longitude = e.Position.Location.Longitude;
    DateTimeOffset time = e.Position.Timestamp;
    // BING Geocoding webservice aufrufen
}
  

Um nun zum Beispiel Tankstellen in der Umgebung zu suchen, können Sie diese Geokoordinaten direkt an einen Web Service senden, der Ihnen die gewünschte Auskunft erteilen kann. Schwieriger wird es, wenn die Suche nicht nach Koordinaten, sondern nach Adresse oder Ort erfolgen soll. An und für sich gäbe es dafür eine Klasse mit Namen CivicAdressResolver, die sich ebenfalls in System.Device.dll befindet, allerdings leider nicht implementiert ist. Zum Glück gibt es ein Bing Maps Web Service [1], der diese Aufgabe des „Geocodings“ für uns übernehmen kann. Die Nutzung ist für alle Windows Phone Apps kostenlos, sofern Sie sich unter [2] einen API Key lösen. Bei einer Positionsänderung rufen Sie den Web Service auf, geben ihm die neuen GPS-Koordinaten mit und bekommen Straße, Hausnummer, Ort und Land derselben zurück.

Landkarten einbetten

Bing Maps bietet ein Silverlight Control für Desktop und Windows Phone an. Die Datei Microsoft.Phone.Controls.Maps.dll ist Teil des Windows Phone SDKs und enthält das Maps Control. Um mehrere Standorte auf der Karte einzutragen, eignet sich das MapItemsControl, eine spezielle Form der ListBox, die für die Darstellung mehrerer Geokoordinaten als Pinpoints gedacht ist. Listing 2 zeigt das Maps- und MapsItemsControl im Einsatz.

Fazit: Windows Phone bietet Komponenten, um ein Gerät aus der Software heraus zu orten. Mithilfe von Bing Maps können Sie die Adresse des Standortes herauszufinden, sowie Landkarten darstellen.


  
      
          
                 
                                  
      
  

  
DI Max Knor ist Technologieberater für Softwareentwicklung. Er betreut als Technical Global Alliance Manager bei Microsoft Corp. eine Hand voll internationaler ISVs im Bereich Retail-Software. Max hält Vorlesungen zu Cloud Computing, Softwarearchitekturen und Webentwicklung an zwei Fachhochschulen.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -