Получение текущего местоположения устройства с помощью API {X}
Я играл с api on{X} и пытаюсь получить некоторые данные о местоположении, сколько бы я ни пытался, я не могу понять, как получить / 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)
однако и лат и лон регистрируются как "неопределенные", когда я проверяю их содержимое. (потому что устройство не двигалось.)
1 ответ
Поэтому, немного поиграв с 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();