0

我正在浏览 StackOverflow 并浏览所有的网络资源,但没有一个能告诉我如何完成这项工作。

我只想获取用户当前位置的纬度数。我想通过触发一种方法来做到这一点:getLat()就是这样。

它行不通。我尝试返回,但它一直未定义。我尝试更改变量,但这也失败了。各地的论坛都说你需要聪明一点,因为它是“异步的”,而且 API 会阻止你像这样获取 getLat(),但应该有办法。我不明白这特别意味着什么,我很想就此获得一些建议。

function getLat(){
var lat1;
function getLocation() {
    navigator.geolocation.getCurrentPosition (function (position){
        var coords = position.coords.latitude;
        lat1 = coords; 
    })
}
return lat1;
}

function getLong(){
var lng1;
function getLocation() {
    navigator.geolocation.getCurrentPosition (function (position){
        var coords = position.coords.longitude;
        lat1 = coords; 
    })
}
return lng1;
}
4

1 回答 1

0

这些getLocation函数没有被调用。因此,lat1and lng1,虽然声明了,但仍然没有任何值,因此undefined

此外,它getCurrentPosition是异步的。从技术上讲,当数据处理完成时,您不会返回数据,而是向其传递一个函数,类似于“待办事项”。

试试这个:

//define a function receiving a callback
function getLat(callback){

    //fire the getCurrentposition function
    navigator.geolocation.getCurrentPosition(function(position){

        //fire the callback that was passed, 
        //passing to it the latitude
        callback.call(this,position.coords.latitude);
    });
}

//now we use the function
getLat(function(lat){
    //do everything else via the lat variable here!
});

//now do the same for getLng
于 2012-10-19T11:32:33.277 回答