我是编程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
我没有正确存储纬度和经度。我想将数据用于全球使用。您可以看到它没有存储lat
和lon
值,但它实际上是从consol.log
函数运行的。
答案 0 :(得分:1)
由于确定位置可能需要一段时间,getCurrentPosition()
不会同步运行。相反,当它(最终)设法获取位置时需要调用一个函数(success
参数),而当它失败时需要一个函数(error
参数)(GPS或Wifi可以& #39;达到或关闭等)。
您的代码 正确地将值存储到lat
和lon
变量中,但这只会在以后发生。换句话说:你的
console.log(lat+'||||'+lon);
在 success
函数运行之前,被称为。那时候价值尚未填补。
这是处理长时间运行操作的常用JavaScript方法。像XMLHTTPRequest
这样的其他对象的工作方式完全相同。