使用on {X} api获取设备的当前位置

时间:2012-07-09 12:45:51

标签: javascript android api location onx

我一直在使用on {X} api,我正在尝试获取一些位置数据,但是尽管我尝试了但是我无法弄清楚如何获得/ current / location。


文档

这是他们的榜样:

    // create GPS listener with update interval of 5 sec  
    // you also use CELL or PASSIVE providers here  

    var listener = device.location.createListener('GPS', 5000); 

    // register on location changed  

    listener.on('changed', function(signal) {  

    // on receiving location print it and stop the provider 

       console.info('Lat: ' + signal.location.latitude);  
       console.info('Lon:' + signal.location.longitude);  
       listener.stop();  
    });

    // start the GPS listener 

    listener.start();

然而,似乎这仅在位置更改时才有效。我如何获得当前位置数据(我确信必须有办法)。

我目前的代码:

var lat;
var lon;
listener.on('changed', function (signal) {
var lat = signal.location.latitude;
var lon = signal.location.longtitude;
listener.stop();
});
listener.start();
//the rest of my code which just sends the data back to a webserver (this bit works)

然而,当我检查其内容时,lat和lon都注册为'undefined'。 (因为设备没有移动。)

1 个答案:

答案 0 :(得分:4)

所以在玩了一段时间后,我想出了我哪里出错了。

我需要在locListener.stop();之后添加我想要从位置数据访问的数据的定义,虽然我不完全理解为什么或如何工作它是一个修复,以下代码适用于我。 (我还添加了一些地图内容;))

var loc;
var locListener = device.location.createListener('CELL', 100);

locListener.on('changed', function (signal) {
    // stop listening to location changed events after getting the current location
    locListener.stop();

    var mapUrlPattern = 'https://feeds.onx.ms/maps?wp=lat,lon';
    var mapUrl =  mapUrlPattern.replace(/lat/g, signal.location.latitude).replace(/lon/g, signal.location.longitude);

    loc = mapUrl;
});

locListener.start();