Firefox 3.5 中的地理定位

这篇文章来自 Doug Turner,他是 Firefox 3.5 中地理定位支持背后的工程师之一。

位置无处不在。在撰写本文时,我正在加拿大多伦多的一家咖啡店里。如果我在 URL 地址栏中输入 google,它会根据我的 IP 地址将我带到 www.google.ca,即 Google 的加拿大版本。当我想找到离我最近的电影院时,我通常只需输入我的邮政编码。这些信息通常存储在网站上,以便下次更容易找到电影院。在这两种情况下,让 Web 应用程序自动确定我的位置都更加方便。事实上,我不知道多伦多的邮政编码是什么。我知道如何找到它,但仅仅为了告诉一个 Web 应用程序我的位置而做这么多工作,这实在太麻烦了。

Firefox 3.5 包含一个简单的 JavaScript API,允许您快速启用 Web 应用程序的地理定位功能。它允许用户选择性地与网站共享其位置,而无需输入邮政编码。接下来是关于如何在 Firefox 3.5 中使用地理定位、其工作原理以及使用地理定位时应采取的一些预防措施的概述。

基础知识

获取用户的位置非常简单

function showPosition(position) {
    alert(position.coords.latitude + “ “ +
    position.coords.longitude);
}

navigator.geolocation.getCurrentPosition(showPosition);

getCurrentPosition 的调用获取用户的当前位置并将其放入一个警告对话框中。位置以经度和纬度表示。是的,就这么简单。

当您请求这些信息时,用户会看到如下所示的通知栏

他们的选择是允许或不允许,以及是否记住。

处理错误

在您的代码中处理两种错误情况非常重要

首先,用户可以拒绝或不响应位置信息请求。API 允许您设置一个可选的错误回调。如果用户明确取消了请求,您的错误回调将被调用并带有一个错误代码。在用户没有响应的情况下,不会触发任何回调。为了处理这种情况,您应该在 getCurrentPosition 调用中包含一个超时参数,当计时器到期时,您将获得一个错误回调。

navigator.geolocation.getCurrentPosition(successCallback,
                                         errorCallback,
                                         {timeout:30000});

使用此代码,如果用户取消,您的 errorCallback 函数将被调用。如果 30 秒过去并且用户没有响应,它也会被调用。

其次,用户位置的准确性可能会随着时间的推移而发生很大变化。这可能出于几个原因

  • 确定一个人位置的不同方法具有不同的准确度级别。
  • 用户可能选择不与您共享其确切位置。
  • 许多 GPS 设备的准确度有限,具体取决于天空的视野。随着时间的推移,如果您的天空视野变差,准确度也会变差。
  • 许多 GPS 设备可能需要几分钟才能从非常粗略的位置变为非常具体的位置,即使天空视野良好。

这些情况可能并且将会发生,支持准确度的变化对于提供良好的用户体验非常重要。

如果要监视位置的变化,可以使用 watchPosition 回调 API

navigator.geolocation.watchPosition(showPosition);

showPosition 将在每次位置发生变化时被调用。

请注意,您还可以通过定期调用 getCurrentPosition 来监视位置的变化。但是,出于节能和性能考虑,我们建议您在可以的情况下使用 watchPosition。回调 API 通常可以节省电量,并且仅在需要时才会被调用。这将使浏览器更具响应性,尤其是在移动设备上。

有关更多信息,请查看 API 草案规范,其中包含其他可能有用的示例。

幕后

获取位置信息有几种常见的方法。最常见的是本地 WiFi 网络、IP 地址信息和连接的 GPS 设备。在 Firefox 3.5 中,我们使用本地 WiFi 网络和 IP 地址信息来尝试猜测您的位置。

有一些公司驾驶汽车四处寻找 WiFi 接入点,并记录地球上特定点处的接入点信号强度。然后他们将所有这些收集到的数据放入一个大型数据库中。然后他们拥有允许您提出“如果我看到这些接入点,我在哪里?”问题的算法。这是 Firefox 3.5 确定您位置的主要方式。

但并非每个人都有 WiFi 网卡。并非每个地方都已被扫描过 WiFi。在这种情况下,Firefox 将使用您的本地 IP 地址来尝试使用反向数据库查找确定您的位置,该查找将您的 IP 地址大致映射到一个位置。IP 推导的位置通常比 WiFi 推导的位置准确度低得多。例如,在多伦多,来自 WiFi 的位置精确到 150 米以内。使用 IP 地址相同位置大约为 25 公里。

隐私

