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

Reply via email to