技术CTO-关注编程入门知识,提供编程入门教程

您的位置: 首页 > 前端开发 > html/html5 > 正文

HTML5浏览器定位navigator.geolocation.getCurrentPosition无效了?

来源: 技术CTO 阅读:

这两天发现浏览器定位功能 navigator.geolocation.getCurrentPosition 总是超时,是接口本身的问题,还是我这边的网络问题(试过多台服务器,客户端,移动终端都不行)?

像这个网站:
还有这个:
都无法定位

这个功能,能贴代码吗
我上面贴得第一个网址里面就有代码
引用 2 楼 yyoinge 的回复:
我上面贴得第一个网址里面就有代码


错了,是第二个
我这里限制了,只能打开csdn网址
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
var mk = new BMap.Marker(r.point);
var myGeo = new BMap.Geocoder();
myGeo.getLocation(new BMap.Point(r.point.lng,r.point.lat), function(rs){
         // console.log(MyApp.app.mapCenter);
          console.log(rs);
          var addComp = rs.addressComponents;
          alert(addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber);
      });
}
else {
alert('未知地址('+this.getStatus() + ')');
}
});
上面是调用百度地图的浏览器定位,会返回错误号 7   “BMAP_STATUS_SERVICE_UNAVAILABLE

下面是html5的方法,会返回错误 “Location information is unavailable.

<!DOCTYPE html>
<html>
<body>
<p id="demo">点击这个按钮,获得您的坐标:</p>
<button onclick="getLocation()">试一下</button>
<script>
var x=document.getElementById("demo");
function getLocation()
  {
  if (navigator.geolocation)
    {
    navigator.geolocation.getCurrentPosition(showPosition,showError);
    }
  else{x.innerHTML="Geolocation is not supported by this browser.";}
  }
function showPosition(position)
  {
  x.innerHTML="Latitude: " + position.coords.latitude + 
  "<br />Longitude: " + position.coords.longitude;
  }
function showError(error)
  {
  switch(error.code) 
    {
    case error.PERMISSION_DENIED:
      x.innerHTML="User denied the request for Geolocation."
      break;
    case error.POSITION_UNAVAILABLE:
      x.innerHTML="Location information is unavailable."
      break;
    case error.TIMEOUT:
      x.innerHTML="The request to get user location timed out."
      break;
    case error.UNKNOWN_ERROR:
      x.innerHTML="An unknown error occurred."
      break;
    }
  }
</script>
</body>
</html>


刚刚又试了某几台服务器,有的又可以了,有的还是不可以
我现在的疑问是:
(1)什么样的网络环境,会导致浏览器定位出现这样的错误?
(2)浏览器的定位为什么会不稳定?
(3)在无法按GSP、WIFI、基站定位的情况下,不是至少应该可以按IP进行定位吗?
(4)为什么在移动终端上,用上述两种方法定位,最终都是TimeOut超时,同样的移动终端上打开web百度地图,却可以精确的定位(误差大概在300米内)?

^_^ 如果您热爱技术、热爱编程,想与更多的朋友一起交流学习,欢迎加入本站官方QQ群:345733473 ^_^