Like many other aspects of the latest update, Core Location has been shaken up, with changes designed both to enable developers to build new kinds of things they couldn't before and to help maintain user privacy. Specifically, iOS 8 brings three major sets of changes to the Core Location framework: more granular permissions, indoor positioning, and visit monitoring.
Since the launch of iOS 7, your iPhone has been collecting a list of "frequent locations" as you move around. If you don't already know about this, you can check out your list in the Settings app.
Navigate to Settings → Privacy → Location Services → System Services → Frequent Locations.
Below are some screenshots from the data collected by my phone.
The phone builds up a list of cities you've visited, and clicking on one reveals a list of all the places you've visited within that city. It was able to show my "Home" and "Work" locations by name even though I've never entered the addresses. There are a few other named locations, like the Portland Airport in my case. The reverse-geocoded addresses are certainly not exact. Clicking on any of these places shows a list of all the times I've visited those locations in the past, including the time I arrived and left!
When this launched in iOS 7 the fall, I was somewhat surprised that there was no mention of it in the developer API docs. I would have expected a corresponding update to the CoreLocation APIs to make this data accessible to apps. It looks as though iOS 8 will make this available to developers now!
In addition to location services being able to get data from GPS or region monitoring, CoreLocation will be able to send location updates to apps after the user has "visited" a location. The new "CLVisit" event may include an arrival date and departure date in addition to the location.
This along with the changes so that CLLocation may include a CLFloor object indicating what level of a building someone is on opens up a lot of possibilities for new apps!
These are images of map generated entirely from GPS logs gathered by various versions of the Geoloqi sample application for iPhone and Android for the past 3.5 years. Once gathered, the data was run through a custom script that projects the GPS logs onto a 2D image plane. There is a little bit of logic to smooth out the lines and remove some (but not all) GPS noise.
Approximately one GPS point was recorded every 2-6 seconds when I was moving, and these images represent about 2.5 million total GPS points. Collectively, they represent a data portrait of my life: everywhere I’ve been and the places I’ve been most frequently. The map is colored by year, so you can see how my footprint changes over the years, depending on where I live.
This is a map of everywhere I’ve been in Portland from 2008 to March 2012.
The long diagonal lines are airplane flights in and out of PDX. Some of the flights loop over the city when they take off.
To get data at this resolution, I had to bring back-up batteries with me and charge my phone whenever I could. I would manually turn the tracker on when I moved, and turn it off when I was at an indoor location for a long period of time. To get this level of accuracy results in a great deal of battery drain.
One of the reasons why I started Geoloqi is to be able to make tracking this kind of data easier for myself, and to improve battery life (along the way we took some of my manual methods for battery management and bundled it up into a set of mobile SDKs for iPhone and Android for adding location to applications without the intensive battery drain).
Below is an image of the script while it is running to produce the GPS maps. You can see a video of it processing a couple million GPS points here.
Some of the earlier images of the GPS maps started appearing in Wired online starting last year.
My fascination with GPS and data logging began at a relatively early age (around 10-12 years old, from 4th-6th grade). I recently found my stack of notepads from 3/29/1995 through 6/9/1997 where I logged my commute to school. I have mostly complete logs for the entire date range, including start time, end time, time traveled, who drove, and in what car. On road trips, I used to highlight our path on a giant fold-out map in real time.
I’ve always found it interesting to take raw data and make it visible. Before GPS chips were available in smartphones, it was very difficult to get high resolution data like this. Ubiquitous provides a way to see over time what was formerly invisible data. It allows one to see over time. In each of these cases, I’ve been able to process the raw data to answer personal questions like “what time is best to leave the house in the morning for work?”. Best of all, it is private data that I own and can do with what I like.
If you’d like to see all of the images I’ve recorded over the past 3.5 years, check out my GPS Logs set on Flickr.