Ваши переменные "lat" и "lon" объявлены внутри обратного вызова из "geocode ()".Однако даже если вы объявите их вне этого, общая идея не сработает.Функция geocode () имеет вид асинхронный ;по этой причине в первую очередь существует функция обратного вызова.
Вместо того, чтобы структурировать свой код так, чтобы ваша функция get_current_user_lat_lon () * возвращала значение, следуйте примеру архитектуры Google исделать вашу собственную функцию принять обратный вызов:
function get_current_user_lat_lon( callback ){
var address = $("#hidden_current_location").val();//Working fine
geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var variable = results[0].geometry.location;
var lat = variable.lat();
var lon = variable.lng();
callback({latitude: lat, longitude: lon});
}
});
}