我正在努力解决传单的map.locate()首先正确引发" locationfound"事件,但无论我做什么,每次后续呼叫都会超时/冻结。
如果"观看"设置为false,调用" map.locate(options)"工作正常。
重现的步骤:
有任何想法如何解决这个问题?
function geolocateMe() {
if (!registered) {
map.on("locationfound", cb);
map.on("locationerror", eb);
registered = true;
}
map.locate({
watch: true,
setView: true
});
}
在这里找到了Leaflet locate issue
答案 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
希望有所帮助。我只是困惑为什么我得到所有的超时消息,没有位置。现在我明白了。