/// <summary> /// Updates the position. /// </summary> /// <param name="location">The location.</param> private void UpdatePosition(CLLocation location) { var p = (_position == null) ? new Position() : new Position(_position); if (location.HorizontalAccuracy > -1) { p.Accuracy = location.HorizontalAccuracy; p.Latitude = location.Coordinate.Latitude; p.Longitude = location.Coordinate.Longitude; } if (location.VerticalAccuracy > -1) { p.Altitude = location.Altitude; p.AltitudeAccuracy = location.VerticalAccuracy; } if (location.Speed > -1) { p.Speed = location.Speed; } p.Timestamp = new DateTimeOffset((DateTime)location.Timestamp); _position = p; OnPositionChanged(new PositionEventArgs(p)); location.Dispose(); }
private void UpdatePosition(CLLocation location) { Position p = (this.position == null) ? new Position() : new Position(this.position); if (location.HorizontalAccuracy > -1) { p.Accuracy = location.HorizontalAccuracy; p.Latitude = location.Coordinate.Latitude; p.Longitude = location.Coordinate.Longitude; } if (location.VerticalAccuracy > -1) { p.Altitude = location.Altitude; p.AltitudeAccuracy = location.VerticalAccuracy; } if (location.Speed > -1) { p.Speed = location.Speed; } p.Timestamp = GetTimestamp(location); this.position = p; OnPositionChanged(new PositionEventArgs(p)); location.Dispose(); }
private void UpdatePosition(CLLocation location) { Position p = (this.position == null) ? new Position() : new Position(this.position); if (location.HorizontalAccuracy > -1) { p.Accuracy = location.HorizontalAccuracy; p.Latitude = location.Coordinate.Latitude; p.Longitude = location.Coordinate.Longitude; } if (location.VerticalAccuracy > -1) { p.Altitude = location.Altitude; p.AltitudeAccuracy = location.VerticalAccuracy; } if (location.Speed > -1) { p.Speed = location.Speed; } var dateTime = DateTime.SpecifyKind(location.Timestamp.ToDateTime(), DateTimeKind.Unspecified); p.Timestamp = new DateTimeOffset(dateTime); this.position = p; this.OnPositionChanged(new PositionEventArgs(p)); location.Dispose(); }
void UpdatePosition(CLLocation location) { var p = (position == null) ? new Position() : new Position(this.position); if (location.HorizontalAccuracy > -1) { p.Accuracy = location.HorizontalAccuracy; p.Latitude = location.Coordinate.Latitude; p.Longitude = location.Coordinate.Longitude; } if (location.VerticalAccuracy > -1) { p.Altitude = location.Altitude; p.AltitudeAccuracy = location.VerticalAccuracy; } if (location.Speed > -1) { p.Speed = location.Speed; } var dateTime = location.Timestamp.ToDateTime().ToUniversalTime(); p.Timestamp = new DateTimeOffset(dateTime); position = p; OnPositionChanged(new PositionEventArgs(p)); location.Dispose(); }
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(); }
void UpdatePosition(CLLocation location) { var p = (lastPosition == null) ? new Position() : new Position(this.lastPosition); p.HasAccuracy = true; if (location.HorizontalAccuracy > -1) { p.Accuracy = location.HorizontalAccuracy; p.HasLatitudeLongitude = true; p.Latitude = location.Coordinate.Latitude; p.Longitude = location.Coordinate.Longitude; } if (location.VerticalAccuracy > -1) { p.HasAltitude = true; p.Altitude = location.Altitude; p.AltitudeAccuracy = location.VerticalAccuracy; } #if __IOS__ || __MACOS__ if (location.Speed > -1) { p.HasSpeed = true; p.Speed = location.Speed; } if (includeHeading && location.Course > -1) { p.HasHeading = true; p.Heading = location.Course; } #endif try { var date = location.Timestamp.ToDateTime(); p.Timestamp = new DateTimeOffset(date); } catch (Exception) { p.Timestamp = DateTimeOffset.UtcNow; } lastPosition = p; OnPositionChanged(new PositionEventArgs(p)); location.Dispose(); }
//Caution: If radius is too large results will be HUGE! //radius in meters public IEnumerable<BusStop> getAllBusStops(CLLocation aboutLoc, double radius) { List<BusStop> stops = new List<BusStop>(30); using (LumenWorks.Framework.IO.Csv.CsvReader csv = new LumenWorks.Framework.IO.Csv.CsvReader(getReader("stops.txt"),true)) { while (csv.ReadNextRecord()){ CLLocation loc = new CLLocation(double.Parse(csv["stop_lat"]), double.Parse(csv["stop_lon"])); if (loc.DistanceFrom(aboutLoc)<=radius) stops.Add(new BusStop(csv["stop_name"],int.Parse(csv["stop_id"]), loc)); loc.Dispose(); } return stops; } }
public BusStop? getClosestStop(CLLocation aboutLoc) { int closestId = -1; double closestDist=double.MaxValue; using (CsvReader csv = new CsvReader(getReader("stops.txt"),true)) { while (csv.ReadNextRecord()){ CLLocation loc = new CLLocation(double.Parse(csv["stop_lat"]), double.Parse(csv["stop_lon"])); if (loc.DistanceFrom(aboutLoc)<=closestDist) closestId=int.Parse(csv["stop_id"]); loc.Dispose(); } } return (closestId==-1)?null:getStopInfo(closestId); }
//Caution: If radius is too large results will be HUGE! //radius in meters public IEnumerable <BusStop> getAllBusStops(CLLocation aboutLoc, double radius) { List <BusStop> stops = new List <BusStop>(30); using (LumenWorks.Framework.IO.Csv.CsvReader csv = new LumenWorks.Framework.IO.Csv.CsvReader(getReader("stops.txt"), true)) { while (csv.ReadNextRecord()) { CLLocation loc = new CLLocation(double.Parse(csv["stop_lat"]), double.Parse(csv["stop_lon"])); if (loc.DistanceFrom(aboutLoc) <= radius) { stops.Add(new BusStop(csv["stop_name"], int.Parse(csv["stop_id"]), loc)); } loc.Dispose(); } return(stops); } }
//a more memory friendly way to get the closest stop than getting a list, sorting, and tossing public BusStop?getClosestStop(CLLocation aboutLoc) { var allStops = SafeQuery <GTFS_Stop>("select * from stops"); int closestId = -1; double closestDist = double.MaxValue; foreach (GTFS_Stop stop in allStops) { CLLocation loc = new CLLocation(stop.stop_lat, stop.stop_lon); if (loc.DistanceFrom(aboutLoc) <= closestDist) { closestId = stop.stop_id; } loc.Dispose(); } return((closestId == -1)?null:getStopInfo(closestId)); }
public BusStop?getClosestStop(CLLocation aboutLoc) { int closestId = -1; double closestDist = double.MaxValue; using (CsvReader csv = new CsvReader(getReader("stops.txt"), true)) { while (csv.ReadNextRecord()) { CLLocation loc = new CLLocation(double.Parse(csv["stop_lat"]), double.Parse(csv["stop_lon"])); if (loc.DistanceFrom(aboutLoc) <= closestDist) { closestId = int.Parse(csv["stop_id"]); } loc.Dispose(); } } return((closestId == -1)?null:getStopInfo(closestId)); }
private void UpdatePosition(CLLocation location) { var p = _Position == null ? new Position() : new Position(_Position); if (location.HorizontalAccuracy > -1) { p.Accuracy = location.HorizontalAccuracy; p.Latitude = location.Coordinate.Latitude; p.Longitude = location.Coordinate.Longitude; } if (location.VerticalAccuracy > -1) { p.Altitude = location.Altitude; p.AltitudeAccuracy = location.VerticalAccuracy; } #if __IOS__ || __MACOS__ if (location.Speed > -1) { p.Speed = location.Speed; } #endif try { var date = location.Timestamp.ToDateTime(); p.Timestamp = new DateTimeOffset(date); } catch { //TODO: Error swallowed p.Timestamp = DateTimeOffset.UtcNow; } _Position = p; OnPositionChanged(new PositionEventArgs(p)); location.Dispose(); }
private void UpdatePosition(CLLocation location) { Position p = (this.position == null) ? new Position() : new Position(this.position); if (location.HorizontalAccuracy > -1) { p.Accuracy = location.HorizontalAccuracy; p.Latitude = location.Coordinate.Latitude; p.Longitude = location.Coordinate.Longitude; } if (location.VerticalAccuracy > -1) { p.Altitude = location.Altitude; p.AltitudeAccuracy = location.VerticalAccuracy; } if (location.Speed > -1) p.Speed = location.Speed; //p.Timestamp = new DateTimeOffset(location.Timestamp); this.position = p; OnPositionChanged(new PositionEventArgs(p)); location.Dispose(); }