为什么这个依赖于HTML5地理位置的javascript代码会出错?

时间:2012-03-20 04:50:06

标签: javascript html5 geolocation w3c-geolocation

我有一些javascript代码,具体取决于地理位置。

http://jsfiddle.net/8D6vz/

var myLat = 0.0;
var myLng = 0.0;

function setCurrentPosition(position) {
 myLat = position.coords.latitude;
 myLng = position.coords.longitude;
}

function errorOccured() {
 document.write("sorry, error occured :( ");
}

$(function() {
 navigator.geolocation.getCurrentPosition(setCurrentPosition, errorOccured);
 document.write(myLat + " " + myLng);
});

但是,此代码仅产生

0 0

而不是

"client's latitude here" "client's longitude here"

为什么?

我正在使用Google Chrome,它肯定支持地理定位。我还允许我的浏览器跟踪我的位置。

2 个答案:

答案 0 :(得分:2)

GetCurrentPosition是一个异步函数,您可以像

一样使用它
function GetGeolocation() {

navigator.geolocation.getCurrentPosition(GetCoords, GetError);

}
function GetCoords(position){

  var lat = position.coords.latitude;

  var long = position.coords.longitude;

  var accuracy = position.coords.accuracy;

  alert('Latitude: ' + lat + ', Longitude: '+ long);

}

答案 1 :(得分:0)

哦,我想我已经明白了。

我相信

navigator.geolocation.getCurrentPosition()

是一个异步函数。因此,在屏幕上打印纬度和经度值后会调用setCurrentPosition(position),这会打印原始值。