On Jun 8, 7:59 pm, Timo <[email protected]> wrote:
>
> I think there is a problem with the callback function of the geocoder
> class.
>

the loop issues 4 geocoding requests synchronously, but the
asynchronous responses might arrive in a different order.

The second response might arrive back at the browser before the
first.

You will need a function to obtain closure on the loop variable and
put the geocodes in the array using this id.

Also you should keep a count of the responses, and perform post-
processing once all responses are received (instead of the
window.setTimeout with 1 second delay)

var geocoder;
var n=0;
function geocode(i) {
  geocoder.geocode( {'address': Addresses[i][0]}, function(results,
status) {
    if (status == google.maps.GeocoderStatus.OK) {
      Lat[i-1] = results[0].geometry.location.b;
      Lng[i-1] = results[0].geometry.location.c;
    } else {
      if (status == google.maps.GeocoderStatus.ZERO_RESULTS) {
        alert("The address could not be found.");
      } else {
        alert("Geocode was not successful for the following reason: "
+ status);
      }
    }
    n++;
    if (n==Addresses.length-1) {
      AddInfoWindows();
      changeView();
    }
  });
}

----------------------------------------
and a loop like this:

geocoder = new google.maps.Geocoder();
for(var ii = 1; ii <= Addresses.length-1; ii++) {
  geocode(ii);
}

----------------------------------------

-- 
You received this message because you are subscribed to the Google Groups 
"Google Maps JavaScript API v3" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-maps-js-api-v3?hl=en.

Reply via email to