0

我开始学习 javascript 并在 gps 周围摆弄。目前,我在函数范围内遇到问题。

编码

$(document).ready(function () {
    var lat, lng;

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function (position) {
            $(document).data('lat', position.coords.latitude); //undefined outside
            lat = position.coords.latitude; //undefined outside
            lng = position.coords.longitude; //undefined outside
        });
    }

    var coords = new google.maps.LatLng(lat,lng); //lat & lng are undefined
});

问题在于,我在 getCurrentPosition 调用的函数的本地范围内分配的任何值都没有保留。处理此问题的最佳做法是什么。我假设它只是返回一个包含数据的对象,但我该怎么做呢?我尝试这样做,但它仍然无法正常工作

4

1 回答 1

3

好吧,由于上面的两条评论,我想通了。问题不是范围问题,而是异步问题。参考stackoverflow.com/q/14220321/218196

$(document).ready(function () {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(success, error, { maximumAge: 75000 });
    }

    function success(position) {
        var coords = new google.maps.LatLng(
            position.coords.latitude,
            position.coords.longitude);
        initMap(coords);
    }

    function error(err) {
        //coordinates of LA
        initMap(new google.maps.LatLng(34,118));
    }


    function initMap(coords) {
       //logic here 
    }
});
于 2013-08-26T03:29:53.030 回答