location accuracy issue

hi,

Recently, I have to use “navigator.geolocation.getCurrentPosition()” on a web site, used by a phones. However, the precision is between 200 to 4000 meters of precision. I Ask you more information to know what could be give this precision.

phone used : Sonim-XP7700
Android version : 5.1

My code (who try to get a possition with a precision less than 150 meters, in 20 second. ):

{
timeoutID = setTimeout(failGetWatchedPosition, 20000);
watchID = navigator.geolocation.watchPosition(successGetWatchedPosition);
}

function successGetWatchedPosition(position)
{
document.getElementById("<%= this.hid_longitude.ClientID %>").value = position.coords.longitude;
document.getElementById("<%= this.hid_lattitude.ClientID %>").value = position.coords.latitude;
document.getElementById("<%= this.hid_accuracy.ClientID %>").value = position.coords.accuracy;
document.getElementById("<%= this.hid_altitude.ClientID %>").value = position.coords.altitude;
document.getElementById("<%= this.hid_speed.ClientID %>").value = position.coords.speed;

                if(position.coords.accuracy < 250)
                {
                    clearTimeout(timeoutID);
                    navigator.geolocation.clearWatch(watchID);
               
                    __doPostBack('punch', isPunchIn?'in':'out');
                }
            }
           
            function failGetWatchedPosition()
            {
                clearTimeout(timeoutID);
                navigator.geolocation.clearWatch(watchID);
               
                document.getElementById("hid_longitude").value = "";
                document.getElementById("hid_lattitude").value = "";
               
                document.getElementById("<%= this.hid_error.ClientID %>").value = "la position n'a pas put être déterminer dans les 20 secondes alouées.";
          
                __doPostBack('punch', isPunchIn?'in':'out');
            }