The GPS precision is not infinite and the app displays it as usual with a blue circle around the current position. The issue is that the size of this blue circle is not properly updated when zooming in and out. In other words, the scale of the blue circle doesn’t seem to be the same than the scale of the map: it seems to be in the scale of the previous zoom setting, bot the current one.
How to Reproduce
I think that the simplest way to visualise the bug is through these two screens. These two screens are almost identical expect by the size of the blue circle:


I can switch from the big blue circle to the small blue circle by pressing through the “-” zoom button, then the “+” zoom button. To switch from the small blue circle to the big circle, I can press the “+” zoom button followed by the “-” zoom button. I can do this consistently: this is not a GPS issue. Actually, I can switch off my GPS and let the phone rely on the Wifi positioning approximation and the result stays the same (it was actually the case in these screenshots): pressing “-” followed by “+” makes the circle bigger, and pressing “+” followed by “-” makes the circle smaller.
Versions affected
15.0
Will be fixed in next version
(Though, when tilting, the displayed accuracy is still hugely inprecise, but that's another issue, one I will not likely fix)
Is the tilting inaccuracy due to StreetComplete itself? It feels like it’s about the phone captors or something like that.
The map rendering library does not support to draw a circle in meters, only in pixels. See https://github.com/tangrams/tangram-es/issues/1121
The workaround I use to to calculate the pixels by calculating a second point that is X meters away from the original one and query from the map the screen position of that point. The distance of that position to the screen position of the GPS location is then the radius. This method gets hugely imprecise when tilt is active (imagine looking into the horizon).
Actually, while describing the algorithm to calculate it, it came to me that it is needlessly complex. I changed the algorithm now to basically 2^zoom_level * 256 / (cos(latitude * pi/180) * earth_circumference)
Oh, I understand the issue… :-/ This is frustrating. It does feel that it should be a nice feature for the map rendering library.
Sorry to ask stupid outsider questions, but really, should not this be a core feature of the map rendering library?
IMHO you should not have to implement this by yourself and mangle with earth circumference etc. (I.e. tangram-es case?)
Ah sorry, just saw https://github.com/tangrams/tangram-es/issues/1121. Forget it. :smile:
If you are proficient with C++, you can help out in that project, it's open source.