保护用户隐私对 Mozilla 来说非常重要——这是我们核心使命的一部分。在人们在线收集的数据领域,位置信息可能特别敏感。事实上,欧盟将位置信息视为个人可识别信息 (PII),必须相应地处理(指令 95/46/EC)。我们认为用户应该严格控制何时与其网站共享其数据。这就是为什么 Firefox 在与网站共享位置信息之前会询问用户,允许用户轻松“忘记”用户已与其共享位置的所有位置,并在页面信息中显示共享设置。

Firefox 会尽其所能保护我们用户的隐私,但此外,W3C 地理定位工作组还针对网站开发人员和运营商提出了以下隐私注意事项

  • 接收者必须仅在必要时请求位置信息。
  • 接收者必须仅将位置信息用于提供给他们的任务。
  • 接收者必须在完成该任务后处理位置信息,除非用户明确允许保留。
  • 接收者还必须采取措施保护此信息免遭未经授权的访问。
  • 如果存储了位置信息,则应允许用户更新和删除此信息。
  • 位置信息的接收者不得在未经用户同意的情况下重新传输位置信息。重新传输时应注意谨慎,并鼓励使用 HTTPS。
  • 接收者必须清楚且醒目地披露他们正在收集位置数据的事实、收集目的、数据保留时间、数据安全方式、数据共享方式(如果共享)、用户如何访问、更新和删除数据,以及用户对数据拥有的任何其他选择。此披露必须包含对上述指南的任何例外情况的解释。

显然,这些都是自愿建议,但我们希望它能成为良好网站行为的基础,用户将帮助执行这些行为。

注意事项

我们已实施了 W3C 地理定位规范 的第一个公开草案。一些小细节可能会发生变化,但我们将鼓励工作组保持向后兼容性。

我们知道的一个可能会影响您的问题是 enableHighAccuracy 可能被重命名为另一个名称,例如 useLowPower。出于兼容性考虑,Firefox 3.5 包含 enableHighAccuracy 调用,尽管它目前没有任何作用。如果调用被重命名,我们很可能会同时包含这两个版本以确保兼容性。

结论

Firefox 3.5 代表了对地理定位和大量其他标准的支持的第一步,这些标准正开始从各个工作组中脱颖而出。我们知道人们会喜欢此功能,因为它适用于地图应用程序、照片网站以及 Twitter 和 Facebook 等网站。对我们来说,最有趣的是知道人们会发现我们甚至没有想到的此功能的新用途。网络正在发生变化,位置信息在其中发挥着巨大的作用。我们很高兴能成为其中的一部分。

关于 Christopher Blizzard

一次发布,让网络变得更好。

Christopher Blizzard 的更多文章…


