public void OnLocationChanged(Location location) { lock (_syncLock) { if (_isListening && location.Accuracy <= _desiredAccuracyInM) { var response = new GPSResponse(); if (location.HasAccuracy) { response.Accuracy = location.Accuracy; } if (location.HasAltitude) { response.Altitude = location.Altitude; } if (location.HasBearing) { response.Heading = location.Bearing; } if (location.HasSpeed) { response.Speed = location.Speed; } response.Longitude = location.Longitude; response.Latitude = location.Latitude; response.Timestamp = location.Time.FromUnixTimeMilliseconds(); _completionSource.SetResult(response); Cleanup(); } } }
private void OnLocationChanged(CLLocation location) { lock (_syncLock) { if (_isListening && location.HorizontalAccuracy < _desiredAccuracyInMeters) { var result = new GPSResponse { Altitude = location.Altitude, Longitude = location.Coordinate.Longitude, Latitude = location.Coordinate.Latitude, Heading = location.Course, Speed = location.Speed, Timestamp = ToDateTime(location.Timestamp), Accuracy = location.HorizontalAccuracy, AltitudeAccuracy = location.VerticalAccuracy }; _completionSource.SetResult(result); Cleanup(); } } }