Since it is asynchronous, you must pass a callback that processes the function:
function codeAddress(address, callback) { (new google.maps.Geocoder()).geocode({ 'address' : address }, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { callback(String(results[0].geometry.location.Ya) + ',' + String(results[0].geometry.location.Za)) } else { callback(status); } }); } codeAddress("test", function(result) {
If you use jQuery, you can also use deferred:
function codeAddress(address, callback) { var dfd = new jQuery.Deferred(); (new google.maps.Geocoder()).geocode({ 'address' : address }, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { // trigger success dfd.resolve(String(results[0].geometry.location.Ya) + ',' + String(results[0].geometry.location.Za)); } else { // trigger failure dfd.reject(status); } }); return dfd; } codeAddress("some address").then( // success function(result) { // do stuff with result }, // failure function(statusCode) { // handle failure } );
source share