Android Phonegap中的纬度经度跟踪?

时间:2013-11-23 11:05:20

标签: java android cordova

我是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>

2 个答案:

答案 0 :(得分:2)

尝试更改您的选项,如下所示:

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" />

答案 1 :(得分:0)

首先,尝试Dpa99c的说明。

其次,使用GenyMotion Emulator。它是Android的一个很棒的模拟器:比默认更快,你有一些小部件来修改位置,相机等等。

第三,我刚刚发现了Cordova / PhoneGap中的一个主要问题:    - 当您打开由cordova构建的Android项目(在命令行中)时,requestUpdate设置为..... 60秒!!!!!!!!!!!每分钟都有一个新的位置!即使你使用GPS(enableHighAccuracy =“true”)。因此,尝试将其设置为1000,在org.apache.cordova.geolocation包中找到LocationManager.GPS_PROVIDER - &gt; GPSListener课程!