所有Android浏览器中的JavaScript Geolocation都失败了 – 在iOS和PC上工作

这是我的基本代码:

if (navigator.geolocation) {

     // WILL GET TO THIS POINT WITH TEST `ALERT()`  

      navigator.geolocation.getCurrentPosition(

     // WILL NOT GET OT THIS POINT IN ANDROID BROWSER

     function(position) {
        var latitude = position.coords.latitude;
        var longitude = position.coords.longitude;
      }, showError, {
        enableHighAccuracy: true,
        timeout : 5000,
        maximumAge: 0
       }
       );
    } else {
        return alert('No Geolocation Support.');
    }
};

它在iOS(Safari和Chrome)中运行良好;以及我尝试过的所有PC浏览器.

在Android上,我尝试过HTC Browser,Chrome和Dolphin.卫星看起来像正在搜索,它停止.我甚至不记得它要求我允许使用地理位置(可能忽略了那部分)

更新:它适用于我的Nexus 10 Chrome浏览器.但不是我的HTC One X.

更新2 – 这似乎只发生在一个Android设备,AT& T HTC One X.所有其他Android设备,PC浏览器和iOS工作正常.在One X上我得到错误代码:Timeout.此外,GPS在此设备上工作正常.

最佳答案
你的代码绝对正确.我已经在Android 2.3中测试了这个在不同设备中的最新版本,包括HTC,三星,华硕平板电脑和三星平板电脑.即使在平板电脑中,它也能正常工作.检查设备是否在设备中设置了共享位置为false.当页面脚本请求位置时,浏览器将在android设备浏览器中请求用户权限.可能是你点击过,从不分享你的位置.请通过清除设备中的浏览器设置进行检查.我保证android 2.3中没有geolocation api问题而不会搞乱安全设置.

如果问题仍然存在,并且您想要添加至少一些polyfill,那么请检查此https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills并获得一些运气.他们根据您的IP usig geoIP数据库计算位置.

转载注明原文:所有Android浏览器中的JavaScript Geolocation都失败了 – 在iOS和PC上工作 - 代码日志