Standortbestimmung
Der Mobile Client unterstützt die Bestimmung des aktuellen Standorts. Abhängig vom Gerät und abhängig davon, ob GPS aktiviert ist, wird entweder der GPS-Sensor angesprochen oder eine Annäherung des Standoprtes über das Mobile Netzwerk angestoßen.
Action GetGeoLocation()
Der Vorgang wird am Form über die Action GetGeoLocation() gestartet.
// Aufruf der Action beim Click eines Buttons
protected virtual void FE_btn_OnClick(FrameworkButtonEventArgs e)
{
this.GetGeoLocation(this.GetGeoLocationCallback, "Start");
}
Wenn der Vorgang am Client abgeschlossen ist, wird die übergebene Callback-Methode aufgerufen. In ihr können die empfangenen Standortdaten weiterverarbeitet werden. Der Callback-Methode wird dafür ein Objekt mit dem Typ IFrameworkGeoLocationInfo übergeben.
public virtual void GetGeoLocationCallback(IFrameworkGeoLocationInfo info)
{
this.Reset();
if (info.HasError)
{
this.sError = info.ErrorMessage;
}
else
{
if (info.Identifier == "Start")
{
this.sInfo = "Start location of our journey";
}
else
{
this.sInfo = "Destination location of our journey";
}
this.sIdentifier = "Identifier: " + info.Identifier;
this.sLatitude = "Latitude: " + (info.Latitude.HasValue ? info.Latitude.ToString() : "N/A");
this.sLongitude = "Longitude: " + (info.Longitude.HasValue ? info.Longitude.ToString() : "N/A");
this.sAltitude = "Altitude: " + (info.Altitude.HasValue ? info.Altitude.ToString() : "N/A");
this.sAccuracy = "Accuracy: " + (info.Accuracy.HasValue ? info.Accuracy.ToString() : "N/A");
this.sHeading = "Heading: " + (info.Heading.HasValue ? info.Heading.ToString() : "N/A");
this.sSpeed = "Speed: " + (info.Speed.HasValue ? info.Speed.ToString() : "N/A");
this.sTimestamp = "Timestamp: " + (info.Timestamp.HasValue ? info.Timestamp.ToString() : "N/A");
}
}
Note
Wie an den Nullable-Typen zu sehen ist, können Abhängig vom Gerät und dessen Sensorik ggf. einzelne Werte der oben gegebenen Auflistung nicht verfügbar sein. Es ist zwingend nötig, vor der Verarbeitung immer auf die Verfügbarkeit der Werte zu prüfen.
Berechtigung für die Bestimmung des Standortes
Die GetGeoLocation-Action benötigt auf dem Endgerät die Berechtigung zur Bestimmung des Gerätestandortes. Diese muss z.B. auf einem Android-Gerät einmalig erteilt werden.