所有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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...