Hi Bill,
This indeed is some fantastic code. Not sure how to make it work in IE
though?
M
On Thursday, May 31, 2012 11:39:58 AM UTC-7, Bill Chadwick wrote:
>
> Glad someone else has ported the arrowline code to V3 - just the job
> for a pipeline.
>
> Lack of the projection object early on with V3 is a pain. As its not
> that complicated, it can be easier to recreate the projection code in
> your own object e.g.
>
> function MyProjection() {
> };
>
> MyProjection.prototype.fromLatLngToPoint = function(latLng, opt_point)
> {
>
> if (latLng == null)
> return null;
>
> var point = opt_point || new google.maps.Point(0, 0);
>
> var lat = latLng.lat();
> var lng = latLng.lng();
>
> if (lng > 180.0)
> lng -= 360.0;
> lng /= 360.0;
> lng += 0.5;
>
> lat = 0.5 - ((Math.log(Math.tan((Math.PI / 4.0) + ((0.5 * Math.PI
> * lat) / 180.0))) / Math.PI) / 2.0);
>
> point.x = lng * 256.0;
> point.y = lat * 256.0;
>
> return point;
> };
>
> MyProjection.prototype.fromPointToLatLng = function(point, noWrap) {
>
> var lng = -180.0 + ((point.x/256.0) * 360.0);
> var lat = (180.0 / Math.PI) * ((2 * Math.atan(Math.exp(Math.PI *
> (1 - (2 * (point.y/256.0)))))) - (Math.PI / 2));
> return new google.maps.LatLng(lat, lng, noWrap);
> };
>
> On May 31, 1:30 pm, "[email protected]" <[email protected]>
> wrote:
> > On May 30, 11:42 pm, Mapper99 <[email protected]> wrote:
> >
> > > Any idea why this code does not work in IE?
> >
> > Not with the error messages I have seen:
> >
> > Message: Object doesn't support this property or method
> > Line: 293
> > Char: 3
> > Code: 0
> > URI:http://www.geocodezip.com/laudontech_com_papapump-plannerA.html
> >
> > I haven't had a chance to look at the problem on a computer that has a
> > debugger for IE. I will when I can, but it might be a while (the
> > weekend).
> >
> > -- Larry
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > > On Wednesday, May 30, 2012 10:15:06 PM UTC-7, [email protected]:
> >
> > > > On May 30, 10:05 pm, "[email protected]" <[email protected]>
> > > > wrote:
> > > > > On May 30, 7:30 pm, Mapper99 <[email protected]> wrote:
> >
> > > > > > Hmmm..I did listen to the map projection event and indeed it is
> > > > defined.
> > > > > > The code that is failing I think has to do with the point...
> >
> > > > > > I uploaded a sample here:
> >
> > > > > >http://laudontech.com/temp2/badcode/papapump-planner.html
> >
> > > > > > You need to click on each of the icons on the right of the map
> > > > > > then click the done button at the very bottom of the page
> > > > > > Click done once, error occurs. Click done again, and all is
> well
> >
> > > > > > Very strange!
> >
> > > > > Reading the documentation:
> > > >
> https://developers.google.com/maps/documentation/javascript/reference...
> >
> > > > > google.maps.MapCanvasProjection object
> >
> > > > > This object is made available to the OverlayView from within the
> draw
> > > > > method. It is not guaranteed to be initialized until draw is
> called.
> >
> > > > > looks you need to call draw before you use the projection.
> >
> > > > This seems to work:
> > > >http://www.geocodezip.com/laudontech_com_papapump-plannerA.html
> > > > (except in IE)
> >
> > > > -- Larry
> >
> > > > > > On Wednesday, May 30, 2012 5:08:16 AM UTC-7,
> [email protected]:
> >
> > > > > > > On May 29, 11:26 pm, Mapper99 <[email protected]> wrote:
> > > > > > > > I am using some wonderful code to draw arrow on line
> segments
> > > > thanks to
> > > > > > > > this code from Bill Chadwick:
> >
> > > > > > > >http://wtp2.appspot.com/ArrowLine.htm
> >
> > > > > > > > The problem is I need to call the function twice for the
> arrows to
> > > > > > > appear.
> > > > > > > > The first time I call the code I get this error:
> >
> > > > > > > > this.prj is undefined
> >
> > > > > > > > var p1 =
> > > > this.prj.fromLatLngToContainerPixel(this.points[0]);//first
> > > > > > > point
> >
> > > > > > > > This is the code I am using to call the function:
> >
> > > > > > > > var connectTheDots = [
> > > > > > > > marker1.getPosition(),
> > > > > > > > marker2.getPosition(),
> > > > > > > > marker3.getPosition(),
> > > > > > > > ];
> >
> > > > > > > > var poly1 = new
> >
> > > >
> BDCCArrowedPolyline(connectTheDots,"blue",4,0.3,null,30,7,"#0000FF",2,0.5);
> >
> > > > > > > > Any idea why this code fails the first time? this.points[0]
> > > > indeed is a
> > > > > > > > valid object.
> >
> > > > > > > The v3 API is event driven.
> >
> > > > > > > Has the projection been initialized the first time it is used?
> You
> > > > > > > may have to wait for an event that tells you it has been
> initialized
> > > > > > > before using it.
> >
> > > > > > > From the documentation:
> > > > > > > getProjection()
> > > > > > > Projection
> > > > > > > Returns the current Projection.
> > > > > > > If the map is not yet initialized (i.e. the mapType is still
> null)
> > > > > > > then the result is null. Listen to projection_changed and
> check its
> > > > > > > value to ensure it is not null.
> >
> > > > > > > -- Larry
> >
> > > > > > > > Thanks in advance,
> >
> > > > > > > > Mapper99
> > > > > > On Wednesday, May 30, 2012 5:08:16 AM UTC-7,
> [email protected]:
> >
> > > > > > > On May 29, 11:26 pm, Mapper99 <[email protected]> wrote:
> > > > > > > > I am using some wonderful code to draw arrow on line
> segments
> > > > thanks to
> > > > > > > > this code from Bill Chadwick:
> >
> > > > > > > >http://wtp2.appspot.com/ArrowLine.htm
> >
> > > > > > > > The problem is I need to call the function twice for the
> arrows to
> > > > > > > appear.
> > > > > > > > The first time I call the code I get this error:
> >
> > > > > > > > this.prj is undefined
> >
> > > > > > > > var p1 =
> > > > this.prj.fromLatLngToContainerPixel(this.points[0]);//first
> > > > > > > point
> >
> > > > > > > > This is the code I am using to call the function:
> >
> > > > > > > > var connectTheDots = [
> > > > > > > > marker1.getPosition(),
> > > > > > > > marker2.getPosition(),
> > > > > > > > marker3.getPosition(),
> > > > > > > > ];
> >
> > > > > > > > var poly1 = new
> >
> > > >
> BDCCArrowedPolyline(connectTheDots,"blue",4,0.3,null,30,7,"#0000FF",2,0.5);
> >
> > > > > > > > Any idea why this code fails the first time? this.points[0]
> > > > indeed is a
> > > > > > > > valid object.
> >
> > > > > > > The v3 API is event driven.
> >
> > > > > > > Has the projection been initialized the first time it is used?
> You
> > > > > > > may have to wait for an event that tells you it has been
> initialized
> > > > > > > before using it.
> >
> > > > > > > From the documentation:
> > > > > > > getProjection()
> > > > > > > Projection
> > > > > > > Returns the current Projection.
> > > > > > > If the map is not yet initialized (i.e. the mapType is still
> null)
> > > > > > > then the result is null. Listen to projection_changed and
> check its
> > > > > > > value to ensure it is not null.
> >
> > > > > > > -- Larry
> >
> > > > > > > > Thanks in advance,
> >
> > > > > > > > Mapper99
--
You received this message because you are subscribed to the Google Groups
"Google Maps JavaScript API v3" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-maps-js-api-v3/-/vNfDVzE0toUJ.
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.