On Jun 2, 7:14 am, duffnut <[email protected]> wrote:
> the version with the bug, but that does load can be found 
> herehttp://thefoodcycle.org/projects/(the site is WIP, and the address is
> not to be shared far and wide yet)

You are not getting function closure on your infowindow variable
(because there is no createMarker function to get closure...), so it
always ends up with the last markers contents and associated with the
last marker.

It probably would be more useful if you had posted a link to the map
where you tried to get function closure but it didn't work.

  -- Larry

>
> and I've been looking at that example and this 
> onehttp://code.google.com/apis/maps/documentation/javascript/examples/ev...
>
> I've been through it so many times, I've lost the ability to find bugs
> right now...
>
> thanks for having a look,
>
> Donat
>
> On Jun 2, 1:53 pm, "[email protected]" <[email protected]>
> wrote:
>
>
>
> > On Jun 2, 5:22 am, duffnut <[email protected]> wrote:
>
> > > I have the classic scenario of wanting multiple markers with different
> > > info windows held in an array.
> > > I was having a problem with closures (like this 
> > > guyhttp://groups.google.com/group/google-maps-js-api-v3/browse_thread/th...),
> > > so I found examples and read up and tried to fix it. Every time I set
> > > up the add listener event in a different function, the map stopped
> > > loading completely
> > > My code follows, the section between /*--*/'s is the new bit that
> > > breaks it, and the // commented bits are what I had before that didn't
> > > work as I wanted, but let the map load at least. I've tried copying
> > > other peoples code, writing it myself, and every time I have the same
> > > problem. Any mistakes standing out?
>
> > > Thanks in advance, I'll appreciate any help :)
>
> > Do you have a link to your map?  It is hard to debug code dumps.
>
> > Looks to me like your infowindow variable needs to be in the global
> > context though...
>
> > You could try comparing it to this example (which may be what you are
> > talking about):http://www.geocodezip.com/v3_markers_infowindows.html
>
> >   -- Larry
>
> > > <script type="text/javascript">
> > >   google.load("maps", "3",  {other_params:"sensor=false"});
>
> > >   function initialize() {
> > >     var myOptions = {
> > >       zoom: 5,
> > >       center: new google.maps.LatLng(54.6738, -4.2188),
> > >       mapTypeControl: false,
> > >       mapTypeId: google.maps.MapTypeId.ROADMAP
> > >     };
> > >     var map = new
> > > google.maps.Map(document.getElementById("map_canvas"), myOptions);
> > >     var infoWindow = new google.maps.InfoWindow();
>
> > >   setMarkers(map, projects);
>
> > > }
>
> > > /*--*/
> > >   var image = new google.maps.MarkerImage('images/icons/flag.png',
> > >       new google.maps.Size(20, 32),
> > >       new google.maps.Point(0,0),
> > >       new google.maps.Point(4, 30));
> > >   var shadow = new google.maps.MarkerImage('images/icons/shadow.png',
> > >       new google.maps.Size(37, 32),
> > >       new google.maps.Point(0,0),
> > >       new google.maps.Point(0, 32));
>
> > > function createMarker(map, latlng, title, zIndex, content) {
> > >     var marker = new google.maps.Marker({
> > >         position: myLatLng,
> > >         map: map,
> > >         icon: image,
> > >         shadow: shadow,
> > >         title: title,
> > >         zIndex: zIndex
> > >     });
> > > //     var infowindow = new google.maps.InfoWindow({
> > > //         content: '<p style="color:black; align:center;"><b>'+label
> > > +'</b><br/>'+content+'</p>'
> > > //     });
> > >     new google.maps.event.addListener(marker, 'click', function() {
> > >         var stringy = '<p style="color:black; align:center;"><b>'+label
> > > +'</b><br/>'+content+'</p>';
> > >         infowindow.setContent(stringy);
> > >         infowindow.open(map, marker);
> > >     });}
>
> > > /*--*/
>
> > > var projects = [
> > >   ['London', 51.5002, -0.1262, 4, 'test 1'],
> > >   ['Bristol', 51.4553, -2.5919, 3, 'test 2'],
> > >   ['Norwich', 52.6281, 1.2993, 2, 'test 3'],
> > >   ['Edinburgh', 55.9502, -3.1875, 1, 'test 4'],
> > > ];
>
> > > function setMarkers(map, locations) {
> > > //   var image = new google.maps.MarkerImage('images/icons/flag.png',
> > > //       new google.maps.Size(20, 32),
> > > //       new google.maps.Point(0,0),
> > > //       new google.maps.Point(4, 30));
> > >   for (var i = 0; i < locations.length; i++) {
> > >     var project = locations[i];
> > >     var myLatLng = new google.maps.LatLng(project[1], project[2]);
> > >     var marker = createMarker(map, myLatLng, project[0], project[3],
> > > project[4]);
> > > //     var marker = new google.maps.Marker({
> > > //         position: myLatLng,
> > > //         map: map,
> > > //         icon: image,
> > > //         title: project[0],
> > > //         zIndex: project[3]
> > > //     });
> > > //     var infowindow = new google.maps.InfoWindow({
> > > //         content: '<p style="color:black;">'+project[4]+'</p><br />'
> > > //     });
> > > //     new google.maps.event.addListener(marker, 'click', function() {
> > > //         infowindow.open(map,marker);
> > > //     });
> > >   }}
>
> > >   google.setOnLoadCallback(initialize);
> > > </script>- Hide quoted text -
>
> - Show quoted text -

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