传单:后续map.locate()超时如果选项"观看"设置为" true"

时间:2016-02-25 05:48:26

标签: javascript geolocation leaflet

我正在努力解决传单的map.locate()首先正确引发" locationfound"事件,但无论我做什么,每次后续呼叫都会超时/冻结。

如果"观看"设置为false,调用" map.locate(options)"工作正常。

重现的步骤:

  • 打开上面的链接,
  • 单击geolocate按钮一次,然后等待,
  • 地图将缩放到地理位置,
  • 平移地图,
  • 再次点击geolocate btn,
  • 观看它失败(在控制台中)

有任何想法如何解决这个问题?

function geolocateMe() {

      if (!registered) {
        map.on("locationfound", cb);
        map.on("locationerror", eb);
        registered = true;
      }

      map.locate({
        watch: true,
        setView: true
      });
    }

在这里找到了Leaflet locate issue

1 个答案:

答案 0 :(得分:0)

好的,需要在这里正确阅读地理位置API Geolocation API- watchPosition()

由于超时和maximumAge至关重要。基本上,这就是我不喜欢的,如果你提供超时和maximumAge,那么如果位置没有在超时值内更新,那么" locationerror"抛出超时错误。我认为这是误导性的,应该有" no-update-within"更容易理解的事件。

基本上如果你没有提供超时,那么每个位置请求都会查看缓存位置,如果这个位置比上次更新后的maximumAge更旧,它将立即触发从设备获取新位置

var geo_options = {
  enableHighAccuracy: true,
  maximumAge: 60000
    //timeout           : 1000
};

在另一个使用基本地理定位api的plunker中玩它 - > enter link description here

希望有所帮助。我只是困惑为什么我得到所有的超时消息,没有位置。现在我明白了。