Phonegap地理定位在Android(Nexus设备)上不起作用

Phonegap地理定位在Android(Nexus设备)上不起作用,android,cordova,geolocation,phonegap-build,phonegap-gmaps-plugin,Android,Cordova,Geolocation,Phonegap Build,Phonegap Gmaps Plugin,我知道以前有人问过这个问题,但我已经尝试了所有建议的解决方案,但似乎没有任何效果 我正在开发一款用Phonegap构建的移动应用程序(但我认为这并不重要)。在这个应用程序中,我使用的是地理定位插件。更具体地说,my config.xml如下所示: <?xml version="1.0" encoding="UTF-8" ?> <widget xmlns = "http://www.w3.org/ns/widgets" xmlns:gap = "h

我知道以前有人问过这个问题,但我已经尝试了所有建议的解决方案,但似乎没有任何效果

我正在开发一款用Phonegap构建的移动应用程序(但我认为这并不重要)。在这个应用程序中,我使用的是地理定位插件。更具体地说,my config.xml如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
    <widget xmlns   = "http://www.w3.org/ns/widgets"
        xmlns:gap   = "http://phonegap.com/ns/1.0"
        id          = "......"
        version     = "1.0.0" >

    <name>.....</name>

    <preference name="permissions"                value="none"/>

    <preference name="orientation"                value="default" />
    <preference name="target-device"              value="universal" />
    <preference name="phonegap-version"           value="3.6.3" />

    <gap:plugin name="org.apache.cordova.geolocation" />
    <gap:plugin name="com.phonegap.plugins.PushPlugin" version="2.4.0" />
    <gap:plugin name="org.apache.cordova.network-information" />
    <gap:plugin name="org.apache.cordova.statusbar" />
    <gap:plugin name="org.apache.cordova.device" />
    <gap:plugin name="org.transistorsoft.cordova.background-geolocation"/>
</widget>
这在iOS设备上运行良好,甚至在Android ripple emulator上也可以运行

但当我尝试在Android上运行该应用程序时,尤其是在Nexus4和5上,地理定位似乎不起作用。并不是它给了我一个错误,它只是试图在没有任何运气的情况下恢复位置

然而,所有其他使用地理位置的应用程序以及浏览器中的地理位置都工作得非常好

我还想指出,我正在使用Phonegap Build来构建应用程序


有人知道我如何解决这个问题吗?有人有相同的问题吗?

从您的代码示例中,当您有一个空的错误处理程序
函数(error){}
时,您如何知道没有出现错误

getCurrentPosition()
对设备位置发出单个请求。如果只调用一次,则在设备上的GPS硬件有机会获得位置定位之前,可能会发生位置超时

我建议使用
watchPosition()
来设置一个监视程序,它将在操作系统每次收到位置更新时调用success函数。如果你只需要一个位置,你可以清除观察者,有选择地检查以确保你的位置具有可接受的精度

例如:

var minAccuracyInMetres = 50;

var positionWatcher;

function onDeviceReady(){
    positionWatcher = navigator.geolocation.watchPosition(
      geolocationSuccess,
      geolocationError,
      {maximumAge:0, timeout: 10000, enableHighAccuracy: true});
}

function geolocationSuccess(position){
  // Reject if accuracy is not sufficient
  if(position.coords.accuracy > minAccuracyInMetres){
      return;        
  }

  // Only single position required so clear watcher
  navigator.geolocation.clearWatch(positionWatcher);

  // Do something with the user's location...

}

function geolocationError(error){
  console.warn("Error while retrieving current position. " + 
    "Error code: " + error.code + ",Message: " + error.message);
}

document.addEventListener("deviceready", onDeviceReady, false);

正在调用错误回调吗?phonepap android使用HTML5地理位置,因此如果它在浏览器上工作,它应该在应用程序上工作,但它不工作。我也面临同样的问题。该应用程序在Chrome中正常工作,但无法在Nexus设备上的包装应用程序中获取位置。
var minAccuracyInMetres = 50;

var positionWatcher;

function onDeviceReady(){
    positionWatcher = navigator.geolocation.watchPosition(
      geolocationSuccess,
      geolocationError,
      {maximumAge:0, timeout: 10000, enableHighAccuracy: true});
}

function geolocationSuccess(position){
  // Reject if accuracy is not sufficient
  if(position.coords.accuracy > minAccuracyInMetres){
      return;        
  }

  // Only single position required so clear watcher
  navigator.geolocation.clearWatch(positionWatcher);

  // Do something with the user's location...

}

function geolocationError(error){
  console.warn("Error while retrieving current position. " + 
    "Error code: " + error.code + ",Message: " + error.message);
}

document.addEventListener("deviceready", onDeviceReady, false);