Maison  >  Questions et réponses  >  le corps du texte

navigator.geolocation.getCurrentPosition fonctionne parfois et parfois non

<p> <pre class="brush:php;toolbar:false;">$(document).ready(function(){ $("#business-locate, #people-locate").click(function() { navigator.geolocation.getCurrentPosition(foundLocation, noLocation); }); navigator.geolocation.getCurrentPosition(foundLocation, noLocation); fonction foundLocation(position) { var lat = position.coords.latitude; var lon = position.coords.longitude; var userLocation = lat + ', ' + lon; $("#business-current-location, #people-current-location").remove(); $("#À proximité") .watermark("Emplacement actuel") .after("<input type='hidden' name='business-current-location' id='business-current-location' value='"+userLocation+"' />"); $("#personnes-à proximité") .watermark("Emplacement actuel") .after("<input type='hidden' name='people-current-location' id='people-current-location' value='"+userLocation+"' />"); } fonction noLocation() { $("#Near-Me").watermark("Impossible de trouver l'emplacement"); $("#people-Near-Me").watermark("Impossible de trouver l'emplacement"); } })//fin DocReady</pre> <p> « 当前位置 »的字段中,并且使用经纬度数据作为其值创建两个隐藏字段(它们在开始时就被删除,这样它们就不会每次都重复)。还有两个按钮具有与其关联的单击功能,可以执行相同的操作。 不幸的是,每隔三次左右,它就会起作用。 这是什么问题???</p>
P粉831310404P粉831310404419 Il y a quelques jours401

répondre à tous(1)je répondrai

  • P粉775788723

    P粉7757887232023-08-28 09:08:27

    J'ai une réponse partielle, mais malheureusement pas une réponse complète.

    Tout d'abord, sachez que le délai d'expiration par défaut pour getCurrentPosition est infini(!). Cela signifie que si getCurrentPosition se bloque quelque part dans le backend, votre gestionnaire d'erreurs ne sera jamais appelé.

    Pour garantir les délais d'attente, ajoutez un troisième paramètre facultatif à l'appel à getCurrentPosition, par exemple si vous souhaitez que l'utilisateur n'attende pas plus de 10 secondes avant d'être invité à expliquer ce qui s'est passé, utilisez :

    navigator.geolocation.getCurrentPosition(successCallback,errorCallback,{timeout:10000});

    Deuxièmement, j'ai fait l'expérience d'une fiabilité complètement différente dans différents environnements. À la maison, je recevais un rappel dans une seconde ou deux, même si la précision était médiocre.

    Au travail, je constate cependant un changement de comportement assez étrange : la géolocalisation fonctionne tout le temps sur certains ordinateurs (sauf IE, bien sûr), d'autres ne fonctionnent que sous Chrome et Safari, mais pas sous Firefox (problème de gecko ?), d'autres les ordinateurs ne fonctionnent qu'une seule fois, puis tombent en panne - ce modèle change toutes les heures et tous les jours. Parfois, vous avez un ordinateur « chanceux », parfois non. Peut-être qu’abattre la chèvre pendant la pleine lune aiderait ?

    Je ne comprends pas cela, mais je soupçonne que l'infrastructure backend est plus déséquilibrée que ce qui est annoncé dans les différents livres et sites Web passionnés proposant cette fonctionnalité. J'aurais vraiment aimé qu'ils soient plus directs sur l'instabilité de cette fonctionnalité et sur l'importance des timeouts si vous souhaitez que vos gestionnaires d'erreurs fonctionnent correctement.

    J'ai essayé de les enseigner aux étudiants aujourd'hui et je me suis retrouvé dans une situation embarrassante où mon propre ordinateur (sur un projecteur et quelques grands écrans) tombait en panne silencieusement alors qu'environ 80 % des étudiants obtenaient des résultats presque instantanément. (en utilisant exactement le même réseau sans fil). Lorsque mes élèves font également des fautes de frappe et d'autres erreurs, et lorsque mon propre ordinateur tombe en panne, il est très difficile de résoudre ces problèmes.

    répondre
    0
  • Annulerrépondre