I haven't followed all this thread, but from your description is this last post, it may sound like a differnece between Math.round() and Math.floor(). It would seem as if fromLatLngToPixel() is using Math.floor(), while you are using Math.round(). (Your "0.5 +" is equivalent to using round ()).
Is the 1 pixel difference always in the same direction? IE, your calculation sometimes greater than fromLatLngToPixel(), but never smaller? -- Marcelo - http://maps.forum.nu -- On Oct 10, 9:25 am, Paul Kulchenko <[email protected]> wrote: > Berry, > > I'd like to resurrect this thread as it turned out I have a weird > issue that you (or somebody else) may help with. As we discussed in > this thread, it's possible to replace fromLatLngToPixel() with a > formula to calculate pixel position. For some reason, this calculation > is *sometimes* one pixel off from what's calculated by > fromLatLngToPixel(). > > Here is the map:http://notebook.kulchenko.com/maps/gridapi > > When it's loaded you'll see: 198329=198330; 420541=420541 > > The first number is X coordinate as calculated by the algorithms we > discussed in this thread; the second one is as calculated by > fromLatLngToPixel(). When you move the map a bit to the right (to see > the tile boundary) you'll notice that there is indeed one pixel > difference. I *never* saw this problem with Y values. Even X values > are correct most of the time, but sometimes they are off by one pixel. > > Here is the formula: > > var OFFSET = 268435456; > var LngToX = function (lng) { return ~~(0.5 + OFFSET + lng*OFFSET/ > 180); } > var x = LngToX(center.lng()) >> (21 - zoom); > > I also checked using your exact formula and got the same result. > > There is one more thing I can't explain: when I compare tile offset > (as generated by google) with the offset I calculate in v3, I'm always > off by one pixel. In v2 I only occasionally off; most of the time it's > correct. > > Any ideas about what may be going on? > > Paul (http://notebook.kulchenko.com/maps) > > On Sep 15, 5:45 am, bratliff <[email protected]> wrote: > > > On Sep 15, 7:29 am, Paul Kulchenko <[email protected]> wrote: > > > > I also switched to using my own calculations for the Mercator > > > projection and it seems to be almost 5 times faster than gmap's > > > fromLatLngToPixel(). I didn't expect such a significant difference (on > > > 1000+ points). Although there may be other factors in play that I > > > haven't excluded (I haven't tried the simplest possible example just > > > to benchmark it). > > > Yep. Virtually all Google maps are Mercator but "fromLatLngToPixel()" > > has to be able to handle other oddball projections. It also requires > > a "new GLatLng()" object for every call which just adds overhead. V3 > > does not even provide a "fromLatLngToPixel()" method. V3 does provide > > a "fromLatLngToDivPixel()" method but for tile numbers, you must roll > > your own. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
