I wasn't after help debugging anything, I wanted the other poster (or someone) to explain the correct use of an array of Object vs. an array of GLatLng. Apparently a valid JSON construct, which includes the double-quotes, is not palatable to GLatLng. Upon making them floats, it works fine. My source data was output by PHP's json_encode() function, which I'd expected would be suitable. It's not.
However, the map is now published outside, rather that on my localhost: http://bartlies.com/map/index.php I opted to just provide a checkbox to turn on/off the GPolygons since IE still was pretty sluggish. On Dec 28, 11:34 am, "[email protected]" <[email protected]> wrote: > On Dec 28, 11:10 am, donb <[email protected]> wrote: > > > How exactly does one DO that so it is acceptable to GPolygon()? I > > swapped out an array of GLatLng with an array like this: > > > [{"x":"-85.9375839233398440","y":"39.9271392822265630"}, > > {"x":"-85.9373779296875000"},"y":"39.9264373779296870"] > > The above looks wrong to me. > 1. I would expect the anonymous objects to look like: > {x: -85.9375839233398440, y:39.9271392822265630} > (unless you really like converting the strings to floats) > > 2. The last/second entry is different (typo? which is why a link > would be better...) > > -- Larry > > > > > > > (this is shortened to two points for illustration purposes) in my call > > to GPolygon() and I get nothing at all, despite it working perfectly > > (although slowly) with an array of GLatLng. > > > don > > > On Nov 26, 8:05 pm, bratliff <[email protected]> wrote: > > > > On Nov 26, 10:30 pm, "Michael Geary" <[email protected]> wrote: > > > > Thanks Mike, > > > > > GPolygon goes through multiple function calls for every point. You have > > > > to > > > > create a GLatLng for each point, ang GPolygon converts each lat/lng to a > > > > pixel coordinate by going through quite a bit of general purpose code. > > > > It baffles me why people use an array of [new GLatLng(Lat,Lon)] > > > objects instead of an array of [{x:Lon,y:Lat}] objects to build a > > > GPoly object. The speed advantage of GPoly.fromEncoded() vanishes > > > with the later approach. > > > > > PolyGonzo uses a tight inner loop for the points within a single > > > > polygon, > > > > with separate inner loops for IE (generating VML directly) and other > > > > browsers (using Canvas). It makes no JavaScript function calls in these > > > > inner loops, and precalculates as much of the coordinate conversion as > > > > possible outside the inner loop. This conversion is hard coded to use > > > > Mercator at the moment. > > > > > In addition, all of the variables used in the inner loop are local > > > > variables. There's an eachShape() function in polygonzo.js that has a > > > > surprisingly long list of function parameters. These parameters are > > > > there so > > > > that the references to them are truly local variables. This saves on > > > > name > > > > lookups in the inner loop. > > > > > Here's the innermost loop for IE: > > > > > for( var iCoord = -1, coord; coord = coords[++iCoord]; ) { > > > > vml[iVml++] = round( coord[0] * 10 ); > > > > vml[iVml++] = ','; > > > > vml[iVml++] = round( coord[1] * 10 ); > > > > vml[iVml++] = ' l '; > > > > } > > > > I might have joined elements in the outer loop but concatenated > > > elements in the inner loop. I am surprised four elements incur much > > > penalty. > > > > Concatenation degrades for long strings exceeding their allocated > > > space. > > > > str+=round( coord[0] * 10 ); > > > str+=','; > > > str+=round( coord[1] * 10 ); > > > str+=' l '; > > > > is slow but > > > > str[i++]=round( coord[0] * 10 )+','+round( coord[1] * 10 )+' l '; > > > > ought to be fast. > > > > The conversion from float to string is done automatically. > > > > Is your own "round" function (interpreted) more efficient than the > > > built-in "Math.round" function (compiled) ? > > > > > The use of "vml[iVml++] = ...." in the IE version is itself one of the > > > > optimizations. It's quite a bit faster than the "vml.push(...);" that I > > > > would prefer to use. > > > > Interesting. I like to do the same thing using the loop counter for > > > an index but it is simply dumb luck. > > > > > > For my own JS enlightenment, I am not sure I understand the > > > > > purpose of the unnamed / anonymous "()" function. Is it to > > > > > keep clutter out of the global namespace ? I believe Google > > > > > is using a similar trick with their classic loader. Do you > > > > > anticipate a conflict ? > > > > > Yes, that's precisely what it's for - to create a local namespace. The > > > > particular form that I used in polymap.js and testmap.js is popular in > > > > jQuery code: > > > > I have been looking for a way to avoid namespace pollution. I was > > > afraid to redefine the "()" function. Google's "main.js" already uses > > > it.- 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 Maps 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-Maps-API?hl=en -~----------~----~----~----~------~----~------~--~---
