我知道很多人都问过这个问题,但我认为我没有找到正确的答案。我的问题是,当您在 Firefox 的桌面上运行 HTML 5 Geolocation API 并单击共享位置时,它会获取您的 IP 地址,但它如何知道必须使用哪些无线点才能找到您的距离?我在家里运行该应用程序,我得到了 50 m 的准确度,但我去隔壁的邻居有相同的互联网提供商,在他的桌面上我收到了 18 公里外的准确度?因此,如果有人可以向我解释这一点或指出我在哪里阅读这些信息会非常有帮助吗?
谢谢
我知道很多人都问过这个问题,但我认为我没有找到正确的答案。我的问题是,当您在 Firefox 的桌面上运行 HTML 5 Geolocation API 并单击共享位置时,它会获取您的 IP 地址,但它如何知道必须使用哪些无线点才能找到您的距离?我在家里运行该应用程序,我得到了 50 m 的准确度,但我去隔壁的邻居有相同的互联网提供商,在他的桌面上我收到了 18 公里外的准确度?因此,如果有人可以向我解释这一点或指出我在哪里阅读这些信息会非常有帮助吗?
谢谢
W3C Geolocation API 建立在现有技术之上,并深受 Google Gears Geolocation API 的影响。事实上,Firefox 的 Geolocation 实现使用了 Google 的网络位置提供程序。
Google Gears Geolocation 的工作原理是向网络位置提供商服务器发送一组参数,这些参数可以提示用户的物理位置,默认情况下,该服务器由 Google (code.l.google.com) 提供. 其中一些参数是移动基站列表及其信号强度,以及检测到的 Wi-Fi 网络列表及其信号强度。这些参数被封装成 JSON 消息,并通过 HTTP POST 发送给网络位置提供者。基于这些参数,网络位置提供者可以推断出位置。
“如果您允许网站通过此服务获取您的位置,我们(谷歌)将根据您设备的功能收集有关离您最近的 wifi 路由器的信息、离您最近的手机信号塔的手机 ID,以及您的 wifi 或手机信号强度。我们使用此信息将估计位置返回给 Firefox 浏览器,然后 Firefox 浏览器将估计位置发送到请求网站。对于发送到我们 (google) 服务的每个请求,我们 (google) 也收集您客户的 IP 地址、用户代理信息和唯一标识符。我们使用这些信息来区分请求,而不是识别您的身份。”
来源:http ://www.google.com/intl/en/privacy/lsf.html和http://en.wikipedia.org/wiki/W3C_Geolocation_API
HTML5 Geolocation API使用某些功能,例如全球定位系统 (GPS)、设备的互联网协议 (IP) 地址、最近的移动电话塔和用户输入,在用户的设备中检索用户的位置。使用 Geolocation API 检索的用户位置几乎是准确的,具体取决于用于检索位置的源类型。
这里有一个非常好的 HTML5 地理位置演示 ( http://html5demos.com/geo )。每当网站尝试使用以下提到的 API 之一获取您的位置时,浏览器会在调用 API 以共享您的位置之前询问您的许可。
Geolocation API 提供以下方法:
getCurrentPosition(successCallback, errorCallback, 选项)
用于检索用户的当前地理位置。
watchPosition(successCallback, errorCallback, 选项)
该函数返回一个 watchId 并使用更新后的坐标调用 successCallback。随着用户移动(如汽车中的 GPS),它会继续返回更新的位置。
clearWatch(watchId)
根据提供的 watchId 停止 watchPosition() 方法。
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(userPositionSuccess, userPositionError);
} else {
alert("Your browser does not support geolocation.");
}
function userPositionSuccess(position) {
alert("Latitude: " + position.coords.latitude + " Longitude: " + position.coords.longitude);
}
function userPositionError() {
alert("There was an error retrieving your location!");
}
地理位置 API 可让您与受信任的网站共享您的位置。页面上的 JavaScript 可以使用纬度和经度,而后者又可以将其发送回远程 Web 服务器并执行精美的位置感知操作,例如查找本地企业或在地图上显示您的位置。
在调用 getCurrentPosition() 期间会发生什么?正如我在本章开头提到的,地理位置支持是可选的。这意味着您的浏览器永远不会强迫您向远程服务器透露您当前的物理位置。用户体验因浏览器而异。在 Mozilla Firefox 中,调用 geolocation API 的 getCurrentPosition() 函数会导致浏览器在浏览器窗口顶部弹出一个“信息栏”。
对 getCurrentPosition() 的调用将立即返回,但这并不意味着您可以访问用户的位置。回调函数将使用单个参数调用,一个具有两个属性的对象:坐标和时间戳。时间戳就是计算位置的日期和时间。(由于这一切都是异步发生的,您无法真正知道什么时候会提前发生。用户可能需要一些时间才能阅读信息栏并同意分享他们的位置。具有专用 GPS 硬件的设备可能需要更多时间连接到 GPS 卫星。等等。)坐标对象具有纬度和经度等属性,这正是它们听起来的样子:用户在世界上的物理位置。
您可以从我获取上述信息的地方参考此链接:http: //diveintohtml5.ep.io/geolocation.html