三星Galaxy Devices无法使用geolocation.getCurrentPosition

时间:2013-08-07 10:03:10

标签: android jquery galaxy samsung-mobile

好的,所以我一直在寻找对这个问题的充分回应。我有一个使用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

5 个答案:

答案 0 :(得分:20)

我和几周前的问题完全相同。我试着在互联网上研究大约2周,看看我能找到的所有解决方案。毕竟,我发现了:

  1. 如果您的目标手机上从未打开过Google地图,则此功能无效。
  2. 重置GPS状态,然后重新启动手机。这可能有所帮助。
  3. 如果步骤2不起作用,请重置GPS状态,在“日期时间”设置中自动启用“获取时区”,然后重新启动手机。
  4. 据我所知,代码没有任何问题。事实上,我的代码与您的代码几乎相同。它不仅发生在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上工作。