W3C地理位置应用程序接口
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所服务。通常地理位置将通过使用这些方法的其中一种来尝试确定设备位置。
实现虽然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代码。这段代码使用 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
};
另请参阅参考文献
外部链接 |
Portal di Ensiklopedia Dunia