0

我对 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

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

4

1 回答 1

1

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

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

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

在函数运行之前调用。success那时,这些值尚未填充。

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

于 2016-03-16T23:09:10.360 回答