tl; dr: It's really very simple - you get as much information as Apple can tell you that you cross cell boundaries, which means that the data is not very good.
Now the real story:
Typically, there are only a few ways that CoreLocation can determine one position:
- By GPS. It is very accurate (tens of meters), but it consumes a lot of energy.
- Via wifi. This is usually accurate, although Wi-Fi base stations can and can vary, making it fuzzy. This method cross-references Wi-Fi stations in the area compared to some known exact locations - so it knows when it sees the “FooWifiStation” that it is associated with a specific area measured by precision instruments or perhaps even with other phones turned on GPS (which is inconsistent, we may never know if Apple uses this method)
- In the locations of the cells. They do not move, so he knows that you are at a large fuzzy point of coverage when you are connected to the tower. This is the least accurate, but the least energy intensive, because your phone is already working to stay in touch.
You can even see this if you enter the cold map app: you start right away with a big fuzzy blue dot (at least 1 km where I am), then it shrinks when it receives a Wi-Fi location correction, then it more or less disappears when the GPS receives its correction. It does the accuracy of [cell tower] => [wifi] => [gps] in real time.
In my experience, the “significant change of location” position means “We will let you know when you will move to a large extent, if we don’t need to work anymore or spend more energy to get you, this data. This means that de facto, that the best you can rely on is to use the transitions between the cell towers.Apple deliberately left it undefined because if another application uses something that has the best resolution - let's say you open Maps.app and it gets GPS fix - POSSIBILITY you suddenly get an excellent fix to a site, but you can not depend on what always happens. You asked for "weak link" in the location.
Now think about what happens when you wander in your car: your mobile phone must control this transition. It is transmitted, talking to several towers at once, something like that, to control a smooth transition, which should be viable while you are talking. It’s just a pretty neat feat for any small box. Surely this will lead to the fact that you will find a certain number of failures in location updates, because, to the phone, you vibrate between the cell towers at this time when it negotiates the transition.
So, that radius really means that you are interested in data of approximately the same accuracy, but the API does not guarantee that you will receive updates in this radius. You might think about it, because Apple says: "We collect your accuracy in one of three groups, but we did not indicate your listing, because we want to keep the right to develop better methods for fixing your location without you need to change your code." Of course, in fact, any real application will change if they change their way of obtaining location, because they are annoyingly vague in this place.
In other words, you will get a location correction on the mesh tower with some hunch about how good this accuracy is; when you go to the next tower, you instantly go to its location, with a similar fuzzy correction - does this make sense? CoreLocation tells you that you are on a mesh tower with precision until the cell signal reaches; as you move to another tower, you are likely to get a pep transfer.
So, when it comes to this, to really do a good job, you must assume that the data is “great”, “good” or “bad” and use other methods - for example, Kalmann Filters - if you really need to better guess where the user is located. As a zeroth order approximation, I would simply cancel the callbacks based on the update time given, and suppose the user does not jump in different directions for several seconds, but rather travels in the direction of the first new update.