Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/100grams/CoreLocationUtils
iOS CoreLocation extensions, simulator and tools
https://github.com/100grams/CoreLocationUtils
Last synced: 3 months ago
JSON representation
iOS CoreLocation extensions, simulator and tools
- Host: GitHub
- URL: https://github.com/100grams/CoreLocationUtils
- Owner: 100grams
- Created: 2011-05-18T11:06:06.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2013-06-07T08:51:49.000Z (over 11 years ago)
- Last Synced: 2024-07-20T11:06:42.349Z (4 months ago)
- Language: Objective-C
- Homepage:
- Size: 122 KB
- Stars: 160
- Watchers: 15
- Forks: 27
- Open Issues: 1
-
Metadata Files:
- Readme: README.markdown
Awesome Lists containing this project
- awesome - CoreLocationUtils - iOS CoreLocation extensions, simulator and tools (etc)
- awesome - CoreLocationUtils - iOS CoreLocation extensions, simulator and tools (etc)
README
# Core Location Utilities#
An Objective-C library with tools and extensions for iOS CoreLocation.
**Update: added support for iOS5 SDK and ARC compatibility**
## Features ##
- Dispatching CoreLocation updates to multiple listeners.
- Archive/Unarchive location data (play log file)
- Calculate Direction and distance between locations and routes.
- Dead Reckoning## Classes ##
### CLLocationDispatch
This is a central dispatch for distributing location updates to the app. Dispatched locations include:
- CoreLocation updates (location and heading)
- Location data read from an archive (playing a log file)
- Location data received from dead-reckoning service.Locations are dispatched to any listener which registers itself with addListener. In order to receive the update, the listener must respond to CLLocationManagerDelegate protocol methods.
**Serializing location data**
In addition, CLLocationDispatch provides an API for archiving and unarchiving CLLocation data to a file. This way you can record GPS traces and play them over (e.g. for debugging, or as a "route demo").
To start reading locations from an archive callstartDemoWithLogFile:startLocationIndex:
method.You can extend CLLocationDispatch to read location data from other file formats, (e.g. KML, NMEA) by providing a class which adheres to
HGRouteProvider
protocol.**Support for Dead-Reckoning**
I've recently extended CLLocationDispatch to dispatch "soft-locations", i.e. locations generated by a [dead-reckoning](http://en.wikipedia.org/wiki/Dead_reckoning) engine. For more info seeCLLocationDeadReckoning
below.### CLLocation(measuring)
An extension of
CLLocation
which provides distance and direction calculations between locations and stretches (lines), defining a bounding box from a center coordinate and radius, and validating coordinate values.### CLLocation(routeInfo)
An extension of
CLLocation
which provides an API to map-match a location on a given route. A route beingNSArray
ofCLLocation
objects.
- (CLLocationDistance) distanceFromRoute : (NSArray*) locations
nearestNodeFound : (CLLocation**)nearestRouteNode
nearestLocationOnRoute : (CLLocation**) nearestLocation
nodeIndexAfterIntersection : (NSInteger*)nodeIndexAfter;### CLLocationDeadReckoning ###
Dead Reckoning generates location updates at fixed time intervals, defined by
kDeadReckiningInterval
. Since DR estimates a location based on previous locations, it may result in cumulative errors. CLLocationDeadReckoning therefore constrains DR to a given route, i.e. an NSArray containing CLLocation objects.- To start CLLocationDeadReckoning, call
startWithRoute:
. You must provide a route for the DR to stick to.- After
CLLocationDeadReckoning
starts, it listens to CoreLocation updates and generates new DR locations after no location updates are received from CoreLocation for a predefined time interval, defined bykDeadReckoningInterval
.- You register for DR location updates by calling the
addListener
method ofCLLocationDispatch
. You must also respond to theCLLocationDeadReckoningHandler
protocol messages, which will be sent to your listener by CLLocationDispatch.
## How to use ##1. Clone this repo
2. Add CoreLocationUtils folder to your project.
2. Link with CoreLocation framework.## License ##
CoreLocationUtils library is released under MIT License.
Please contribute your improvements and suggestions, and raise issues if you spot them.
Thanks!
[![endorse](https://api.coderwall.com/rubnov/endorsecount.png)](https://coderwall.com/rubnov)