HTML5地理位置lat和当前GPS位置的长坐标变为变量

时间:2014-06-28 12:58:40

标签: javascript html5 variables geolocation scope

我试图通过利用HTML5的地理位置功能来获取用户的当前纬度和经度值。在研究并试图从StackOverflow上的其他问题得到答案后,我似乎仍然误解了访问全局变量的概念。到目前为止,我所看到的一切都让它看起来像是范围有问题。我正在使用的代码看起来像是在函数中使用函数。我目前正在运行以下代码:

<script type="text/javascript">
var currentLat = 0;
var currentLong = 0;

function getPosition() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    }
}
function showPosition(position) {
    console.log(position.coords.latitude);
    console.log(position.coords.longitude); 
}

getPosition();

此代码目前的工作原理是它将信息记录到控制台。但是,如果我将代码更改为此代码,它似乎无法正常工作:

<script type="text/javascript">
var currentLat = 0;
var currentLong = 0;

function getPosition() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    }
}
function showPosition(position) {
    currentLat = position.coords.latitude;
    currentLong = position.coords.longitude; 
}

getPosition();

console.log(currentLat + "," + currentLong);

它只是像我原来设置的那样返回0。我已经在全局变量上搜索了很多,但是大多数在线资源(包括StackOverflow)声明我可以访问这些变量,只要我不在函数内重新声明变量(或者创建一个覆盖了变量的局部范围变量)全局变量)。

1 个答案:

答案 0 :(得分:1)

感谢gro的评论,我发现这有效:

    window.onload = function(){
    navigator.geolocation.getCurrentPosition(function(position) {  
      window.currentLat = position.coords.latitude;
      window.currentLong = position.coords.longitude;
      window.currentLatLong = new google.maps.LatLng(currentLat,currentLong);
      init();
    });
}

function init() {
    // run code here and reference currentLatLong, currentLat and currentLong
}