On Fri, Aug 27, 2010 at 2:59 PM, [email protected]
<[email protected]>wrote:

> On Aug 26, 9:53 pm, "[email protected]" <[email protected]>
> wrote:
> > On Aug 26, 9:26 pm, Ben Appleton <[email protected]> wrote:
> >
> >
> >
> > > On Fri, Aug 27, 2010 at 2:17 PM, [email protected]
> > > <[email protected]>wrote:
> >
> > > > On Aug 26, 7:49 pm, xf_aicn <[email protected]>
> wrote:
> > > > > Hi all,
> >
> > > > > Now i'm doing a project that connect two place with a
> > > > > polyline(geodesic is true), and then at the same time, show a
> marker
> > > > > on the middle of the polyline, how can I do this? I can't get the
> > > > > coordinate on thepolyline
> >
> > > >http://www.geocodezip.com/v3_polyline_example_geodesic.html
> >
> > > > Seems to be off the "native" google geodesic polyline.  Don't know
> > > > why.
> >
> > > The geodesic marker looks OK me in Chrome/WinXP.  I've attempted to
> attach
> > > an image, though I do not know if groups allows attachments.
> >
> > > In which browser are you seeing the problem?
> >
> > IE6 (and Chrome, FF; Opera doesn't seem to want to show the map), but
> > click on the marker then "zoom in" to see the difference in the
> > polylines (the green polyline is the "native" google maps one, the red
> > is the one that was calculated).  How are the "native" geodesic
> > polylines rendered?
>
> Oops, missed this part of your question:
> > For the "normal" polyline did you average in LatLng space or projected
> > coordinates?  I couldn't spot it at a glance of your code.
>
> I just ported Mike Williams' epoly GetPointAtDistance, which just does
> a a linear interpolation on lat and lng.
>
> Do you have a reference to a more accurate way?


Try something along these lines (no pun intended):

var map = new google.maps.Map(...);
var startMarker = new google.maps.Marker(...);
var endMarker = new google.maps.Marker(...);
var midMarker = new google.maps.Marker(...);

google.maps.event.addListener(map, 'projection_changed', function() {
  var projection = map.getProjection();
  if (!projection) return;

  // Project
  var startLatLng = startMarker.getPosition();
  var endLatLng = endMarker.getPosition();
  var startPoint = projection.fromLatLngToPoint(startLatLng);
  var endPoint = projection.fromLatLngToPoint(endLatLng);

  // Average
  var midPoint = new google.maps.Point(
      (startPoint.x + endPoint.x) / 2,
      (startPoint.y + endPoint.y) / 2);

  // Unproject
  var midLatLng = projection.fromPointToLatLng(midPoint);
  midMarker.setPosition(midLatLng);
});

    -- Larry
>
>
> >
> >
> > > The center marker on the "normal" polyline seems off as well.
> >
> > > For the "normal" polyline did you average in LatLng space or projected
> > > coordinates?  I couldn't spot it at a glance of your code.
> >
> > > >  -- Larry
> >
> > > > --
> > > > 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
> > > > [email protected].
> > > > To unsubscribe from this group, send email to
> > > > [email protected]<google-maps-js-api-v3%[email protected]><google-maps-js-api-v3%2B
> [email protected]>
> > > > .
> > > > For more options, visit this group at
> > > >http://groups.google.com/group/google-maps-js-api-v3?hl=en.
> >
> > >  geodesic_markers.PNG
> > > 116KViewDownload
>
> --
> 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
> [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-maps-js-api-v3%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-maps-js-api-v3?hl=en.
>
>

-- 
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 [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-js-api-v3?hl=en.

Reply via email to