geoloc.getCurrentPosition有时不起作用

geoloc.getCurrentPosition有时不起作用

因此,我有一个非常简单的JS使用导航器.geolocation.getCurrentPoitationjammy。

$(document).ready(function(){
  $("#business-locate, #people-locate").click(function() {
    navigator.geolocation.getCurrentPosition(foundLocation, noLocation);
  });

  navigator.geolocation.getCurrentPosition(foundLocation, noLocation);

  function foundLocation(position) {
    var lat = position.coords.latitude;
    var lon = position.coords.longitude;
    var userLocation = lat + ', ' + lon;
    $("#business-current-location, #people-current-location").remove();
    $("#Near-Me")
      .watermark("Current Location")
      .after("<input type='hidden' name='business-current-location' id='business-current-location' value='"+userLocation+"' />");
    $("#people-Near-Me")
      .watermark("Current Location")
      .after("<input type='hidden' name='people-current-location' id='people-current-location' value='"+userLocation+"' />");
  }
  function noLocation() {
    $("#Near-Me").watermark("Could not find location");
    $("#people-Near-Me").watermark("Could not find location");
  }})//end DocReady

基本上,我们得到的是当前位置,如果得到了,两个“水印”放置在两个字段中,上面写着“当前位置”,两个隐藏字段是以长数据作为值创建的(它们在开始时被删除,这样它们就不会每次都被复制)。还有两个按钮有一个点击函数绑定到它们来做同样的事情。不幸的是,每隔三次左右,它就起作用了。这里有什么问题?


小怪兽爱吃肉
浏览 1332回答 3
3回答

米琪卡哇伊

我一直在一点儿没错同样的问题,在网上几乎找不到任何关于它的信息。书上什么都没有。最后,我在堆栈溢出和(ha!)上找到了这个清醒的查询。这是我在这里设立账户所需要的最后动力。我有一个部分的答案,但遗憾的是,不是一个完整的答案。首先,要意识到默认超时对于getCurrentPosition是无限(!)这意味着您的错误处理程序将不叫如果getCurrentPosition挂在后端的某个地方。要确保获得超时,请将可选的第三个参数添加到getCurrentPosition调用中,例如,如果您希望用户等待不超过10秒才能提示发生了什么,请使用以下命令:navigator.geolocation.getCurrentPosition(successCallback,errorCallback,{timeout:10000});其次,在不同的情况下,我经历了完全不同的可靠性。在家里,我会在一两秒钟内得到一个回调,虽然精度很低。然而,在工作中,我的行为发生了非常奇怪的变化:地理定位在一些计算机上一直都在工作(当然IE除外),其他的只在Chrome和Safari中工作,而不使用Firefox(壁虎问题?),其他的只工作一次,然后就失败了-这种模式每天都在一小时地变化。有时你有一台“幸运”的电脑,有时却没有。也许在满月时宰杀山羊会有帮助?我不知道这件事,但我怀疑后端基础设施比宣传的要不均衡。在推动这一功能的各种宫浩书籍和网站中。我真的希望他们能更直截了当地说出这个特性有多不稳定,而且如果希望错误处理程序正常工作,超时设置是多么重要。.我今天一直在尝试向学生们传授这些东西,我自己的电脑(在投影机和几个大屏幕上)默默地失败了,而大约80%的学生几乎马上就得到了结果(使用完全相同的无线网络)。当我的学生也在打字和其他错误,当我自己的个人电脑也在失败的时候,解决这些问题是非常困难的。不管怎么说,我希望这能帮到你们中的一些人。谢谢你的精神健康检查!

MYYA

这是我要解决的问题,至少在当前的所有浏览器中都能工作(在Windows上,我没有Mac):if&nbsp;(navigator.geolocation)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;location_timeout&nbsp;=&nbsp;setTimeout("geolocFail()",&nbsp;10000); &nbsp;&nbsp;&nbsp;&nbsp;navigator.geolocation.getCurrentPosition(function(position)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clearTimeout(location_timeout); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;lat&nbsp;=&nbsp;position.coords.latitude; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;lng&nbsp;=&nbsp;position.coords.longitude; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;geocodeLatLng(lat,&nbsp;lng); &nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;function(error)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clearTimeout(location_timeout); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;geolocFail(); &nbsp;&nbsp;&nbsp;&nbsp;});}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Fallback&nbsp;for&nbsp;no&nbsp;geolocation &nbsp;&nbsp;&nbsp;&nbsp;geolocFail();}如果有人在Firefox上单击“关闭”或选择“NO”或“从不共享”选项,这也会有效。笨重但有效。

慕妹3242003

我每次都这样:navigator.geolocation.getCurrentPosition(getCoor,&nbsp;errorCoor,&nbsp;{maximumAge:60000,&nbsp;timeout:5000,&nbsp;enableHighAccuracy:true});虽然不是很准确。有趣的是,在同一台设备上,如果我运行这台设备,它会把我推到100米左右(每次),但如果我去谷歌地图,它就能准确地找到我的位置。因此,尽管我认为enableHighAccuracy:true有助于它持续工作,但它似乎并不能使它更加准确.
打开App,查看更多内容
随时随地看视频慕课网APP