2011-09-24 65 views
13

为什么HTML5地理定位让你分享你的位置?使用地理定位的主要目的是什么,因为您可以使用IP地址获取位置。这两种方法有什么区别吗?为什么选择HTML5地理定位?

我在问,因为地理位置需要用户的许可,也不适用于所有浏览器。

+0

你不能使用IP地址的_accurate_位置。可以做的最好的是给出IP地址的ISP的位置。我曾经为一家拥有英国IP地址的美国公司工作...... –

+1

@John Saunders - 公平地说,这是IP位置数据库不能保持最新状态,而不是IP地址本身位于错误的位置。 – Spudley

+2

为什么? “IP位置数据库”从来不是,也不可能是使用特定IP地址的计算机位置的数据库。它绝不仅仅是发布IP地址的互联网服务提供商所在地的数据库。最好的情况是,它可以保持ISP的位置,尽管IP地址将被使用。而就我而言,路由实际上是在伦敦进行的,所以美国的所有数据包都经过了英国! –

回答

11

HTML5地理位置往往是很多比基于IP的地理位置更准确。

基于IP的地理位置取决于与ISP相关的数据库,以确定你在哪里。当你的ISP服务于一个非常大的区域并发布动态IP地址时,这并不适用。今天在一个城镇的地址可能在100英里外。此外,这些数据库通常不会经常更新。如果您的ISP销售IP块或将其移动到新城区,数据库可能仍然错误地认为您在其他地方。

HTML5位置使用您的浏览器提供的服务来确定您的位置。如果您的电脑内置了GPS(例如在许多移动设备和一些笔记本电脑上),它就会知道,您的位置正好是。这使得它对具有导航或位置组件的webapps更有用。对于没有GPS的设备,它通常可以根据附近已知的无线信号和其他因素提供非常好的近似值,例如跟踪连接到互联网时计算机所经过的路由器。确切的实现取决于计算机,可用的硬件以及浏览器如何选择做什么。

例如,当我检查一个基于IP的位置服务时,它说我在一个特定的大城市,与我生活在同一个地区,但实际上距离大约50英里。 当我使用基于HTML5位置的服务来确定我在哪里时,它只能关闭大约20个

如果您正在开发一个需要位置数据的web应用程序,尝试尽可能使用HTML5 GeoLocation。设置回退,以便如果 HTML5位置失败,则可以改为使用GeoIP解决方案。通过这种方式,您将在支持的浏览器和设备上获得最佳的准确性,但在HTML5数据不可用时仍会提供适当的解决方案。

如果使用geolocation-javascript project from Google Code,你可以使用下面的代码:

//determine if device has geo location capabilities 
if(geo_position_js.init()){ 
    geo_position_js.getCurrentPosition(success_callback,error_callback); 
} 
else{ 
    // use an AJAX request to look up the location based on IP address 
} 
+1

'error_callback'可能会产生Ajax请求,所以你可以简单地在'else'块中调用'error_callback()'。 –

+0

@ alpha123好点,这将是一个更有效的方式。 – nhinkle

8

地理定位是一个lot比IP地址更精确,虽然两者都可以伪造。

IP地址只是给你国家和一般地区。

地理位置为您提供:

  • 地理坐标(经度和纬度)
  • 速度(假设你能够测量该设备上;大多数平板电脑和智能手机可以)
  • 高度(此也取决于在设备上)顺时针
  • 度从北(再次,假定该设备支持此)

http://diveintohtml5.ep.io/geolocation.html有关于地理定位和HTML5地理定位API的一些很好的信息。 Here's W3C候选推荐。

2

您将看到的主要区别是准确性。 IP地址只能给你一个非常普遍的想法,说明某人可能在哪里......地理位置会告诉你他们到底在哪里。要详细了解地理位置,请转至here,并查看它的精确度。here

1

HTML5地理位置为客户端(浏览器)提供了机器位置信息的可能性。这可能比IP位置更准确。例如,客户端可以安装实际的GPS硬件,或者可以通过GSM或WiFi点对该位置进行三角测量。另一方面,知识产权的定位非常粗糙,并且不总是准确和误导。

2

通过IP地址获取用户的位置远远不够准确。 IP地址的位置主要基于可以请求的实际服务器的位置。通常这与实际用户的位置很远,所以它只提供基本区域。

另一方面,HTML5地理位置更精确,但用户的信息用于确定位置,并且通常还可以加速其他一些事情。这是基于设备的GPS(如果有的话)以及用户输入的信息。显然这样更准确。这两种方法都可以伪造。

2

通过IP地址获取位置只会给出一个模糊的位置(它几乎不比城镇更准确,并且通常远不如此准确,具体取决于您的位置和ISP)。

它有时也完全不准确:如果我使用VPN连接到我的公司网络,我将显示为在他们的办公室,因为我将从办公室获得IP地址,但实际上我可以从在世界上任何地方。

HTML5地理定位可以更加准确 - 如果您的设备中有GPS接收器,则它是完全准确的,但即使没有,在人口稠密的地区,它也可以以20米的精度获得您的位置,或者较少通过映射本地无线网络信号。无论你如何连接都无所谓,它永远是准确的。

由于HTML5地理位置非常准确,因此被认为是隐私风险,因此规范声明您必须在网站使用您的凝胶定位数据之前提供许可。而且,并非所有浏览器或机器都能够提供凝胶定位数据。因此,该网站必须能够处理不提供它的用户,并且不能依赖它提供。

IP地址位置没有这种限制,因为位置映射是由服务器使用公共可用的IP位置映射数据完成的。最终用户无法避免给出他们的IP地址,所以他们无法阻止网站使用它来映射他们。

所以两者是完全不同的。