static async Task UpdatePosition(CLLocation location) { var result = new GeoPosition { Accuracy = location.HorizontalAccuracy, Latitude = location.Coordinate.Latitude, Longitude = location.Coordinate.Longitude, Altitude = location.Altitude, AltitudeAccuracy = location.VerticalAccuracy, Speed = location.Speed }; if (location.VerticalAccuracy == -1) { result.Altitude = null; result.AltitudeAccuracy = null; } if (location.Speed == -1) { result.Speed = null; } await PositionChanged?.RaiseOn(Thread.Pool, result); location.Dispose(); }
static Task OnListenerPositionChanged(GeoPosition position) { if (!IsTracking) { return(Task.CompletedTask); } LastPosition = position; return(PositionChanged.RaiseOn(Thread.Pool, position)); }