Получение текущего местоположения устройства с помощью {X} api

Я играл с {X} api, и я пытаюсь получить некоторые данные о местоположении, но насколько я стараюсь, я не могу понять, как получить / current / location.


Документация:

  • https://www.onx.ms/#apiPage/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», когда я проверяю их содержимое. (Потому что устройство не перемещено.)

Поэтому после игры с 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();