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!