我的地理位置API问题 - .-'
我使用FirefoxOS Boilerplate应用程序(https://github.com/robnyman/Firefox-OS-Boilerplate-App)创建一个简单的html5应用程序。
问题很简单:我希望从API获得的数据(lat / lon)由函数作为数组返回。 我找到的所有示例都使用动态数据来显示地图或插入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";
});
这是Geolocation的样板代码......
我想要一个像get_location这样的函数来返回数据,但经过几天的测试/ google搜索后我放弃了,我问你谁对我的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());
评论后的新代码。我不知道这个解决方案的性能如何...... 我已经用alert替换了console.log,并且我得到了undefined,然后在某些情况下不是异步的。
编辑:22/11: 修复了while
答案 0 :(得分:1)
您可以通过执行以下操作将地理位置数据作为数组返回:
function doSomethingWithGeo(geo) {
console.log(geo);
}
function get_location() {
navigator.geolocation.getCurrentPosition(function (position) {
doSomethingWithGeo([[position.coords.latitude, position.coords.longitude]]);
});
}
当你调用get_location时,它将检索地理位置坐标,并将使用你想要的数组调用doSomethingWithGeo函数。如果要存储数据,可以在doSomethingWithGeo函数中执行此操作。
如果不是您要找的话,请告诉我。