Javascript 浏览器&x27;s地理位置显示两个初始位置

Javascript 浏览器&x27;s地理位置显示两个初始位置,javascript,html,mobile-phones,Javascript,Html,Mobile Phones,我编写了一个地图页面,它使用地理位置来检测用户的位置。当用户单击按钮时,此javascript称为: if (navigator.geolocation) { wpid = navigator.geolocation.watchPosition(function (position) { setUserPosition(position, "Your location", pollUserPosition); }, function() { handl

我编写了一个地图页面,它使用地理位置来检测用户的位置。当用户单击按钮时,此javascript称为:

if (navigator.geolocation) {
wpid = navigator.geolocation.watchPosition(function (position) {
       setUserPosition(position, "Your location", pollUserPosition);
       }, 
       function() { handleNoGeolocation(true); },
       { enableHighAccuracy: false, maximumAge: 30000, timeout: 10000 }
    );
}
据我所知,watchPosition将开始轮询用户的位置,直到它被告知停止。这是通过调用clearWatch并从watchPositon调用传入wpid来完成的。setUserPosition将根据位置在地图上创建一个标记。在mobile safari中测试此页面时,有时会在地图上标记两个初始位置。有人知道我为什么要返回两个位置,以及我如何只能返回一个位置吗?是否因为iPhone上的手机连接和wifi连接都返回了位置

更新:
作为测试,我关掉了手机上的WiFi,再次测试了地图页面。不幸的是,当我调用watchPosition时,仍然会得到两个初始位置。

使用watchPosition,如果位置数据因设备移动或更准确的地理信息到达而发生变化,您将在回调中获得更新的位置信息

因此,如果您只想要一个位置,请尝试使用:

navigator.geolocation.getCurrentPosition

这应该只返回一个位置。您已经尝试过了吗?

我知道getCurrentPosition只会获取用户的位置一次,但对于我的项目,我需要不断更新用户的位置。我遇到的问题是,当我开始调用watchPostion时,第一次成功的回调似乎返回了两个位置。您能为我们输出这些位置(console.log)吗?你是说它返回了一系列的位置[]?确定不是两次成功的回调吗?我做了一个测试,我有一些新的理论来解释发生了什么。我注意到有时候,watchPosition会在几毫秒内返回两个值。在一些测试中,我发现结果的时间戳彼此之间的距离在500毫秒以内。我认为现在发生的事情是,由于这些调用非常接近,有两个对谷歌地图的请求,它们都在相同的响应中呈现。现在这是我的理论。在进行另一次调用之前,我将添加一些代码来检查贴图是否仍在渲染。