地理位置getCurrentPosition在回调函数上表现为奇数

时间:2013-01-15 03:56:49

标签: javascript jquery html5 geolocation

我有2个js文件,1个用于将位置数据存储在对象中,另一个是用于点击事件的事件处理程序等。

这有效:

var Geology = {
    coords: {},
    error: '',
    setPosition: function (position) {
        Geology.coords = position.coords;
        // DEBUG
        for (var prop in Geology.coords)
            console.log(prop + ': ' + Geology.coords[prop]);
    },
    setError: function (error) {
        Geology.error = error;
    }
};

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(Geology.setPosition,Geology.setError,{timeout:10000});
}

但我希望能够在必要时通过点击或计时器更新位置数据。任何时候我尝试这样做都不会像最初那样将变量分配给地质。

像这样:

jQuery(document).ready(function($){
    $('.toggle').click(function(){
        //- get geo location if available
        if (typeof Geology === 'object') {
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(Geology.setPosition,Geology.setError,{timeout:10000});
            }
        }
    });
});

我没有在控制台中收到错误但它只是失败并且没有运行回调。但是,它确实运行了getCurrentPosition方法,因为我已经测试了它是否通过条件。

1 个答案:

答案 0 :(得分:1)

我认为您需要设置maximum_age参数,否则结果将永久缓存:

navigator.geolocation.getCurrentPosition( 
      geo_success, 
      geo_error, 
      { maximumAge:60000 } // set to 1min (in ms)
);

您还有另外两个参数:enableHighAccuracytimeout

更多信息:https://developer.mozilla.org/en-US/docs/Using_geolocation

编辑:我刚发现这一点,它可能与您的问题navigator.geolocation.getCurrentPosition sometimes works sometimes doesn't

有关