Samsung Galaxy Devices不能使用geolocation.getCurrentPosition

好的,所以我一直在寻找这个问题的相当长的一段时间。 我有一个使用navigator.geolocation.getCurrentPosition获取用户位置的Web应用程序。

三星Galaxy设备上的本机浏览器几乎总是有getCurrentPosition代码的问题。 我已经尝试了各种各样的代码与callback和超时,但它总是相同的问题。 很多人都logging了这个问题,有些人表示重新启动设备将工作(有时重新启动工作,但并不总是 – 并告诉用户重新启动他们的设备的警告似乎超越了荒谬)。

有没有人想出了使用getCurrentPosition在Samsung Galaxy Device上工作的绝对方法? 这是我正在…

 <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

Solutions Collecting From Web of "Samsung Galaxy Devices不能使用geolocation.getCurrentPosition"

我和你几个星期前的问题完全一样。 我试图在互联网上研究大约两个星期,看看我能find的所有解决scheme。 毕竟,我发现:

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

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

干杯,

我遇到了非常类似的事情。 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 } 

希望这可以帮助!

我有一个三星Galaxy Trend Plus GT-S7580。 我网站上的地理位置不适用于此设备。 早些时候,它曾与一个华硕冲浪板,每个设置打开访问和从互联网。 只要我不仅允许移动数据访问我的地方,而且还允许WiFinetworking和谷歌访问和收集数据连接到这个设置,它开始工作。 在这种情况下,只有这个设置。

我的Galaxy GT-N8013平板电脑出现同样的问题,getCurrentPosition似乎不能在android上工作,但它在ios上工作。 要解决这个问题,首先我增加了超时时间。 其次,打开谷歌地图应用程序。 第三,重新启动平板电脑。 它在那之后起作用。

 $cordovaGeolocation.getCurrentPosition({timeout: 30000, enableHighAccuracy: false}) 

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