What3Words Sample-App

Im Rahmen der Digitalen Woche in Kiel bin ich  zum ersten Mal mit dem Dienst What3Words in Kontakt geraten. Dabei handelt es sich um einen Dienst, welche die Weltkarte in kleine Quadrate unterteilt und dann jedem Quadrat drei Begriffe zuordnet. Ziel soll es sein, dass sich diese Begriffe leichter merken lassen, da diese nicht zusammenhängen (wie zum Beispiel welche.tischtennis.bekannte), als eine Adresse inkl. Postleitzahl. Ich habe mich dann näher mit der API dieses Dienstes befasst und einen kleinen C#-Wrapper geschrieben, welcher die Basis-Funktionalitäten bereits abgedeckt.

Die aktuelle Version befindet sich auf NuGet. Ich habe mich jetzt noch einmal dran gesetzt und habe eine kleine Beispiel-Anwendung mit Xamarin.Forms geschrieben, welche aufzeigen soll, wie man diesen Dienst am Besten in seiner eigenen App verwenden kann.

Die App befindet sich auf GitHub und kann natürlich auch beliebig erweitert und ergänzt werden, weil dies wirklich nur ein einfaches Beispiel widerspiegeln soll.

Hier mal ein kleiner Ausblick auf die Android-Version

Diese App wird sicherlich keinen Schönheitspreis gewinnen, aber trotzdem zeigt sie, wie man mit wenig Aufwand den What3Words Wrapper in seine App integrieren kann. Zunächst wollen wir uns anschauen, wie wir aus einer Position in Form von Latitude und Longitude eine Adresse erzeugen können. Hierzu kommt die Methode GetReverseGeocodingAsync zum Einsatz. Zunächst wird eine Instanz des What3WordsServices erzeugt und anschließend Latitude und Longitude aus zwei Textfeldern eingelesen und entsprechend konvertiert. Nun erfolgt bereits der Aufruf der Methode GetReverseGeocodingAsync und als Ergebnis erhalten wir ein Objekt, welches in der Words-Property die gewünschten drei Begriffe als formatierten String beinhaltet.

private async void GetWhat3WordsAddressButtonOnClicked(object sender, EventArgs e)
{
  var what3wordsService = new What3WordsService("ApiKey", LanguageCode.EN);

  var latitude = double.Parse(LatitudeEntry.Text);
  var longitude = double.Parse(LongitudeEntry.Text);
  var result = await what3wordsService.GetReverseGeocodingAsync(latitude, longitude);

  // three words are stored in result.Words
}

Natürlich klappt auch die andere Richtung. Man kann also aus den drei Wörtern auch wieder eine Position ermitteln. Hierfür wird die Methode GetForewordGeocodingAsync verwendet. Der Aufbau ist hier analog zum oben beschriebenen Fall, wie auch das folgende Code-Snippet zeigt.

private async void GetAddressFromWhat3WordsAddressButtonOnClicked(object sender, EventArgs e)
{
  var what3wordsService = new What3WordsService("ApiKey", LanguageCode.EN);

  var address = AddressEntry.Text;
  var result = await what3wordsService.GetForewordGeocodingAsync(address);

  // lat/lng ar stored in result.Geometry.Lat/Lng
}

Wie man diesen beiden Beispielen entnehmen kann, ist die Verwendung der API eigentlich recht simpel und diese lässt sich schnell und einfach in die eigene App integrieren, um z.B. die aktuelle Position des Nutzers zu codieren.

Viel Spaß bei der Verwendung des API-Wrappers für What3Words.

Buch-Tipp: Mastering Xamarin.Forms von Ed Snider Notfall-Rufnummern: App für Android und iOS Demo: Xamarin.Forms Material Visual