geocode
- это асинхронная функция. начинается , когда вы звоните, но это все.(Вот почему он принимает обратный вызов.) Таким образом, ваша функция getAddress
возвращается до того, как обратный вызов установит address
.
Вам необходимо, чтобы ваша функция getAddress
также принимала обратный вызов и возвращаларезультат таким образом, например,
getAddress: function(latlngcoords, callback)
// ^--- callback parameter
{
var goMap = this;
var input = latlngcoords;
var latlngStr = input.split(",", 2);
var lat = parseFloat(latlngStr[0]);
var lng = parseFloat(latlngStr[1]);
var latlng = new google.maps.LatLng(lat, lng);
var address;
geocoder.geocode({'latLng': latlng}, function(results, status)
{
if(status == google.maps.GeocoderStatus.OK)
{
if(results)
{
address = results;
callback(address);
// ^--- call it with the result
}
}
});
},
Естественно, это означает, что код , вызывающий getAddress
, должен обрабатывать тот факт, что getAddress
также является асинхронным.