Pebble.js地理位置不在全球范围内存储位置

时间:2016-03-16 21:05:23

标签: javascript pebble-sdk pebble-js

我是编程Pebble手表的新手。我现在已经做了3个小时。我试图将纬度和经度分配给变量。希望这只是一个简单的Javascript问题,而不是与Pebble SDK相关的问题。

这是我的代码:

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

我没有正确存储纬度和经度。我想将数据用于全球使用。您可以看到它没有存储latlon值,但它实际上是从consol.log函数运行的。

1 个答案:

答案 0 :(得分:1)

由于确定位置可能需要一段时间,getCurrentPosition()不会同步运行。相反,当它(最终)设法获取位置时需要调用一个函数(success参数),而当它失败时需要一个函数(error参数)(GPS或Wifi可以& #39;达到或关闭等)。

您的代码 正确地将值存储到latlon变量中,但这只会在以后发生。换句话说:你的

console.log(lat+'||||'+lon);
success函数运行之前,

被称为。那时候价值尚未填补。

这是处理长时间运行操作的常用JavaScript方法。像XMLHTTPRequest这样的其他对象的工作方式完全相同。