2012-03-20 2 views
1

У меня есть код javascript в зависимости от геолокации.Почему этот код javascript, зависящий от геолокации HTML5, заблуждается?

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, который, безусловно, поддерживает геолокацию. Я также разрешил браузеру отслеживать мое местоположение.

+0

О, ты работяга ... – dangerChihuahua007

ответ

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

} 
0

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

Я считаю, что

navigator.geolocation.getCurrentPosition() 

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

+0

Ну, это было неудобно. Я ответил на свой вопрос. Надеюсь, этот вопрос поможет другим, кто наткнулся на подобные проблемы :) Также, дайте мне знать, если у вас есть лучший ответ или объяснение. – dangerChihuahua007