8

好的,所以很长一段时间以来,我一直在寻找对这个问题的充分回应。navigator.geolocation.getCurrentPosition我有一个用于获取用户位置的 Web 应用程序。

三星 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

4

6 回答 6

21

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

  1. 如果您的目标手机上从未打开过谷歌地图,则此功能不起作用。
  2. 重置您的 GPS 状态,然后重新启动您的手机。它可能会有所帮助。
  3. 如果步骤 2 不起作用,请重置 GPS 状态,在日期时间设置中打开自动获取时区,然后重新启动手机。

据我所知,代码没有问题。事实上,我的代码和你的几乎一样。它不仅发生在 Galaxy 设备上,还发生在某些 HTC 上。我在 Galaxy S2、Galaxy Note 2、HTC Nexus One、HTC One X 和 HTC Incredible S 上遇到过这个问题。我认为这应该是 Android 设备和代码竞争之间的问题。

干杯,

于 2013-08-13T21:45:51.890 回答
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
        }

希望这可以帮助!

于 2013-09-12T15:37:12.140 回答
1

我有三星 Galaxy Trend Plus GT-S7580。我网站上的地理位置不适用于此设备。早些时候,它与华硕冲浪板一起工作,并且每个设置都可以访问互联网。一旦我不仅允许移动数据访问我的位置,还允许 wifi 网络以及连接到此设置的 Google 访问和收集数据,它就开始工作了。在这种情况下,它只是那个设置。

于 2014-11-14T01:45:41.750 回答
1

我在我的 Galaxy GT-N8013 平板电脑上遇到了同样的问题,getCurrentPosition 似乎不适用于 android,但它确实适用于 ios。为了解决这个问题,首先我增加了超时。其次,打开谷歌地图应用程序。第三,重启平板电脑。之后它就起作用了。

$cordovaGeolocation.getCurrentPosition({timeout: 30000, enableHighAccuracy: false})
于 2015-11-19T07:45:23.037 回答
1

对我来说,Chrome 似乎是个问题——浏览器不允许 HTTP 等不安全的来源。应该通过通过 HTTPS 传输数据来解决(请参阅 Chromium)。尝试使用备用浏览器时在我的 Galaxy S7 Edge 上工作。

于 2016-05-11T13:27:42.687 回答
0

对我来说,这只是一个安全问题,在本地主机getCurrentPosition上不起作用,但在 GitHub 页面上却可以!

于 2021-09-29T13:35:33.067 回答