我有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方法,因为我已经测试了它是否通过条件。
答案 0 :(得分:1)
我认为您需要设置maximum_age
参数,否则结果将永久缓存:
navigator.geolocation.getCurrentPosition(
geo_success,
geo_error,
{ maximumAge:60000 } // set to 1min (in ms)
);
您还有另外两个参数:enableHighAccuracy
和timeout
更多信息:https://developer.mozilla.org/en-US/docs/Using_geolocation
编辑:我刚发现这一点,它可能与您的问题navigator.geolocation.getCurrentPosition sometimes works sometimes doesn't
有关