HTML5地理位置与Google Maps Geolocation api

Lia*_*iam 23 javascript html5 google-maps

我有点困惑为什么我会选择使用限制访问的Google Maps Geolocation API而不是HTML5 的免费和(显然)无限navigator.geolocation功能?

据我所知,谷歌版本的唯一优势是它增加了对IE8等浏览器的支持.我错过了一些重要的东西吗?或者是没有什么区别?


在进一步调查中,我们注意到,当我们navigator.geolocation在Chrome中使用它实际上是打电话给谷歌api获取信息(由6年前的答案支持).所以这引出了一个问题,它仍然有限吗?如果是这样的话在多长时间内?

aps*_*ers 19

Google Maps Geolocation API是一个HTTP端点,可接受用户提供的有关附近Wifi网络和手机信号塔的JSON数据,并生成用户位置的估算值.

HTML5 navigator.geolocation对象提供了一个浏览器API,它执行一些操作,然后生成用户位置的估计值.从W3C地理定位规范:

API本身与底层位置信息源无关.常见的位置信息源包括全球定位系统(GPS)和从网络信号推断的位置,例如IP地址,RFID,WiFi和蓝牙MAC地址,以及GSM/CDMA小区ID,以及用户输入.

navigator.geolocation功能可以使用浏览器应用程序可用的任何信息,包括来自设备的GPS硬件的任何信息(如果有的话).当然,它也可以使用可以访问的任何第三方Web API(可能包括Google Maps Geolocation API).没有必须使用的必要方法或输入; 浏览器可以做任何事情来进行位置估算.它可能比谷歌的方法更好或更差,取决于他们的具体实施,或浏览器可能(如你所建议)实际上直接使用谷歌的API.

简而言之,谷歌的API是一种方式,"基于这个单元格和Wifi信息,告诉我我在哪里." HTML5 API是一种告诉浏览器的方式,"您可以访问Internet以及我的设备可用的所有物理输入;以某种方式找出我的位置."

我并不感到惊讶,如果没有GPS,浏览器可能会将其地理位置工作外包给像谷歌这样的第三方服务.浏览器供应商通常对制作浏览器感兴趣,而不是编写强大的服务来解决将单元/ Wifi数据转换为位置信息的难题.此外,它需要大量关于各种塔和Wifi SSID位置的地理空间数据.它会使浏览器膨胀以在本地保存所有信息,并且任何尝试让thevendor远程托管信息都会在功能上成为谷歌已知的良好服务的竞争对手.

  • HTML5 API可能会使用更多(更准确)的本地物理源,如GPS,或者它可能不会,这取决于更广泛的实现和硬件可用性(即您的设备实际上是否有GPS?).很难说这是否会使Web API变得"更好"或"更差".浏览器(和硬件可用性)之间的实现可能会有所不同,而Google会为您提供与浏览器无关的一致结果,所以我猜也是如此. (2认同)

小智 6

HTML5 API将触发模式弹出窗口,要求用户授予权限,而Google Maps Geolocation API将绕过该弹出窗口。尽管HTML5的范围可以更深,这取决于浏览器的实现方式,但它们本身的位置收集方法非常相似。

HTML5示例-https: //developer.mozilla.org/zh-CN/docs/Web/API/Geolocation/Using_geolocation

Google Maps Geolocation示例-http: //webkay.robinlinus.com/

另请参阅:https : //developers.google.com/maps/articles/geolocation

  • Maps API可能会为您提供一个不支持HTML5的较旧浏览器的选项,或者当然不支持非浏览器的客户端(本机等)
  • 免费每日配额后,Maps API将花费您$
  • 在大多数情况下,HTML5方法应优先于其他方法