getLocation和setInterval

时间:2016-10-17 21:19:10

标签: javascript google-maps

我想创建一个应用程序,它会在“实时”中显示我在谷歌地图上的当前位置。

以下是相关代码:

    function updatePosition() {
        navigator.geolocation.getCurrentPosition(function (position) {
            var myLatLng = {lat: position.coords.latitude, lng: position.coords.longitude};
            marker.setPosition(myLatLng);
            $('#log').append('<p>new position - lat: ' + position.coords.latitude + ', lng: ' + position.coords.longitude + ' </p>');
        });
    }
    setInterval(updatePosition, 2000);

我怎么说呢......它有效。但不像我预期的那样。而是2秒,它刷新我的位置并写入日志大约5 - 30秒。

是否可以使用谷歌地图刷新此位置,如果没有,我应该使用其他地图,如Leaflet或OpenLayers吗?

2 个答案:

答案 0 :(得分:0)

您遇到的延迟可能是由于从设备获取位置的延迟。 此外,尝试检查错误作为getCurrentPosition函数的第二个处理程序。

答案 1 :(得分:0)

如果你运行这样的代码

function updatePosition() {
    navigator.geolocation.getCurrentPosition(function (position) {
        var myLatLng = {lat: position.coords.latitude, lng: position.coords.longitude};
        console.log(myLatLng);
      setTimeout(updatePosition, 0);
    });
}
updatePosition();

你会看到getCurrentPosition需要一定的时间 - 在我的情况下,5秒,这是一个ZERO超时...所以,像你一样每两秒运行一次不会让它更新任何更快