Почему этот HTML5-код, зависящий от геолокации, содержит ошибку JavaScript? - PullRequest
1 голос
/ 20 марта 2012

У меня есть некоторый код 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 ]

2 голосов
/ 20 марта 2012

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);

}
0 голосов
/ 20 марта 2012

О, я думаю, я понял это.

Я считаю, что

navigator.geolocation.getCurrentPosition()

- это асинхронная функция.Следовательно, setCurrentPosition(position) вызывается после того, как значения широты и долготы выводятся на экран, на котором печатаются исходные значения.

...