FIXED!

The problem was that I was using a global variable for paths and
obviously this is just used by reference when initialising a polygon -
so any change to it for one polygon affects all those previously
created.

Making it a local MVCarray fixes it.

On Feb 5, 1:18 pm, Dave <davidt...@gmail.com> wrote:
> I am just porting from v2 to v3. Currently only working in Firefox
> (http://boca.org.au/component/boca_birding_locations/sitelist/16), but
> I have a problem in that I am drawing a set of markers (all fine) and
> polygons, and I thought only the last polygon was being displayed.
> Digging around in the data structures using Firebug it appears that
> they are all being displayed - but with the same co-ordinates. Firebug
> confirms they are all being created with different coordinates, so it
> appears that somehow the last polygon created overwrites the paths of
> all the earlier ones.
>
> The relevant JS code (called when I am parsing the XML file I
> download) is: (polys is a global array to hold the polygons so I can
> easily remove them all)
>
> /*
> Function to add a polygon (or polyline if b_polygon is false) to the
> map.
>
> We store a reference to the map in the polys array so that we can
> easily clear all polygons
>
> The parameters are as for add_marker.
>
> Note we also set a marker in the centre of the polygon and retunr a
> reference to that marker
> */
> function
> add_polygon(lat,lng,map,colour,text,text_colour,star_colour,polystring,b_polygon,title)
> {
> var poly=polys.length;
> logit("POLY",poly,polystring);
> // poly_points holds the lat/lng pairs
> poly_points.clear();
> // parse the string to add the points to the array
> var points=polystring.split(",");
> // should validate the zoom level and number of points I suppose but
> ignore for now
> // Create the vertices of the polygon as LatLng points and add to the
> poly_points array at the end
> for (var i=0;i<points.length;i+=2)
>   {
>   var point=new
> google.maps.LatLng(parseFloat(points[i]),parseFloat(points[i+1]));
> //      logit("POLY ",title,parseFloat(points[i]),parseFloat(points[i+1]))
>   poly_points.insertAt(poly_points.length, point);
>   }
> // create the polygon or polyline using the path defined
> if (b_polygon)
>         {
>         polys[poly] = new google.maps.Polygon({
>                   strokeWeight: 1,
>                   fillColor: '#FFDEAD',
>                   fillOpacity:0.1,
>                   paths:poly_points
>                 });
>         }
> else
>         {
>         polys[poly] = new google.maps.Polyline({
>                   strokeWeight: 1,
>                   path:poly_points
>                 });
>         }
> // and update the map with the polygon.
> polys[poly].setMap(map);
> // OK - now for the central marker
> var marker = new StyledMarker({styleIcon:new
> StyledIcon(StyledIconTypes.MARKER,
> {color:colour,text:text}),position:new
> google.maps.LatLng(lat,lng),title:title});
> marker.setMap(map);
> return(marker);
>
> }
>
>

-- 
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 google-maps-js-api-v3@googlegroups.com.
To unsubscribe from this group, send email to 
google-maps-js-api-v3+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-maps-js-api-v3?hl=en.

Reply via email to