1

我有一个我似乎无法弄清楚的问题。我正在使用 phonegap 尝试获取当前的纬度和经度并将值分配给变量。

我将在应用程序中的多个位置使用纬度和经度,因此我需要将其分配给我可以在其他地方使用的变量。

在此设置中,html 输出为“未定义”。

我确定这与我缺少的 javascript 和异步有关……有什么帮助吗?

/******************** Life Cycle ************************/

function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}

/******************** Device is Ready ************************/

function onDeviceReady() {


/******************** Geo Info ************************/

    // Variables
    var currentLat;
    var currentLon;
    var geoWatchID = 0;

    // get current geo location
    if (geoWatchID == 0) {
        var geoOptions = {maximumAge: 3000, enableHighAccuracy: true};
        geoWatchID = navigator.geolocation.watchPosition(onSuccess, onError, geoOptions);

        function onSuccess(position) {
            currentLat = position.coords.latitude;
            currentLon = position.coords.longitude;
        }

        function onError(error) {
            alert('code: ' + error.code + '\n' +
                  'message: ' + error.message + '\n');
        }

    } else {
        navigator.geolocation.clearWatch(geoWatchID);
        geoWatchID = 0;
    }

    // display the current latitude and longitude w/ jquery
    $('#currLat').html(currentLat);
    $('#currLon').html(currentLon);

} // END device is ready 

以前有人用过这个吗?

4

1 回答 1

3

这是因为onSuccess只有在 jQuery 语句之后才被调用,所以尝试

    function onSuccess(position) {
        currentLat = position.coords.latitude;
        currentLon = position.coords.longitude;

        // display the current latitude and longitude w/ jquery
        $('#currLat').html(currentLat);
        $('#currLon').html(currentLon);
    }

编辑:

    function onSuccess(position) {
        currentLat = position.coords.latitude;
        currentLon = position.coords.longitude;
        update();    
    }

    function update(){
        // display the current latitude and longitude w/ jquery
        $('#currLat').html(currentLat);
        $('#currLon').html(currentLon);
    }
于 2013-03-13T16:48:17.453 回答