Eigene Karte mit Mapsui – auch in Xamarin.Forms

Auch wenn, zumindest derzeit, noch keine direkte Xamarin.Forms Implementierung von Mapsui existiert, kann dieses dennoch genutzt werden. Dies ist sogar mit erstaunlich wenig Aufwand bei guter Performance möglich. Aber was ist Mapsui? Nun Mapsui ist ein OpenSource Projekt von Paul den Dulk und ist über NuGet sowie Github verfügbar. Aktuell unterstützt das Projekt WPF sowie Xamarin Nativ Android, iOS und UWP. Mit Mapsui ist es möglich neben OpenStreetMap auch eigenes Kartenmaterial zu verwenden und zwar offline sowie online. Das Kartenmaterial liegt hier in der Regel im *.mbtiles-Format vor. Weiterhin ist es natürlich möglich allerlei Markierungen, Label und andere geometrische Formen auf der Karte zu platzieren. Die Performance ist ebenfalls sehr gut. In meinem ersten Projekt mit dieser Bibliothek (siehe unten) kann ich problemlos knapp 300MB Kartenmaterial und 1500 Marker darstellen ohne Performanceprobleme zu bekommen.

Die Verwendung der Bibliothek ist sehr einfach gestaltet und es gibt auf Github einige Samples zu Mapsui. Hierbei wird in der WPF Anwendung so gut wie jede Facette von Mapsui gezeigt. Die nativen Xamarin Anwendungen laden jeweils einen einzelnen Bereich, der im Sample-Code umgestellt werden kann (z.B. Custom-Tiles zu OpenStreetMap usw.).

Um diesen Beitrag in englisch zu sehen hier klicken: View this post in english

 

Share-Online  Weiterlesen

An own map with Mapsui – in Xamarin.Forms

Even though there is no implemention of Mapsui in Xamarin.Forms you can use it. This is also possible with little effort and good performance. But what is MapsuiMapsui is an open source project lead by Paul den Dulk. It is available via NuGet and Github. Up to now the project supports WPF as well as Xamarin Nativ Android, iOS and UWP. It allows you to use OpenStreetMap or your own map data both online and offline. The map data is usually in the *.mbtiles format. Furthermore, you can place markers, labels and other shapes on the map. The performance is pretty good. In my first project with this library I could place over 1500 markers on a 300 MB large map without any noticeable performance issues.

The usage of the library itself is pretty simple and you can get some samples for Mapsui on Github. The WPF application shows every aspect of the library at once. The native Xamarin apps load only one aspect, which can be set in the sample code. For example you can switch from your custom map data to  OpenStreetMap and so on.

To see this post in german click here: Diesen Post in Deutsch anzeigen

 

Share-Online  Weiterlesen

Eigene Tasten in der iOS-Tastatur mit Xamarin

Manchmal kommt es durchaus vor, dass man eigene Tasten auf der Tastatur für die Nutzung in einer App haben möchte. In Xamarin.iOS ist die Einbindung von benutzerdefinierten Tasten sehr einfach und problemlos mit nur wenigen Zeilen Code möglich.  Ein häufiges Problem unter iOS ist die fehlende „Done“-Taste zum Schließen der Tastatur. Während Android die Tastatur durch Klicken außerhalb der Tastatur schließt, macht iOS dies nicht. Zum Glück bietet UIKit eine einfache Implementierung für eigene Tasten. Darunter befindet sich auch die „Done“-Taste. Die hierbei zur Verfügung gestellte API nutzt ein zusätzliches UIView Element über der eigentlichen Tastatur. Um diese zusätzliche Leiste zu nutzen, muss lediglich die „InputAccessoryView“-Eigenschaft des entsprechenden UITextView oder UITextField Elements gesetzt werden.  Weiterlesen

LottoStats – Meine erste Cross-Plattform App

Nachdem ich seit einiger Zeit vor hatte, mich in den Bereich der Cross-Plattform Entwicklung einzuarbeiten – und seit knapp 6 Jahren wieder im Mobile Bereich tätig werden wollte – ist es nun soweit, dass ich meine erste App „LottoStats“ veröffentlicht habe. Hierbei handelt es sich um eine Statistik App zu Lotto Ziehungen für Lotto 6 aus 49, EuroJackpot sowie EuroMillions. Das Kernstück der App ist ein Tipp-Zahlengenerator, der basierend auf den erstellten Statistiken einen Tipp generiert. Zwar ist die App noch nicht perfekt und es gibt noch viele Dinge, die ich in nächster Zeit verbessern und erweitern werde, aber im Großen und Ganzen bin ich mit meiner ersten Version ganz zufrieden.

Funktionsumfang

Insgesamt bietet die App folgende Funktionen:

  • Ziehungen (Übersicht der Ziehungen)
  • Statistik (Häufigkeit der Ziehung einer Lottozahl im angegebenen Zeitraum)
  • Barometer (Zeitraum, in dem eine Lottozahl nicht mehr gezogen wurde)
  • Generator (Lotto-Tipps basierend auf Statistiken und Filter generieren)
  • Zwillingszähler (Häufigkeit von Zahlenpaaren)
  • Histogramm mit Glückszahlencheck
  • watchOS Unterstützung (nur unter iOS)

Download-Links für LottoStats

Download-Links für iTunes und den Google Play Store:

Download im iOS AppStore
Download im Google Play Store
Weiterlesen

Abgerundete Images (CircleImage) in Xamarin

