Java Android Phonegap中的经纬度跟踪?

Java Android Phonegap中的经纬度跟踪?,java,android,cordova,Java,Android,Cordova,我是android平台的新手,所以我想从现有的示例代码开始学习。我正在尝试获取GPS坐标,因此我编写了以下代码。在下面的代码中,一旦设备启动,onDeviceReady()方法将启动,但onSuccess()方法将不启动。如何解决这个问题?我在我的项目中使用cordova-2.8.0.jar <!DOCTYPE html> <html xml:lang="en" lang="en"> <head> <script type="text/j

我是android平台的新手,所以我想从现有的示例代码开始学习。我正在尝试获取GPS坐标,因此我编写了以下代码。在下面的代码中,一旦设备启动,onDeviceReady()方法将启动,但onSuccess()方法将不启动。如何解决这个问题?我在我的项目中使用cordova-2.8.0.jar

<!DOCTYPE html>
<html xml:lang="en" lang="en">
    <head>
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>  
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;">
        <title>PhoneGap</title>
        <script type="text/javascript" charset="utf-8">

    // Wait for Cordova to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    var watchID = null;

    // Cordova is ready
    //
    function onDeviceReady() {
        // Throw an error if no update is received every 30 seconds
        alert("Test1");
        var options = {
         timeout: 3000
          };
        alert("TEst2"+options);
        watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);
        alert("TEst3");
    }

    // onSuccess Geolocation
    //
    function onSuccess(position) {
    alert("RAmesh");
       /* var element = document.getElementById('geolocation');
        element.innerHTML = 'Latitude: '  + position.coords.latitude      + '<br />' +
                            'Longitude: ' + position.coords.longitude     + '<br />' +
                            '<hr />'      + element.innerHTML;*/
    }

    // onError Callback receives a PositionError object
    //
    function onError(error) {
      /*  alert('code: '    + error.code    + '\n' +
              'message: ' + error.message + '\n');*/
    }

    </script>
  </head>
  <body>
    <p id="geolocation">Finding geolocation...</p>
  </body>
</html>

音差
//等待Cordova加载
//
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
var-watchID=null;
//科尔多瓦准备好了
//
函数ondevicerady(){
//如果每30秒未收到更新,则引发错误
警报(“测试1”);
变量选项={
超时:3000
};
警报(“测试2”+选项);
watchID=navigator.geolocation.watchPosition(onSuccess、onError、options);
警报(“测试3”);
}
//成功地理定位
//
成功时的功能(位置){
警报(“RAmesh”);
/*var element=document.getElementById('geolocation');
element.innerHTML='Latitude:'+position.coords.Latitude+'
'+ '经度:'+position.coords.Longitude+'
'+ “
”+element.innerHTML*/ } //OneError回调接收PositionError对象 // 函数onError(错误){ /*警报('code:'+error.code+'\n'+ '消息:'+error.message+'\n')*/ } 查找地理位置


尝试按如下方式更改选项:

var options = {
  enableHighAccuracy: true,
  timeout: 30000,
  maximumAge: 0
};
确保您已设置使用AndroidManifest.xml中位置的权限:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

在config.xml中:

<plugin name="Geolocation" value="org.apache.cordova.GeoBroker" />

首先,尝试Dpa99c的指令

其次,使用GenyMotion仿真器。这是一个非常适合Android的模拟器:比默认的速度快,而且你有一些小部件可以修改位置、相机等等

第三,我刚刚在Cordova/PhoneGap中发现了一个masive问题:
-当您打开cordova构建的Android项目(在命令行中)时,requestUpdate设置为。。。。。60秒!!!!!!!!!!!你每分钟都有一个新的位置!即使您使用GPS(enableHighAccurance=“true”)。因此,尝试将其设置为1000,在org.apache.cordova.geolocation package->GPSListener类中找到LocationManager.GPS\u提供者

我重新整理了你的代码,试试看。在watchPosition中,调用onSuccess和onError,但如果没有括号,它将查找具有这些名称的变量。如果你要这样称呼它,那么你必须给这些变量名分配一个函数。我想说谢谢你的建议。是的,我已经下载了GenyMotion JAR,现在如何将它们包含在eclipse中,以及如何使用该模拟器?只需安装GenyMotion(包括VirtualBix)。启动安卓设备:如果你有法语软件,点击“Ajouter”,选择你的设备,然后点击“Lancer”。如果您的黑屏时间超过30秒,请关闭窗口并重新启动。然后转到Eclipse(android)。单击绿色箭头(运行)右侧的黑色箭头。然后,“运行配置”->“目标”->“在所有兼容设备/AVD上启动”,并选择“活动设备”。事实上,GenuMotion充当连接到计算机的物理设备。如果你只需点击绿色箭头,你就可以选择你的GenyDeviceHi,我只想将GenyMoon插件添加到我的eclipse中。我下载了jar并将其包含在eclipse插件中。然后,当我试图打开genymotion时,它会显示以下错误。“在Genymotion设置中,未设置Genymotion目录。”当我打开Genymotion设置时,没有设置默认路径。如何设置路径。你没有Geny插件。你只需要按照上面的说明去做。我不明白你说什么。也许GenyMotion需要“ADB调试器Android”或“SDK”。因此,请转到您的Android文件夹,其中有2个文件夹:“Eclipse”和“SDK”以及1个文件“SDKManger”。选择SDK文件夹并单击“确定”,或应用并重新启动仿真器。