I want to retrieve and store the result of Google Maps API function geocode() in order to use it later.
I have put the code below on an OnClick event to reverse geocode the address of the point clicked on the map.
The problem is that it always contains the value of the previous point clicked.
Example: the first time I click it is ‘undefined’, 2nd time it is the address of the point I clicked before and so on.
var address ;
my_listener = google.maps.event.addListener(map, 'click', function(event) {
codeLatLng(event.latLng);
});
function codeLatLng(mylatLng) {
geocoder = new google.maps.Geocoder();
var latlng = mylatLng;
geocoder.geocode({'latLng': latlng}, function(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
if (results[1])
{
address = results[1].formatted_address;
}
}
});
alert(address);
}
If you will move
alert, inside of callback, you will see the new address:Geocoding process is asyncronous, so in this case:
alertwill be executed before the geocoding data will be recieved from server and callbackfunction(results, status){}will be called.