我的 Geolocation API 有问题 -.-'
我正在使用 FirefoxOS Boilerplate App ( https://github.com/robnyman/Firefox-OS-Boilerplate-App ) 创建一个简单的 html5 应用程序。
问题很简单:我希望从 API 获得的数据(纬度/经度)由函数作为数组返回。我发现的所有示例都使用动态数据来显示地图或插入 div(也是这个样板)。
navigator.geolocation.getCurrentPosition(function (position) {
geolocationDisplay.innerHTML = "<strong>Latitude:</strong> " + position.coords.latitude + ", <strong>Longitude:</strong> " + position.coords.longitude;
geolocationDisplay.style.display = "block";
},
function (position) {
geolocationDisplay.innerHTML = "Failed to get your current location";
geolocationDisplay.style.display = "block";
});
这是地理定位的样板代码...
我想要一个像 get_location 这样的函数来返回数据,但是经过几天的测试/谷歌搜索我放弃了,我问你谁对我的 Javascript 中的回调/范围更有经验。
我评估过的选项是将数据保存在隐藏的 div 中或使用 localstorage/cookies 保存。
谢谢您的帮助!
编辑 20/11:
function load_location() {
navigator.geolocation.getCurrentPosition(save_location, handleLocationError, {maximumAge: 0, timeout: 1000, enableHighAccuracy: true});
}
function handleLocationError(error) {
alert(error.code + ' - ' + error.message);
}
function save_location(position) {
localStorage.clear();
ls_save('latitude',position.coords.latitude);
ls_save('longitude',position.coords.longitude);
ls_save('accuracy',position.coords.accuracy);
ls_save('altitude',position.coords.altitude);
ls_save('altitudeAccuracy',position.coords.altitudeAccuracy);
ls_save('heading',position.coords.heading);
ls_save('speed',position.coords.speed);
}
function ls_save(key,value) {
localStorage.setItem(key, value);
}
function get_location() {
while(typeof localStorage['latitude'] === 'string') {
return localStorage.getItem("latitude");
}
}
load_location();
//Code
console.log(get_location());
注释后的新代码。我不知道这个解决方案的性能如何......我已经用警报替换了console.log,我得到了未定义,那么在某些情况下不是异步的。
编辑:22/11: 修复了一段时间