29 条评论

  1. […] 关于 Firefox 3.5 中地理定位的文章:https://hacks.mozilla.ac.cn/2009/06/geolocation/ […]

    2009 年 6 月 9 日 05:11

  2. […] 3.5 即将发布,并且将包含地理定位。根据这篇文章,“Firefox 3.5 包含一个简单的 JavaScript API,允许您快速启用 Web […]

    2009 年 6 月 9 日 06:10

  3. […] Firefox 地理定位支持背后的工程师之一,撰写了一个关于 Firefox 3.5 中地理定位的精彩背景故事 (hacks.mozilla.org)。一篇非常有趣的文章,事实证明,地理定位不仅仅用于 […]

    2009 年 6 月 9 日 08:29

  4. […] 原文地址:geolocation in Firefox 3.5 […]

    2009 年 6 月 9 日 23:39

  5. […] geolocation in Firefox 3.5 […]

    2009 年 6 月 10 日 17:35

  6. […] geolocation in Firefox 3.5 […]

    2009 年 6 月 11 日 05:56

  7. […] geolocation in Firefox 3.5 […]

    2009 年 6 月 11 日 16:18

    1. lia hart

      friefox 谢谢

      2011 年 4 月 4 日 02:42

  8. […] 几天前,我们有一篇 Doug Turner 的文章,描述了地理定位在 Firefox 3.5 中的工作原理。René-Luc 采用了 Firefox 3.5 中的地理定位功能,并将其与数据 […]

    2009 年 6 月 12 日 19:52

  9. […] 通过此链接,您可以了解如何访问核心 API […]

    2009 年 6 月 21 日 13:40

  10. […] 原因 #3 - 地理定位。Firefox 3.5 包含对地理定位的支持。这意味着用户可以授予应用程序了解其位置的权限。在 feedly 的上下文中,这意味着我们将很快能够与一些合作伙伴合作,并在您的封面和摘要中提供“附近”部分。更多相关信息 + 更少的输入/配置 = 好处。详细了解地理定位支持 […]

    2009 年 6 月 30 日 12:13

  11. […] 这篇文章来自 Doug Turner,他之前写过关于地理定位的文章。Doug 在 Mozilla 的移动 […]

    2009 年 7 月 1 日 10:06

  12. Polski Sklep

    另一种服务——它可以在大多数 Web 浏览器上启用地理定位——提供 loki.com。在我的网站上,我选择为 Mozilla 浏览器支持 Mozilla 地理定位,为其他浏览器支持 Loki。

    2009 年 7 月 3 日 04:40

  13. Ray Watkins

    我还没有在任何地方看到关于地理定位 API 如何与连接的 GPS 集成的示例或讨论。在我的 iPhone 上,它由操作系统处理,但我找不到任何文档。

    有人知道如何在串口或 USB 端口上连接 GPS 接收器以及 Firefox 3.5 中的地理定位 API 吗?

    2009 年 7 月 6 日 16:17

  14. […] 原文地址:geolocation in Firefox 3.5 […]

    2009 年 7 月 6 日 19:57

  15. […] @evan 这对 Laconi.ca 来说太棒了——查找本地用户:https://hacks.mozilla.ac.cn/2009/06/geolocation/ […]

    2009 年 7 月 11 日 12:54

  16. […] Geolocalización en Firefox 3.5 | Mozilla Hacks […]

    2009 年 7 月 13 日 03:23

  17. Tim

    我发现令人惊讶的是,Firefox 的地理定位功能没有查找和使用连接的 GPS 设备来确定浏览器位置。当然,这应该是它首先要查找的内容,并且只有在此失败时才回退到其他方法?WiFi 方法非常巧妙,但如果可用,GPS 可能更可靠且更准确。

    2009 年 8 月 8 日 05:25

  18. Sascha Hendel

    firefox(基于 WiFi/IP)的地理定位支持很棒,但我建议在 firefox 中包含一个设置菜单以手动设置您的位置!
    如果您使用的是台式计算机,则地理定位不会经常改变;),并且只需手动设置一次位置(而不是使用 IP 或 WiFi 检测)就会很容易(并且更精确)。

    Sascha

    2009 年 8 月 17 日 09:23

  19. […] 在 Mozilla Hacks 网站上详细了解地理定位功能,根据那里的评论,我不是唯一一个想知道 GPS […]

    2009 年 8 月 20 日 09:26

  20. […] 在一系列从 Mozilla Hacks 博客翻译的文章中,今天我将翻译 Doug Turner 撰写的一篇文章 Geolocation in Firefox 3.5,他是 Firefox 地理定位支持的开发者之一 […]

    2009 年 8 月 20 日 14:34

  21. […] 它的第一个体现是 Mozilla 的 Fennec 移动浏览器,它支持定位功能。 […]

    2009 年 9 月 30 日 02:55

  22. […] API 草案规范的新特性。Opera 在几个月前的版本中就实现了该规范,并且它将在 Firefox 3.5 的版本中实现。最近,很明显,新版 iPhone 3.0 软件中的 Mobile Safari […]

    2009 年 11 月 12 日 01:13

  23. z.Yleo77

    未来很有用的功能……但需要大多数浏览器支持.. ff 是一个很好的例子

    2009 年 11 月 14 日 01:24

  24. […] hacks.mozilla.org: geolocation in Firefox 3.5 […]

    2009 年 12 月 2 日 06:51

  25. […] 地理定位 […]

    2010 年 4 月 29 日 17:12

  26. Vitold S

    好的。我四处查看,并查看带有地理定位 API 的 Opera,并尝试使用它。我检索到了位置,但地理定位 API 在撒谎……。

    我的Windows XP Home系统自带GPS,但是FireFox无法识别它。我使用CityGide,另一个导航系统,一切正常,但FireFox却不行。

    我能否开发一个插件,让它能够与标准的COM端口NMEA GPS导航仪一起工作?

    谁可以帮助我?Firefox的开发者吗?

    2010年9月20日 凌晨1:41

  27. bob

    我该如何关闭这种侵犯隐私的行为?
    我刚从谷歌搜索页面过来,我注意到我在新的侧边栏搜索时,它显示了我的城镇名称。
    在链接到该页面的页面上,他们会告诉你,他们一直自动执行此操作,除非你使用了工具栏。我不是苹果的粉丝,也不是谷歌的粉丝。我不会因为软件名称流行就安装它。
    这种假设的行为让我感到厌恶,我以为Firefox会做得更好。
    结果是你们为他们启用了这个功能。
    那么,在哪里可以找到内置的关闭开关,让我说“去你的”?当我想进行本地信息搜索时,我会自己进行。
    此致
    一位不悦的用户

    2010年11月15日 上午10:18

  28. […] hacks.mozilla.org: geolocation in Firefox 3.5 […]

    2011年5月10日凌晨2:40

本文评论已关闭。