W3C地理位置應用程式接口

W3C地理位置應用程式接口(W3C Geolocation API)是一項由全球資訊網聯盟提出的標準,旨在標準化接收客戶端側設備的地理位置信息英語geographical location information的接口。[1]此標準定義了一系列兼容ECMAScript標準的對象,這些對象執行於客戶端應用程式中並通過查詢對應用程式接口(API)透明的位置信息伺服器英語Location Information Server獲得設備位置。最常見的位置信息來源為IP位址Wi-Fi藍牙MAC地址射頻識別(RFID)、Wi-Fi接入位置、設備全球定位系統(GPS)及GSM/CDMA小區識別碼。隨後伺服器根據可用的最佳位置信息返回特定精度的地理位置。

部署於網頁瀏覽器 編輯

網頁可在瀏覽器實現的情況下使用地理位置API。歷史上,某些瀏覽器可通過Google Gears插件實現此功能,但這一項目於2010年廢止且其依賴的服務端側API於2012年停止響應。[2][3]

地理位置API適合應用於與行動裝置(如個人數碼助理智慧型手機)適配的網頁程序。在桌面計算機上,W3C地理位置API自Firefox 3.5、Google Chrome[4]Opera 10.6、[5]Internet Explorer 9.0、[6]和Safari 5即被支持。掌上設備上,它適用於Android(固件版本2.0+)、iOSWindows PhoneMaemo。W3C地理位置應用程式接口同樣被發布於2010年11月24日的Opera Mobile 10.1實現,支持對Android和Symbian(S60第3及第5代)系統。[7]

Google Gears為老舊和不兼容的瀏覽器提供了地理位置支持,包括Internet Explorer 7.0+,且Google Chrome原生實現Gears的功能。它同樣也能在行動裝置上支持地理位置,通過提供Android瀏覽器(2.0版本之前)及Windows MobileOpera Mobile插件的方式實現。但是,Google Gear API與W3C地理位置API且已不受支持。

特性 編輯

W3C地理位置API的結果通常會返回4項位置屬性:經度、緯度(坐標)、海拔(高度)和[位置精度]。這些數據均基於位置來源。在某些查詢中,海拔可能不返回任何值。

位置來源 編輯

地理位置API不提供位置信息。位置信息由設備所獲取(例如智慧型手機、PC或數據機),隨後才能在瀏覽器中被API所服務。通常地理位置將通過使用這些方法的其中一種來嘗試確定設備位置。

GPS(全球定位系統)
通常適用於有著GPS的設備。一部有著GPS且設置到高精度模式的智慧型手機可能從此來源獲取位置數據。GPS從衛星信號中計算位置信息。此方法有著最高的準確度;在大多數Android智慧型手機中,定位準確度可達到10米內。
行動網路位置
手機追蹤英語Mobile phone tracking可在無需內置GPS晶片的情況下定位手機或無線數據機。
WiFi定位系統
若在室內使用WiFi,設備最有可能使用WiFi定位系統英語Wi-Fi positioning system。部分wifi接入點有著定位服務能力。
IP位置定位
基於最近具有公網IP設備(可為計算機、所連接的路由器或是路由器所使用的ISP)的檢測位置。此位置信息基於可用的IP信息,但諸多情況下用戶的IP都隱藏在網際網路服務提供商NAT的背後,精度只能確保為城市級、地區級甚至是國內級。

實現 編輯

雖然W3C地理位置API未規定實現方法,但是它基於現有的技術構建而成且被Google Gears地理位置API所嚴重影響。例如:Firefox的地理位置實現[8]使用Google的網絡定位提供商。[9]

Google Gears地理位置通過發送可提示用戶物理位置的一系列參數至網絡定位提供商伺服器工作,定位伺服器默認為Google所提供的(code.l.google.com)。[10]部分參數為檢測到的移動基站及Wi-Fi網絡列表與其信號強度。這些參數隨後被打包進JavaScript對象表示法(JSON)信息中並通過HTTP POST發送至網絡定位提供商。基於這些參數,網絡定位提供商可計算位置。人們通常使用位置信息來強制訪問控制、本地化與自定義內容;分析流量、個人化網路廣告並防止可能的身份竊取。[11]

示例代碼 編輯

下列是一段用於檢測瀏覽器是否包含地理位置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
};

另請參閱 編輯

參考文獻 編輯

  1. ^ Popescu, Andrei (editor, Google Inc.). Geolocation API Specification: W3C Recommendation 24 October 2013. W3C. [4 February 2016]. (原始內容存檔於2021-05-24). 
  2. ^ Geolocation API: Gears API: Google Code. 9 July 2009 [2018-08-11]. (原始內容存檔於2012-03-11). 
  3. ^ 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.
  4. ^ A new Chrome stable release: Welcome, Mac and Linux!. 25 May 2010 [2018-08-11]. (原始內容存檔於2011-10-07). 
  5. ^ Kleinhout, Huib. Opera 10.60 goes final. My Opera. Opera Software. 1 July 2010 [2 July 2010]. (原始內容存檔於2010-07-02). 
  6. ^ W3C Geolocation API in IE9. [2018-08-11]. (原始內容存檔於2011-06-24). 
  7. ^ Opera.com. Opera Mobile 10.1 for Nokia smartphones goes final. 2010-11-25 [2018-08-11]. (原始內容存檔於2013-02-23). 
  8. ^ Location-Aware Browsing. Mozilla Firefox. Mozilla. [2018-08-11]. (原始內容存檔於2018-02-20). 
  9. ^ Geolocation API Network Protocol: Gears API. Google Code. Google. [8 August 2011]. (原始內容存檔於2012-02-18). 
  10. ^ WebScanNotes.com: W3C Geolocation API. WebScanNotes.com. [2018-08-11]. (原始內容存檔於2012-03-06). 
  11. ^ King, Kevin F. Personal Jurisdiction, Internet Commerce, and Privacy: The Pervasive Legal Consequences of Modern Geolocation Technologies. 8 June 2010. SSRN 1622411 . 
  1. 如何在JavaScript中實現W3C地理位置API頁面存檔備份,存於網際網路檔案館
  2. 我在哪 - 一項顯示於Google地圖上的W3C地理位置頁面存檔備份,存於網際網路檔案館

外部連結 編輯