Pebble.js Геолокация не хранит местоположение по всему миру

Я очень новичок в программировании часов Pebble. Я занимаюсь этим уже 3 часа. Я застрял, пытаясь назначить широту и долготу переменным. Надеемся, что это простая проблема с Javascript, а не проблема, связанная с SDK Pebble.

Вот мой код:

var lat;
var lon;

var myAPIKey = REDACTED;
var city = 'Boston';

function success(pos) {
console.log('lat= ' + pos.coords.latitude + ' lon= ' + pos.coords.longitude);
lat = pos.coords.latitude;
lon = pos.coords.longitude;
}

function error(err) {
console.log('location error (' + err.code + '): ' + err.message);
}

// Choose options about the data returned
var options = {
enableHighAccuracy: true,
maximumAge: 10000,
timeout: 10000
};

// Request current position
navigator.geolocation.getCurrentPosition(success, error, options);
console.log(lat+'||||'+lon);

Когда я запускаю код на эмуляторе CloudPebble, эта информация журнала:

[PHONE] pebble-app.js:?: undefined||||undefined
[PHONE] pebble-app.js:?: lat= 39.0437 lon= -77.4875

Не правильно ли я храню широту и долготу. Я хочу использовать данные для глобального использования. Вы можете видеть, что он не хранит lat а также lon значения, но это на самом деле работает от consol.log функция.

1 ответ

Решение

Поскольку определение позиции может занять некоторое время, getCurrentPosition() не работает синхронно Вместо этого требуется одна функция (success параметр), чтобы вызвать, когда (в конце концов) удалось получить местоположение, и одна функция (error параметр), когда это не удалось сделать (GPS или Wi-Fi не может быть достигнут или выключен, и т. д.).

Ваш код сохраняет значения в вашем lat а также lon переменные правильно, но это происходит только на более позднем этапе. Или другими словами: ваш

console.log(lat+'||||'+lon);

называется до success функция работает. В это время значения еще не заполнены.

Это распространенный JavaScript-подход для работы с длительными операциями. Другие объекты, такие как XMLHTTPRequest работать точно так же.

Другие вопросы по тегам