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

Pebble.js Geolocation not Storing Location Globally

我对 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 函数中的 运行。

由于确定位置可能需要一段时间,getCurrentPosition() 不会 运行 同步。相反,它需要一个函数(success 参数)在它(最终)设法获取位置时调用,而在它未能这样做(GPS 或 Wifi 可以)时调用一个函数(error 参数)无法到达或已关闭等)。

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

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

success函数运行之前被调用。那个时候数值还没有填。

这是处理长 运行ning 操作的常见 JavaScript 方法。 XMLHTTPRequest 等其他对象的工作方式完全相同。