On Oct 26, 3:49 pm, Nick <[email protected]> wrote:
> So bear with me, as I'm still trying to wrap my head around this. I
> have a setup that utilizes PostGIS on the back-end (through geo-
> django) and google maps on the front-end.
>
> On the backend I have a point in WGS84 and a radius in KM around it. I
> do spatial queries around it by:
>
> - Converting the point to Mercator
> - Buffering the point (geo-django) by the radius in meters
> - Converting the resulting polygon back to WGS84
>
> This all seems to work, except that I'm noticing a bit of a difference
> between what I expect and the results that I'm getting.
>
> So I decided to take that resulting polygon and plot it on a map. Here
> is what I got:
>
> http://imgur.com/5Mdrj.png
>
> Ignore the blue circle. The red circle is what I'm drawing directly by
> taking the point and projecting a radius out from it. The green circle
> is the polygon as returned from geo-django (the same point + radius,
> projected to Mercator, and back to WGS84).
>
> I'm plotting the red circle using a simple algorithm I picked up
> somewhere around here. It uses the excellent latlon.js library to to
> calculate each point. Here is the relevant code:
>
> LatLon.prototype.destPoint = function(brng, d) {
>   var R = 6371; // earth's mean radius in km
>   var lat1 = this.lat.toRad(), lon1 = this.lon.toRad();
>   brng = brng.toRad();
>
>   var lat2 = Math.asin( Math.sin(lat1)*Math.cos(d/R) +
>                         Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng) );
>   var lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(d/
> R)*Math.cos(lat1),
>                                Math.cos(d/R)-
> Math.sin(lat1)*Math.sin(lat2));
>   lon2 = (lon2+Math.PI)%(2*Math.PI) - Math.PI;  // normalise to
> -180...+180
>
>   if (isNaN(lat2) || isNaN(lon2)) return null;
>   return new LatLon(lat2.toDeg(), lon2.toDeg());
>
> }
>
> Essentially I start at the center and call destPoint() for each node
> in the circle (36 nodes) eventually arriving at a closed polygon that
> I then add as an overlay. Pretty simple stuff.
>
> Unfortunately my geometry is failing me here. I'm positive that I'm
> making some sort of bad assumption (probably around how that
> destPoint() function is projecting vs the better representation on the
> backend), but I'm not sure what it is.
>
> Help!:)

Can't really tell without a link to the code that creates all the
circles.

Are you trying to draw a real circle or something that looks like a
circle on a google map after projection?

They won't be the same and it sounds like you are comparing a real
circle with something that looks like a circle and are confused
because they are different.

  -- Larry

-- 
You received this message because you are subscribed to the Google Groups 
"Google Maps API V2" 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