Firefox5、地理定位和;“现在不行”;问题

Firefox5、地理定位和;“现在不行”;问题,firefox,geolocation,Firefox,Geolocation,我在下面的bug报告中发布了Firefox5地理位置问题,有没有人必须处理并设法找到一个可行的解决办法。链接到报告比在这里重新描述报告更容易 当然,我不是这个星球上唯一一个被咬过的人。这并不能真正解决你问题的根源,但我处理这个问题的策略是设置一个默认的位置点,我会立即使用(而不是等待地理位置问题得到回答) 如果我从用户那里得到一个位置,我只需将其更改为新位置。如果我被拒绝或根本没有回答,我就留在默认位置 根据我的经验,桌面客户端(在我的例子中是固定Windows计算机上的Firefox)比移动

我在下面的bug报告中发布了Firefox5地理位置问题,有没有人必须处理并设法找到一个可行的解决办法。链接到报告比在这里重新描述报告更容易


当然,我不是这个星球上唯一一个被咬过的人。

这并不能真正解决你问题的根源,但我处理这个问题的策略是设置一个默认的位置点,我会立即使用(而不是等待地理位置问题得到回答)

如果我从用户那里得到一个位置,我只需将其更改为新位置。如果我被拒绝或根本没有回答,我就留在默认位置

根据我的经验,桌面客户端(在我的例子中是固定Windows计算机上的Firefox)比移动客户端(在我的例子中是iPhone上的Safari)需要更长的响应时间。我被迫将超时设置为10秒(10000),以便桌面客户端有足够的时间响应。因此,如果您有一个地图,初始化它并直接以默认位置为中心将在屏幕上为用户提供一个地图,这比等待响应要快得多


祝你的定位项目好运

我可能会晚一点,但希望我能帮助别人。 我的解决办法是基于一个延迟的电话。如果在延迟呼叫被触发时没有修复,我会产生怀疑:)


这里也有同样的问题。工程师在错误报告中的评论提出了一个很好的观点(你的UI应该优雅地处理没有收到响应的情况),但在我看来,它应该超时,因此在这种情况下触发错误回调。回答得好。它还解决了Mozilla开发人员正在制造的问题——我们应该处理“如果用户忽略它怎么办”的问题。顺便说一句,IE11甚至没有“这次拒绝”选项,所以这是我向我的开发团队推荐的解决方案。
var timeIsPassig = false;

function anyThing(){
  timeIsPassig = true;
  setTimeout(
    function(){
      if (timeIsPassig) {
        timeIsPassig = false;
        console.log("Waiting too much... Or did you say not now? :-P");
        }
      },
    10000
    );
  navigator.geolocation.getCurrentPosition(
    function (pos) {timeIsPassig = false; /* rest of positioning*/},
    function (err) {timeIsPassig = false; /* rest of error handling*/},
    {maximumAge: 30000, timeout: 10000, enableHighAccuracy: true}
    )
  }