Exemple #1
0
        /// <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();
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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();
        }
Exemple #7
0
 //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;
     }
 }
Exemple #8
0
 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);
 }
Exemple #9
0
        //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);
            }
        }
Exemple #10
0
        //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));
        }
Exemple #11
0
        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();
        }
Exemple #13
0
        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();
        }