I’m working on an app that needs to save user's current position. The user is not really moving much, think fishing or birdwatching... they'd approach the spot and they stay there for a while, take a photo and then move to another location relatively close by.
For context, I'm using React Native/Expo (managed), so the relevant code goes like this:
let coordinates = await Location.getCurrentPositionAsync({
enableHighAccuracy: true,
accuracy: Location.Accuracy.Highest,
})
Then if resulting accuracy is greater than 50m I repeat the request.
This seems to work fine in urban or semi-urban areas where I guess there's a lot more info for the device to work with (WiFi networks, good mobile connection, cell towers, etc.). But in many cases there's very low mobile signal or none at all. Just GPS. In these situations, results get very inconsistent. Sometimes accuracy goes up to 2000 and 4000 meters which is useless for our purposes.
I think I must be using the wrong approach b/c there's tons of apps that work way better in similar situations, right?
Should I try to collecting positions of the device leading to the final place where the position will be recorded? Could that help without snapping to roads?
I’ve read an article from another app suggesting their users that in some cases historical GPS data is used and sometimes it helps getting rid of that data before attempting to get current position. Does this make sense to try? Is there ways to clear this data in the Expo/RN context?
We've tested this in different areas, in 3 or 4 Android devices, models ranging from about 1 to 4 years old. The data seems to indicate worse accuracy in older models, but still I thought GPS with clear sky view would do better...
I'd appreciate any suggestions or pointers to any relevant info. I'm sure there must be something we're doing very wrong.
Thanks.