簡體   English   中英

從javascript函數返回變量

[英]returning variable from javascript function

我正在嘗試通過此函數返回經度和緯度,可以對它們進行console.log記錄,但是當我嘗試返回其中的一個時,卻無法定義。

如何返回經度和緯度?

function latLong(location) {
    var geocoder = new google.maps.Geocoder();
    var address = location;
    var longitude;
    var latitude;
    geocoder.geocode({
        'address': address
    }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            latitude = results[0].geometry.location.lat();
            longitude = results[0].geometry.location.lng();
        } else {
            alert("Geocode was not successful for the following reason: " + status);
        }
        console.log(longitude);
    });
}

地理編碼器是異步的,因此您無法從異步函數返回數據,但是可以使用回調

function latLong(location, callback) {
    var geocoder = new google.maps.Geocoder();
    var address = location;
    var longitude;
    var latitude;
    geocoder.geocode({
        'address': address
    }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            latitude = results[0].geometry.location.lat();
            longitude = results[0].geometry.location.lng();

            callback(latitude, longitude);

        } else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    });
}

並使用它做

 latLong(location, function(lat, lon)  {
     // inside this callback you can use lat and lon
 });

你不知道

通常使用的技術是將回調傳遞給latLong函數作為參數,並在收到結果時運行此函數。

就像是:

function latLong(location, callback) {

    var geocoder = new google.maps.Geocoder();
    var address = location;
    var longitude;
    var latitude;
    geocoder.geocode({
        'address': address
    }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            latitude = results[0].geometry.location.lat();
            longitude = results[0].geometry.location.lng();
            callback(latitude, longitude);
        } else {
            alert("Geocode was not successful for the following reason: " + status);
        }
        console.log(longitude);
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM