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, "geocode...@gmail.com" <geocode...@gmail.com> > wrote: > > On May 30, 11:42 pm, Mapper99 <mappe...@gmail.com> 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, geoco...@gmail.comwrote: > > > > > > On May 30, 10:05 pm, "geocode...@gmail.com" <geocode...@gmail.com> > > > > wrote: > > > > > On May 30, 7:30 pm, Mapper99 <mappe...@gmail.com> 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, > geoco...@gmail.comwrote: > > > > > > > > > On May 29, 11:26 pm, Mapper99 <mappe...@gmail.com> 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, > geoco...@gmail.comwrote: > > > > > > > > > On May 29, 11:26 pm, Mapper99 <mappe...@gmail.com> 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 google-maps-js-api-v3@googlegroups.com. To unsubscribe from this group, send email to google-maps-js-api-v3+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-maps-js-api-v3?hl=en.