Hey Ben - thanks a million for the reply and sorry for my late
response but alas no joy.

I've set up http://www.gedwardsandassoc.com/CustomerWork/Morne/test7-0.htm
which is the original one where each of the 5 callbacks prints out a 4
(note how clicking on the "Route!" button enough times can yield very
different routes from the same original array of postcodes).

And I've done http://www.gedwardsandassoc.com/CustomerWork/Morne/test7-1.htm
with what I think is what I was supposed to do and alas it doesn't
work :(

I've added some debug code and I can see that each of the 5 searches
gets set up, but for some reason anything inside the return function()
{...} doesn't seem to be called.

I hope we can crack it (it would be very useful to lots of peeps in
the UK!)

Many thanks once again,

Gareth


On Oct 17, 6:01 pm, "Ben Lisbakken" <[EMAIL PROTECTED]> wrote:
> Hey Gareth --
> In the function that prints out 5 4's, add this to the top of the function:
> return function() {
> and then ofcourse close it at the end of the method.  Let me know if you get
> it.
>
> Ben
>
>
>
> On Wed, Oct 15, 2008 at 12:11 PM, GarethE <[EMAIL PROTECTED]> wrote:
>
> > Thanks Ben - closures look like just what I need. (I especially liked
> > your description of the snapshot of the variable value at the time the
> > call was made).
>
> > I've looked at your example, but have unfortunely not been able to
> > adapt it for .setSearchCompleteCallback.
>
> > This is the code so far (ShowTrip is called from a button):
>
> > var map;
> > var localSearch = new GlocalSearch();
> > var addressArray = new Array("NW3 7EB","WC1X 9ED", "N16 5HZ", "SW19
> > 8PB","NW3 7EB");
> > var pointsArray = [];
>
> > function mapLoad() {
> >        if (GBrowserIsCompatible()) {
> >                map = new GMap2(document.getElementById("map"));
> >                map.addControl(new GLargeMapControl());
> >                map.addControl(new GMapTypeControl());
> >                map.setCenter(new GLatLng(51.529251, -0.126343), 10,
> > G_HYBRID_MAP);
> >                map.enableScrollWheelZoom();
> >        }
> > }
>
> > function ShowTrip() {
> >    for (address in addressArray) {
> >        localSearch.setSearchCompleteCallback(this, SearchCallback,
> > [address]);
> >        localSearch.execute(addressArray[address]);
> >    }
> > }
>
> > function SearchCallback(addressnum) {
> >    if (localSearch.results[0]) {
> >        document.getElementById("debug").innerHTML += addressnum; //
> > at the moment this shows 5 4's
> >        var resultLat = localSearch.results[0].lat;
> >        var resultLng = localSearch.results[0].lng;
> >        pointsArray.push(new GLatLng(resultLat, resultLng));
> >          // above ideally would be: pointsArray[addressnum] = new...
> >        if (pointsArray.length == addressArray.length)
> > { GetDirections(); }
> >         // above ideally: if (addressnum == addressArray.length-1)
> > { GetDirections(); }
> >    }
> >    else {
> >        alert(address);
> >    }
>
> > }
>
> > function GetDirections() {
>
> >    // Displayed Route
> >    gdir = new GDirections(map);
> >    gdir.loadFromWaypoints(pointsArray);
> > }
>
> > If you could show me how to adapt it for closures that would be great!
>
> > Many thanks,
>
> > Gareth
>
> > On Oct 15, 3:22 am, "Ben Lisbakken" <[EMAIL PROTECTED]> wrote:
> > > Hey Gareth --
> > > Yeah, code would be best!  But it looks like you need the power of
> > closures.
> > >  I wrote a post on this awhile back that was pretty detailed, so I'm
> > going
> > > to link you to that rather than re-type it.  Closures are a bit confusing
> > > when you first learn them, but hopefully my explanation helps:
> >http://groups.google.com/group/Google-AJAX-Search-API/browse_thread/t...
>
> > > Regards,
> > > Ben
>
> > > On Tue, Oct 14, 2008 at 8:34 AM, GarethE <[EMAIL PROTECTED]>
> > wrote:
>
> > > > I'm using a GlocalSearch to find the exact lat and lng for an array of
> > > > addresses and then passing an array of GLatLng from each top result to
> > > > GDirections (from what I've read this is necessary here in the UK).
>
> > > > I've been able to loop the array of address and have set up
> > > > setSearchCompleteCallbacks for each one with a push into an array of
> > > > GLatLng items created from the lat and lng of the top search result.
>
> > > > The fun part is of course the callbacks can complete in any order so
> > > > the directions are often messed up. Is there a way to pass a sequence
> > > > value from the loop to each callback so the GLatLng items can be put
> > > > in their array in the same order as the addresses they came from? i.e.
> > > > the GLatLng created from the top search result of the first address
> > > > would always go into position 1, second address position 2, etc.
>
> > > > You can probably tell I'm new to asyncronous programming! - If there's
> > > > a simpler way to do the same thing I'm all ears.
>
> > > > Code happily provided on request and thanks in advance.- Hide quoted
> > text -
>
> > > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google AJAX API" 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-AJAX-Search-API?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to