地理位置数据保存在变量/ localstorage中

时间:2013-11-19 23:36:31

标签: html5 google-chrome firefox firefox-os w3c-geolocation

我的地理位置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

1 个答案:

答案 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函数中执行此操作。

如果不是您要找的话,请告诉我。