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
работать точно так же.