HTML5地理位置跟踪不会返回正确的坐标

时间:2015-05-20 07:40:18

标签: javascript html5 geolocation

我有一个小的javascript,如下所示

<script type="text/javascript">
$(document).ready(function () {
var myLat = 0, myLng = 0;
if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function (position) {
        myLat = position.coords.latitude;
        myLng = position.coords.longitude;}
    );
}
alert(myLat +';'+myLng);
});
</script>

我测试并允许在IE11,Opera 29上进行位置跟踪。我在开发人员模式下启用了调试,发现IE11和Opera 29的行为不同。

  • IE11:首先运行警报然后转到getCurrentPosition
  • Opera 29:运行警报但不进入getCurrentPosition

有人可以解释一下吗?

2 个答案:

答案 0 :(得分:2)

您需要将警报代码放入getCurrentPosition电话的回调中:

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function (position) {
        myLat = position.coords.latitude;
        myLng = position.coords.longitude;
        alert(myLat +';'+myLng);
    });
}

否则,您在设置值之前就会发出警报。

答案 1 :(得分:1)

可能是这样的...... http://jsfiddle.net/480qLqr9/6/

var myLat = 0, myLng = 0;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
  myLat = position.coords.latitude;
  myLng = position.coords.longitude;
  getPos(myLat,myLng);
},
function (error) { 
  if (error.code == error.PERMISSION_DENIED)
      console.log("Blocked");
});
}

function getPos(lat,lng){
console.log(lat,lng)
//your logic here

}