0

我是phonegap的新手。我正在创建一个获取设备位置的应用程序...我已经使用 samsung galaxy tab 和 htc 进行了测试,但没有做任何事情...我尝试获取设备的速度,并将其显示在屏幕中的 div。这是我的代码:

地理位置:

// Phonegap loads
    document.addEventListener("deviceready", onDeviceReady, false);
    var watchIDgeolocation = null;      
    var watchIDaccelerometer = null;    

// PhoneGap has loaded
    function onDeviceReady() {
        var options = { frequency: 1000 };  // I want obtain data each 1 s 
        watchIDgeolocation = navigator.geolocation.watchPosition(onSuccessGeolocation, onErrorGeolocation, options);
        startWatch(); 
    }

// Success
    var onSuccessGeolocation = function(position) {
        // These are functions that displays data in screen 
        cambioMarchas(position.coords.speed);       
        excesoVelocidad(position.coords.speed);     
        paradaProlongada(position.coords.speed);    
        aceleracionBrusca(position.coords.speed);   
        deceleracionBrusca(position.coords.speed);  
        accidenteDeTrafico(position.coords.speed);  


// ERROR
    function onErrorGeolocation(error) {
        alert('code: '    + error.code    + '\n' +
              'message: ' + error.message + '\n');
    }

我已经在 Chrome 的扩展 Ripple 中进行了测试,它工作正常,改变了速度的值,而且工作正常……但是对于设备,我不知道为什么不这样做。为什么可以?问候,丹尼尔

我读过可能需要在 var 选项中添加 { enableHighAccuracy: true } ......但我不明白这个......

4

1 回答 1

3

那么丹尼尔,首先我建议你试试这个常见的PhoneGap应用程序来测试设备是否准备好使用,如果是,它会通过显示警报消息提醒你,同时,如果它工作正常,那么你就有问题了使用您的代码,然后返回检查它。给你:

// Global variable that will tell us whether PhoneGap is ready
   var isPhoneGapReady = false;
   function init() {
// Add an event listener for deviceready
   document.addEventListener("deviceready",
   onDeviceReady, false);
// Older versions of Blackberry < 5.0 don't support
// PhoneGap's custom events, so instead we need to perform
// an interval check every 500 milliseconds to see whether
// PhoneGap is ready. Once done, the interval will be
// cleared and normal processing can begin.
   intervalID = window.setInterval(function() {
   if (PhoneGap.available) {
    onDeviceReady();
           }
       }, 500);
   }

   function onDeviceReady() {
   window.clearInterval(intervalID);
// set to true
   isPhoneGapReady = true;

   alert('The device is now ready');
   }
// Set an onload handler to call the init function
   window.onload = init;
于 2012-10-17T13:18:19.500 回答