这是我的基本代码:
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数据库计算位置.