4

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


文档:

这是他们的例子:

    // 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 都注册为“未定义”。(因为设备没有移动。)

4

1 回答 1

4

因此,在玩了一段时间的 api 之后,我发现了我哪里出错了。

我需要在 AFTER 之后添加我想从位置数据访问的任何数据的定义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();
于 2012-07-10T11:19:42.227 回答