Um abgerundete Bilder (CircleImage) in Anwendungen zu nutzen, gibt es natürlich die Möglichkeit das Bild mittels Bildbearbeitung zu verrunden und anschließend als transparenzfähige Datei abzuspeichern. Aber was ist, wenn man das Bild z.B. von Gravatar nachladen möchte und dieses rund darstellen möchte? Nun, für Xamarin gibt es hier eine relativ einfache Lösung, welche dank plattformspezifischen Renderer auch über verschiedene Plattformen hinweg genutzt werden kann. Zunächst erstellen wir uns hierzu eine leere Klasse, welche von Xamarin.Forms.Image ableitet (alternativ würden wir alle Images in der Anwendung rund darstellen). Da dies eine leere Klasse ist, welche nur von der Basisklasse ableitet, erwähne ich diese hier nicht weiter. In meinem Beispiel heißt die Klasse „CirlceImage“. Weiter geht es zu den plattformspezifischen Renderern.  Weiterlesen

Code Signierungszertifikat

Ein Code Signierungszertifikat (engl.: Code Signing Certificate) macht bei jeder Anwendung Sinn, die von anderen genutzt wird. Insbesondere ist dies der Fall bei Download-Anwendungen für  Kunden. Aber was macht diese Code Signierung eigentlich? Nun, damit „unterschreibt“ man die Anwendung, sodass Informationen mit der Anwendung ausgeliefert werden, welche angeben wo diese Software herstammt und wer diese entwickelt hat. Auf diese Weise sollen Modifikationen an der Software vermieden werden und ebenso soll sichergestellt werden, dass die Anwendung keinen Schadcode enthält. Aber wo bekommt man ein solches Zertifikat? Theoretisch kann jeder Herausgeber von Zertifikaten (z.B. Thawte, VeriSign, Globalsign, StartSSL) auch Code Signierungszertifikate ausstellen. In welchen Paketen dort Code Signierungszertifikate enthalten sind, sollte natürlich zuvor ermittelt werden.  Weiterlesen

C# / WPF ObservableDictionary

Leider sieht das .NET Framework bisher keine native Implementierung für ein ObservableDictionary vor. Wer trotzdem das Dictionary Pendant zur ObservableCollection haben möchte, muss dieses selbstständig implementieren. Im selben Zug sollte auch ein ObservableKeyValuePair als Pendant zum KeyValuePair implementiert werden. Hierbei sollten die beiden Events CollectionChanged sowie PropertyChanged implementiert werden. Um das Ganze zu realisieren, sollte also zunächst ein ObservableKeyValuePair implementiert werden. Hierbei gibt es verschiedene Möglichkeiten. Ich persönlich bevorzuge hierbei die Verwendung einer sealed class. Natürlich sollte es auch serialisierbar sein und möglichst in jedem Projekt verwendet werden können.  Weiterlesen

ASP.NET MVC – Flag Enum als Checkbox Liste Binden

In ASP.NET gibt es einige nützliche Hilfsmittel, um HTML-Objekte an ein Model zu binden. So wird aus „@Html.TextBoxFor(m => m.MyProperty)“ zum Beispiel eine TextBox, welche die Daten beim Absenden der Form automatisch in die entsprechende Property des Objektes schreibt und auch ausliest. Für was es allerdings keine vorgefertigte Möglichkeit gibt, ist das Binden von FlagEnum’s, sprich Enum Datentypen, die eine Mehrfachauswahl über das Flag-Attribut zulassen. Um eine solche Funktionalität zu bekommen, muss man aktuell selbst tätig werden und zwei Klassen erstellen, die dies erlauben. Hierfür braucht man einen „ModelBinder“ sowie eine Erweiterung für die Html-Klasse. Natürlich sollte man sich aber zuvor bereits darüber im Klaren sein, wie das Flag-Attribute bei einem Enum das Verhalten beeinflusst.  Weiterlesen

Google reCAPTCHA 2.0 in ASP.NET MVC einbinden und verwenden

Das Google ReCaptcha bietet eine gute Möglichkeit mit der Bots und Skripte von Eingaben auf einer Webseite abgehalten werden können. Um das Captcha auf der eigenen Webseite, in diesem Fall ASP.NET MVC, einbinden zu können, sind jedoch einige Schritte notwendig. Zunächst einmal, muss man sich einen privaten und öffentlichen Schlüssel für die Google reCAPTCHA 2.0 API besorgen. Dies geht unter: https://www.google.com/recaptcha

Sobald man die beiden benötigten Schlüssel erhalten hat, kann mit der Implementierung begonnen werden.  Weiterlesen

Zertifikats- / SSL-Fehler im WebClient ignorieren

Hin und wieder kommt es vor, dass auf Web-Ressourcen zugegriffen wird. Aber was passiert, wenn die lokale Anwendung das Zertifikat nicht akzeptiert? Die Anwendung würde eine Exception auslösen und nicht mehr wie erwartet ablaufen. Mir begegnete das Problem zuletzt, als ich die Zertifikate eines Servers aktualisiert habe und anschließend die Anwendung unter Windows XP nicht mehr lief. Der dortige Internet Explorer konnte mit den neuen Zertifikat nicht umgehen. Zum Glück aber, kann ein solches Problem recht einfach mit nur einer Zeile gelöst werden. Um jedes Zertifikat zu akzeptieren, benötigt der Quellcode nur auf dem Aufruf der Web-Ressource folgende Zeile:

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

Natürlich können hier auch eigene, komplexe Methoden implementiert werden, um z.B. nur bestimmte Zertifikate zuzulassen.