首页  >  问答  >  正文

navigator.geolocation.getCurrentPosition 有时有效有时无效

<p>所以我使用 navigator.geolocation.getCurrentPosition jammy 有一个非常简单的 JS。</p>
$(document).ready(function(){
  $("#business-locate, #people-locate").click(function() {
    navigator.geolocation.getCurrentPosition(foundLocation, noLocation);
  });

  navigator.geolocation.getCurrentPosition(foundLocation, noLocation);

  函数发现位置(位置){
    var lat = 位置.坐标.纬度;
    var lon = 位置.坐标.经度;
    var userLocation = 纬度 + ', ' + 经度;
    $("#business-current-location, #people-current-location").remove();
    $("#靠近我")
      .watermark("当前位置")
      .after("");
    $("#people-Near-Me")
      .watermark("当前位置")
      .after("");
  }
  函数 noLocation() {
    $("#Near-Me").watermark("找不到位置");
    $("#people-Near-Me").watermark("找不到位置");
  }
})//结束 DocReady
<p>基本上,这里发生的事情是我们获取当前位置,如果获取了,两个“水印”将被放置在两个表示“当前位置”的字段中,并使用经纬度数据作为其值创建两个个隐藏字段(它们在开始时就被删除,这样它们就不会每次都重复)。还有两个按钮具有相应的单击功能,可以执行相同的操作。 不幸的是,是每隔三次左右,它就可以人力。 这是什么问题???</p>
P粉831310404P粉831310404419 天前403

全部回复(1)我来回复

  • P粉775788723

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

    我有部分答案,但可惜不是完整的答案。

    首先,要意识到 getCurrentPosition 的默认超时无限(!)。这意味着如果 getCurrentPosition 挂在后端的某个位置,您的错误处理程序将永远不会被调用

    为了确保超时,请将可选的第三个参数添加到对 getCurrentPosition 的调用中,例如,如果您希望用户在提示发生了什么情况之前等待不超过 10 秒,请使用:

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

    其次,我在不同的环境下体验到了截然不同的可靠性。在家里,我会在一两秒内收到回电,尽管准确性很差。

    然而,在工作中,我经历了相当奇怪的行为变化:地理定位在某些计算机上一直有效(当然,IE 除外),其他计算机只能在 chrome 和 safari 中工作,但不能在 Firefox 中工作(gecko 问题?),其他计算机只能工作一次,然后失败——这种模式每小时、每天都在变化。有时您有一台“幸运”的计算机,有时则没有。也许在满月时屠宰山羊会有帮助?

    我无法理解这一点,但我怀疑后端基础设施比在各种推动此功能的热衷书籍和网站中宣传的更不平衡。我真的希望他们能更直接地说明这个功能有多么不稳定,以及如果您希望错误处理程序正常工作,超时设置有多重要

    我今天一直在尝试向学生教授这些内容,并遇到了尴尬的情况,我自己的计算机(在投影仪和几个大屏幕上)无声地发生故障,而大约 80% 的学生正在获得一个几乎立即得到结果(使用完全相同的无线网络)。当我的学生也犯错别字和其他错误时,当我自己的电脑也出现故障时,解决这些问题非常困难。

    回复
    0
  • 取消回复