好的,所以我一直在寻找对这个问题的充分回应。我有一个使用navigator.geolocation.getCurrentPosition
来获取用户位置的Web应用程序。
Samsung Galaxy设备上的本机浏览器几乎总是遇到getCurrentPosition代码问题。我已尝试使用回调和超时的此代码的各种变体,但它始终是相同的问题。很多人都记录了这个问题,有些人表示重新启动设备会起作用(有时重启会起作用,但并非总是如此 - 并且告诉用户重启设备的警报似乎超出了一定程度)。
有没有人想出一个使用getCurrentPosition在三星Galaxy设备上工作的万无一失的方法?这就是我正在使用的......
<script>
$(document).ready(function(){
if( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition( success, fail );
}
else {
alert("Sorry, your browser does not support geolocation services.");
}
function success(position) {
window.location = "mobile_set_coordinates.php?user_lat=" + position.coords.latitude +
"&user_lon=" + position.coords.longitude + "&accuracy=" + position.coords.accuracy;
}
function fail() {
// Could not obtain location
}
});
</script>
此外,这里还有一个关于该问题的讨论的链接:https://groups.google.com/forum/#!topic/phonegap/ESrHAjFHgFU
答案 0 :(得分:20)
我和几周前的问题完全相同。我试着在互联网上研究大约2周,看看我能找到的所有解决方案。毕竟,我发现了:
据我所知,代码没有任何问题。事实上,我的代码与您的代码几乎相同。它不仅发生在Galaxy设备上,也发生在某些HTC上。我在Galaxy S2,Galaxy Note 2,HTC Nexus One,HTC One X和HTC Incredible S上遇到了这个问题。我认为这应该是Android设备和代码竞争之间的问题。
干杯,
答案 1 :(得分:2)
我发生了类似的事情。 GPS可以在其他所有设备上正常工作,但它会在Galaxy设备上出错。
我发现,在这些设备上获取GPS位置可能需要10秒钟。我还必须将enabledHighAccuracy
变为假。这是我的代码。
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
function(position) {
// success!
},
function() {
// failed to get a GPS location before timeout!
}, {
enableHighAccuracy: false,
timeout: 10000,
maximumAge: 10000
});
} else {
// no support for geolocation
}
希望这有帮助!
答案 2 :(得分:1)
我有三星Galaxy Trend Plus GT-S7580。 我网站上的地理位置无法使用此设备。 早些时候它与华硕冲浪板一起工作,并且每个设置都可以访问互联网。只要我不仅允许移动数据访问我的地方,而且还允许wifi网络以及Google访问和连接到此设置的数据集合,它就开始工作了。在这种情况下,只有那个设置。
答案 3 :(得分:1)
我在我的Galaxy GT-N8013平板电脑上遇到了同样的问题,getCurrentPosition似乎无法在Android上运行,但它确实适用于ios。要解决此问题,首先我增加了超时。第二,打开谷歌地图应用程序。第三,重启平板电脑。之后就可以了。
$cordovaGeolocation.getCurrentPosition({timeout: 30000, enableHighAccuracy: false})
答案 4 :(得分:1)
对我来说,Chrome似乎是个问题 - 浏览器不允许像HTTP这样的不安全来源。应该通过HTTPS(see Chromium)传输数据来解决。在备用浏览器中尝试时,我在Galaxy S7 Edge上工作。