Невозможно вернуть значение из этой функции через обратный вызов в код Google.Это не имеет никакого смысла;функция "geocode ()" асинхронная .Внешняя функция вернется к тому времени, когда ваш обратный вызов будет запущен.
Правильный способ сделать это - подражать самому API Google: дать вашей функции параметр обратного вызова и выполнить оттуда свою "последующую" работу:
function geocodeAddress(address, callback) {
var latlng = new Array(2);
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
latlng[0] = results[0].geometry.location.lat();
latlng[1] = results[0].geometry.location.lng();
callback(latlng); // call the callback function here
} else {
console.log("Geocode was not successful for the following reason: " + status);
}
});
}
edit - как пример того, как вы будете использовать это:
geocodeAddress(search_location, function(search_latlng) {
console.log(search_latlng);
$.getJSON('/main/get_places', {search_location: search_latlng}, function(json){
$("#result_listing").html('');
// ...
});
});
Это похоже на ваш исходный код, но вместо геокодарезультат возвращает в ваш код, он передается в качестве параметра для функции обратного вызова, которую вы предоставляете.