I'm creating an iOS app which uses sensor and camera data, combined with GPS data, to determine a specific location for a user. I receive a new GPS location, along with a radius of accuracy, every 10 seconds or so. And I'm able to track how far the user walked in that time, and in which direction, so I have a 'position' within a local world, where 0,0 is arbitrary. Each GPS location is given a position when it arrives.
So lets say I'm at point 0, 10, and I get a location with 10m of accuracy. Then I walk north by 30m, and get another location with 10m of accuracy. Using the camera and sensor data, by way of my own movement I now know the true distance between these two locations, so I can move the first location 30m north to match my own movements, and the overlapping area between those 2 circles is where I must now be located. And I can then do that with the next data point and so on.
I've made a diagram to show each step of this, from left to right:
My goal here is to find the center point of the overlapping area, which I can use as the user's estimated location.