首頁  >  問答  >  主體

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 天前402

全部回覆(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
  • 取消回覆