Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript地理位置缓存_Javascript_Geolocation - Fatal编程技术网

Javascript地理位置缓存

Javascript地理位置缓存,javascript,geolocation,Javascript,Geolocation,我正在使用以下方法成功捕获用户的位置(移动浏览器): if(navigator.geolocation){ navigator.geolocation.getCurrentPosition(handlePosition); } 功能手柄位置(pos){ //这会将lat/long传递给其他代码 } 这是可行的,但通常情况下浏览器似乎会缓存位置数据。调用此地理位置代码的页面会显示与用户位置相关的信息,因此用户可以移动(更改位置),页面会重新加载,但会使用以前的位置数据(显示不正确的数据)。有时

我正在使用以下方法成功捕获用户的位置(移动浏览器):


if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(handlePosition);
}
功能手柄位置(pos){
//这会将lat/long传递给其他代码
}
这是可行的,但通常情况下浏览器似乎会缓存位置数据。调用此地理位置代码的页面会显示与用户位置相关的信息,因此用户可以移动(更改位置),页面会重新加载,但会使用以前的位置数据(显示不正确的数据)。有时页面必须刷新一次甚至两次才能使用新的位置数据

是否有人知道在每次执行脚本时强制代码获取并使用“最新”位置数据的方法

FWIW,我在iOS Safari(6.1)中遇到问题。我们还不能在Android上测试


感谢您的阅读和帮助。

编辑:正如Oleksiy在回答中所写,地理定位API现在支持这一点。您可以添加
{maximumAge:0}
作为
getCurrentPosition
的第三个选项参数。位置选项中还有一个超时和一个高精度选项,如中所述

您的导航器调用将更改为以下内容:

navigator.geolocation.getCurrentPosition(
手的位置,
(错误)=>{},
{maximumAge:0}
);
不,不行。除了示例中的代码之外,您无法控制浏览器的地理位置。html5地理位置api非常非常有限,这是一种痛苦。我也有一个问题,我是否可以问它是否已经获得了这个域名的许可,答案也是否定的

问题在于,api是在浏览器本身中实现的,对于这类函数来说,它不是端点


您可以做的是在js中创建一个数组来存储以前的位置,然后再根据该数组更新视图测试以查看是否有过时的位置。

编辑:正如Oleksiy在回答中所写的,地理位置API现在支持这一点。您可以添加
{maximumAge:0}
作为
getCurrentPosition
的第三个选项参数。位置选项中还有一个超时和一个高精度选项,如中所述

您的导航器调用将更改为以下内容:

navigator.geolocation.getCurrentPosition(
手的位置,
(错误)=>{},
{maximumAge:0}
);
不,不行。除了示例中的代码之外,您无法控制浏览器的地理位置。html5地理位置api非常非常有限,这是一种痛苦。我也有一个问题,我是否可以问它是否已经获得了这个域名的许可,答案也是否定的

问题在于,api是在浏览器本身中实现的,对于这类函数来说,它不是端点


您可以做的是在js中创建一个数组来存储以前的位置,然后再根据该数组更新视图测试,查看是否有过时的位置。

您现在确实具备了此功能。 getCurrentPosition采用三个参数:成功失败选项

试试这个:

<script>
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(handlePosition, (error)=>{}, {maximumAge:0});
}
function handlePosition(pos) {
    //this passes lat/long to additional code
 }
</script>

if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(handlePosition,(error)=>{},{maximumAge:0});
}
功能手柄位置(pos){
//这会将lat/long传递给其他代码
}

您现在确实拥有此能力。 getCurrentPosition采用三个参数:成功失败选项

试试这个:

<script>
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(handlePosition, (error)=>{}, {maximumAge:0});
}
function handlePosition(pos) {
    //this passes lat/long to additional code
 }
</script>

if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(handlePosition,(error)=>{},{maximumAge:0});
}
功能手柄位置(pos){
//这会将lat/long传递给其他代码
}