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 -~----------~----~----~----~------~----~------~--~---
