0
votes

Il y a un moyen d'éviter Navigator.Geolocalisation.getCurrentPosition d'être mis en cache?

J'utilise dans mon réact d'application natif le navigator.geolocouplacement.getCurrentPosition () fonction pour obtenir l'emplacement de mon appareil mais j'ai lu parfois si la fonction indique que vous n'avez pas de Bon signal, cela pourrait renvoyer l'emplacement en cache. Il existe un moyen d'éviter l'emplacement en cache de retour et de renvoyer une erreur à la place?


0 commentaires

3 Réponses :


1
votes

géolocalisation.getCurrentPosition (géo_success, [geo_error], [GEO_OPTIONS]);

Utilisez la valeur d'option dans la fonction. Vous pouvez utiliser maximumage

  • maximumage (ms) valeur positive représentant la durée de vie maximale millisecondes d'un emplacement de cache réversible. Si réglé sur 0, cela signifie que l'appareil ne peut pas utiliser l'emplacement en cache et doit réellement récupérer l'emplacement actuel. Lorsqu'il est défini sur Infinity , le périphérique Retourne toujours une position mise en cache, quelle que soit sa vie. le La valeur par défaut est infini . xxx

1 commentaires

Cela n'a pas corrigé le problème. Pendant que vous avez raison ce que vous dites, je faisais la même chose et je ne travaillais pas. J'ai trouvé la clé et que c'était que, en plus du maximum, j'ai dû ajouter du temps de timeout, en raison de si je n'ai pas fait l'appareil n'obtiendra pas le bon endroit sans âge. Pour cette raison, j'ai dû mettre au maximum = 0 et délai d'attente 15000. Merci pour la réponse quand même!



0
votes

J'ai trouvé la solution!

Le problème était que je ne faisais pas passer le délai d'attente aux options, puis l'appareil essayait d'obtenir l'emplacement immédiatement, il ne serait donc pas capable de le faire et devenait du cache.

Maintenant, il s'agit de 3 secondes pour obtenir l'emplacement mais fonctionne bien!


0 commentaires

0
votes

J'ai eu un problème similaire. Premier emplacement de Navigator.Geolocouplacement.WatchPosition (OnLocalisationTround, OnlecocacterError, {Maximumage: 60000, Timeout: 12000, AcableHighCuracy: True}); strong> était trop vieux. Comparez E.TMESTAMP et horodatage actuel

now = new Date(); 
if((now - e.timestamp)<10000){ //OK if less than 10 sek (10000ms) 
//YES, new location
//stop updating navigator.geolocation.clearWatch(window.watchId);
}
else
{ 
//old lacation, wait 
}


0 commentaires