我有一個運行 Linux 的桌面工作站(Debian Sid,如果相關的話)。它沒有 GPS 或其他特定方式來獲取自己的地理位置(Gnome 地圖正確地將其定位在義大利羅馬,誤差約為 11.5 Mi!)。
有什麼方法可以告訴它它的放置位置嗎?
我見過這個問題,但它僅處理基於瀏覽器的應用程式。我想覆蓋預設定位(即:Gnome Maps 用於獲取其粗略資料的相同東西)。
答案1
Linux 沒有「標準」地理位置 API – 某些程式從以下位置取得總計數據地理線索(GNOME 的一部分),而其他人則自行與 GPS/GNSS/Wi-Fi 設備通訊(重複 geoclue 的作用)。
GNOME 地圖始終從 Geoclue 守護程序取得其位置。由於沒有GPS,Geoclue 會根據1) 您的IP 位址和2) 您附近的Wi-Fi 網路(將其提交給Mozilla 的位置服務,但如果提供API 金鑰,則可以使用Google 的位置服務)來獲取其大致位置。由於您也沒有 Wi-Fi,因此一切都取決於 IP 地理定位資料庫認為您所在的位置。
目前Geoclue才不是有一個參數來設定固定位置。您剩下的選擇是:
- 破解 Geoclue 原始程式碼以始終返回固定答案。
- 將 Geoclue 守護程式本身替換為自訂守護程式(用 Python 或任何其他具有良好 D-Bus API 綁定的語言編寫),並使其始終返回固定答案。
- 透過安裝使 Geoclue 認為已連接 GPS 設備全球定位系統守護程式並使用包含的假GPS工具(見下文)。
將 Geoclue 中的 Mozilla 位置服務 URL 變更為指向始終傳回固定答案的自訂 Web 服務。(Bugzilla 線程中提到了這一點,但由於您沒有任何 Wi-Fi 硬件,我認為 Geoclue 甚至不會首先詢問 MLS...)- 新增 Wi-Fi 適配器,以便 Geoclue 可以掃描附近的網路並透過 Mozilla 定位服務將它們對應到您的位置(這也需要 NetworkManager)。
對於不使用 Geoclue 但透過直接對話獲得 GPS 支援的程序全球定位系統(例如Firefox),您可以使用假GPS讓它假裝始終連接 GPS 感應器。然而,它沒有簡單的選項來指定座標——您需要給它一個真實 GPS 設備捕獲的輸出,可能需要手動編輯以獲得正確的座標。