W3C地理位置應用程式介面

首次出版 | 2008年12月22日[1][2] |
---|---|
最新版本 | REC-geolocation-20250411[3]![]() 2025年4月11日 |
組織 | |
委員會 | Geolocation Working Group[4] |
編輯 | Marcos Cáceres(Apple Inc.) Reilly Grant(Google)[4] |
領域 | 地理位置資訊 |
網站 | www |
W3C地理位置應用程式介面(W3C Geolocation API)是一項由全球資訊網協會提出的標準,旨在標準化接收客戶端側裝置的地理位置資訊的介面。[4]此標準定義了一系列相容ECMAScript標準的對象,這些對象執行於客戶端應用程式中並通過查詢對應用程式介面(API)透明的位置資訊伺服器獲得裝置位置。最常見的位置資訊來源為IP位址、Wi-Fi、藍牙、MAC位址、無線射頻辨識(RFID)、Wi-Fi接入位置、裝置全球定位系統(GPS)及GSM/CDMA小區辨識碼。隨後伺服器根據可用的最佳位置資訊返回特定精度的地理位置。
部署於網頁瀏覽器
[編輯]網頁可在瀏覽器實現的情況下使用地理位置API。歷史上,某些瀏覽器可通過Google Gears外掛程式實現此功能,但這一專案於2010年廢止且其依賴的伺服器端側API於2012年停止回應。[5][6]
地理位置API適合應用於與行動裝置(如個人數位助理與智慧型手機)適配的網頁程式。在桌面電腦上,W3C地理位置API自Firefox 3.5、Google Chrome、[7]Opera 10.6、[8]Internet Explorer 9.0、[9]和Safari 5即被支援。掌上裝置上,它適用於Android(韌體版本2.0+)、iOS、Windows Phone與Maemo。W3C地理位置應用程式介面同樣被發布於2010年11月24日的Opera Mobile 10.1實現,支援對Android和Symbian(S60第3及第5代)系統。[10]
Google Gears為老舊和不相容的瀏覽器提供了地理位置支援,包括Internet Explorer 7.0+,且Google Chrome原生實現Gears的功能。它同樣也能在行動裝置上支援地理位置,通過提供Android瀏覽器(2.0版本之前)及Windows Mobile版Opera Mobile外掛程式的方式實現。但是,Google Gear API與W3C地理位置API且已不受支援。
特性
[編輯]W3C地理位置API的結果通常會返回4項位置屬性:經度、緯度(坐標)、海拔(高度)和[位置精度]。這些資料均基於位置來源。在某些查詢中,海拔可能不返回任何值。
位置來源
[編輯]地理位置API不提供位置資訊。位置資訊由裝置所取得(例如智慧型手機、PC或數據機),隨後才能在瀏覽器中被API所服務。通常地理位置將通過使用這些方法的其中一種來嘗試確定裝置位置。
- GPS(全球定位系統)
- 通常適用於有著GPS的裝置。一部有著GPS且設定到高精度模式的智慧型手機可能從此來源取得位置資料。GPS從衛星訊號中計算位置資訊。此方法有著最高的準確度;在大多數Android智慧型手機中,定位準確度可達到10米內。
- 行動網路位置
- 手機追蹤可在無需內建GPS晶片的情況下定位手機或無線數據機。
- WiFi定位系統
- 若在室內使用WiFi,裝置最有可能使用WiFi定位系統。部分wifi存取點有著定位服務能力。
- IP位置定位
- 基於最近具有公網IP裝置(可為電腦、所連接的路由器或是路由器所使用的ISP)的檢測位置。此位置資訊基於可用的IP資訊,但諸多情況下使用者的IP都隱藏在網際網路服務提供者NAT的背後,精度只能確保為城市級、地區級甚至是國內級。
實現
[編輯]雖然W3C地理位置API未規定實現方法,但是它基於現有的技術構建而成且被Google Gears地理位置API所嚴重影響。例如:Firefox的地理位置實現[11]使用Google的網路定位提供商。[12]
Google Gears地理位置通過傳送可提示使用者物理位置的一系列參數至網路定位提供商伺服器工作,定位伺服器預設為Google所提供的(code.l.google.com)。[13]部分參數為檢測到的移動基站及Wi-Fi網路列表與其訊號強度。這些參數隨後被打包進JavaScript對象表示法(JSON)資訊中並通過HTTP POST傳送至網路定位提供商。基於這些參數,網路定位提供商可計算位置。人們通常使用位置資訊來強制訪問控制、在地化與自訂內容;分析流量、個人化網路廣告並防止可能的身分竊取。[14]
範例代碼
[編輯]下列是一段用於檢測瀏覽器是否包含地理位置API並利用其來取得當前裝置位置的簡單JavaScript代碼。這段代碼使用<body onload="geoFindMe()">
建立了可於HTML中呼叫的函式:
const geoFindMe = () => {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(success, error, geoOptions);
} else {
console.log("阁下的网页浏览器不支持地理位置服务。");
}
}
const success = (position) => {
const latitude = position.coords.latitude;
const longitude = position.coords.longitude;
const altitude = position.coords.altitude;
const accuracy = position.coords.accuracy;
console.log(`纬度:${latitude} 经度:${longitude}`);
}
const error = (error) => {
console.log(`由于 ${error.code}: ${error.message} 无法获取阁下的位置`);
}
const geoOptions = {
enableHighAccuracy: true,
maximumAge: 30000,
timeout: 27000
};
另請參閱
[編輯]參考文獻
[編輯]- ^ Geolocation API Specification 2nd Edition Publication History - W3C. n.d. [2021-04-21].
- ^ Popescu, Andrei. Geolocation API Specification. W3C. Geolocation Working Group. 2008-12-22 [2021-04-21].
- ^ https://www.w3.org/TR/2025/REC-geolocation-20250411/.
- ^ 4.0 4.1 4.2 Cáceres, Marcos; Grant, Reilly. Geolocation. W3C. [2025-05-12]. (原始內容存檔於2021-05-24).
- ^ Geolocation API: Gears API: Google Code. 9 July 2009 [2018-08-11]. (原始內容存檔於2012-03-11).
- ^ GeolocationAPI - gears - Provides the geolocation of a device running a Gears-enabled web browser. - Improving Your Web Browser - Google Project Hosting (頁面存檔備份,存於網際網路檔案館). Code.google.com. Retrieved on 2014-06-01.
- ^ A new Chrome stable release: Welcome, Mac and Linux!. 25 May 2010 [2018-08-11]. (原始內容存檔於2011-10-07).
- ^ Kleinhout, Huib. Opera 10.60 goes final. My Opera. Opera Software. 1 July 2010 [2 July 2010]. (原始內容存檔於2010-07-02).
- ^ W3C Geolocation API in IE9. [2018-08-11]. (原始內容存檔於2011-06-24).
- ^ Opera.com. Opera Mobile 10.1 for Nokia smartphones goes final. 2010-11-25 [2018-08-11]. (原始內容存檔於2013-02-23).
- ^ Location-Aware Browsing. Mozilla Firefox. Mozilla. [2018-08-11]. (原始內容存檔於2018-02-20).
- ^ Geolocation API Network Protocol: Gears API. Google Code. Google. [8 August 2011]. (原始內容存檔於2012-02-18).
- ^ WebScanNotes.com: W3C Geolocation API. WebScanNotes.com. [2018-08-11]. (原始內容存檔於2012-03-06).
- ^ King, Kevin F. Personal Jurisdiction, Internet Commerce, and Privacy: The Pervasive Legal Consequences of Modern Geolocation Technologies. 8 June 2010. SSRN 1622411
.