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)

ただし、内容を確認すると、緯度と経度の両方が「未定義」として登録されます。(デバイスが移動していないためです。)

4

1 に答える 1

4

それで、しばらくの間APIで遊んだ後、私はどこが間違っていたかを理解しました。

後で位置データからアクセスしたいデータの定義を追加する必要がありました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 に答える