最近在调试一个web app时遇到了一个诡异的情况,什么错误信息都没有。排查后发现是Google Chrome浏览器的问题。
因为web app是基于定位的,所以使用了HTML5的navigator.geolocation
API。但是在我什么都没改动的情况下,突然刷新以后获取不到定位了,也没有任何错误信息。而且在手机上是正常的,只是电脑上就是不可以。
console.log
很久以后发现,navigator.geolocation.getCurrentPosition
不会触发success
function,于是把
navigator.geolocation.getCurrentPosition(success)
改成了
navigator.geolocation.getCurrentPosition(success, function(error){console.log(error);}, {timeout:300})
终于出现错误报告了。
error code 2: network location provider https://www.googleapis.com 403
Google以后发现,是因为定位用到了Google Maps API,这个API对免费用户有使用限制,而Google Chrome的使用者很明显是没交租子的,于是调用的太频繁就被403
了。更搞笑的是,也没有办法成为付费用户。
就好像用电脑用到一半,突然没有任何征兆或者提示就不能打字了,因为键盘有输入数量限制,除非买更贵的键盘,但是这种键盘即使买回来也不能插到这台电脑上用。
那么问题来了,Google Maps会在半路上尥蹶子吗,Android呢?