热门问题
时间线
聊天
视角
W3C地理位置應用程式介面
来自维基百科,自由的百科全书
Remove ads
W3C地理位置應用程式介面(W3C Geolocation API)是一項由萬維網聯盟提出的標準,旨在標準化接收客戶端側裝置的地理位置資訊的介面。[4]此標準定義了一系列相容ECMAScript標準的對象,這些對象執行於客戶端應用程式中並通過查詢對應用程式介面(API)透明的位置資訊伺服器獲得裝置位置。最常見的位置資訊來源為IP位址、Wi-Fi、藍牙、MAC地址、無線射頻辨識(RFID)、Wi-Fi接入位置、裝置全球定位系統(GPS)及GSM/CDMA小區辨識碼。隨後伺服器根據可用的最佳位置資訊返回特定精度的地理位置。
Remove ads
部署於網頁瀏覽器
網頁可在瀏覽器實現的情況下使用地理位置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且已不受支援。
Remove ads
特性
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
};
Remove ads
另請參閱
- 基於位置的服務
- 本地搜尋
參考文獻
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads