# RotationProjection on EditOverlay/TrackOverlay

**URL:** <https://community.thinkgeo.com/t/rotationprojection-on-editoverlay-trackoverlay/449>\
**Category:** WinForms\
**Created:** [May 29, 2009, 4:00pm UTC](https://community.thinkgeo.com/t/rotationprojection-on-editoverlay-trackoverlay/449 "2009-05-29T16:00:52Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![David\_Edwardson](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/d/c6cbf5/32.png) [@David\_Edwardson](https://community.thinkgeo.com/u/David_Edwardson)\
**Post date:** [May 29, 2009, 4:00pm UTC](https://community.thinkgeo.com/t/rotationprojection-on-editoverlay-trackoverlay/449/1 "2009-05-29T16:00:52Z")

</div>

Is&nbsp;there&nbsp;an&nbsp;easy&nbsp;way&nbsp;to&nbsp;add&nbsp;a&nbsp;RotationProjection&nbsp;to&nbsp;the&nbsp;Edit/TrackOverlay&nbsp;of&nbsp;a&nbsp;map?&nbsp;&nbsp;I've&nbsp;tried&nbsp;adding&nbsp;to&nbsp;the&nbsp;individual&nbsp;layers&nbsp;(DragControlPointsLayer,&nbsp;EditLayer&nbsp;...etc.)&nbsp;and&nbsp;it&nbsp;seems&nbsp;to&nbsp;rotate&nbsp;fine,&nbsp;but&nbsp;if&nbsp;I&nbsp;drag&nbsp;a&nbsp;control&nbsp;point&nbsp;of&nbsp;a&nbsp;multi-line&nbsp;feature&nbsp;the&nbsp;control&nbsp;point&nbsp;moves&nbsp;in&nbsp;a&nbsp;different&nbsp;direction&nbsp;once&nbsp;I&nbsp;change&nbsp;the&nbsp;rotation&nbsp;(wrong&nbsp;extent&nbsp;being&nbsp;used&nbsp;in&nbsp;DragControlPointsLayer???).

Thanks,

Dave

---

<div class="post-metadata">

**Author:** ![Ben](https://community.thinkgeo.com/user_avatar/community.thinkgeo.com/ben/32/25720_2.png) [@Ben](https://community.thinkgeo.com/u/Ben)\
**Post date:** [June 1, 2009, 2:58am UTC](https://community.thinkgeo.com/t/rotationprojection-on-editoverlay-trackoverlay/449/2 "2009-06-01T02:58:49Z")

</div>

Dave,&nbsp;

We&nbsp;cannot&nbsp;add&nbsp;a&nbsp;RotationProjection&nbsp;to&nbsp;the&nbsp;Edit/trackOverlay&nbsp;as&nbsp;the&nbsp;features&nbsp;inside&nbsp;the&nbsp;TrackOverlay&nbsp;is&nbsp;already&nbsp;projected&nbsp;(if&nbsp;the&nbsp;map&nbsp;is&nbsp;using&nbsp;a&nbsp;projection).&nbsp;Here&nbsp;is&nbsp;a&nbsp;demo&nbsp;shows&nbsp;how&nbsp;to&nbsp;implement&nbsp;it&nbsp;in&nbsp;another&nbsp;way,&nbsp;please&nbsp;have&nbsp;a&nbsp;look.  
&nbsp;  
Thanks!  
&nbsp;  
Ben  
  
[721-Post5808.zip](https://community.thinkgeo.com/uploads/default/original/2X/f/f26acd4e42cbdbb040afb68c360c8457832da795.zip) (11.5 KB)

---

<div class="post-metadata">

**Author:** ![David\_Edwardson](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/d/c6cbf5/32.png) [@David\_Edwardson](https://community.thinkgeo.com/u/David_Edwardson)\
**Post date:** [June 2, 2009, 9:50am UTC](https://community.thinkgeo.com/t/rotationprojection-on-editoverlay-trackoverlay/449/3 "2009-06-02T09:50:57Z")

</div>

Thanks.&nbsp;&nbsp;Didn't&nbsp;seem&nbsp;to&nbsp;work&nbsp;for&nbsp;me&nbsp;right&nbsp;away&nbsp;but&nbsp;I&nbsp;was&nbsp;able&nbsp;to&nbsp;tweak&nbsp;it&nbsp;a&nbsp;bit&nbsp;and&nbsp;I'm&nbsp;good&nbsp;to&nbsp;go...

&nbsp;

&nbsp;

`      /// <summary>      /// User changed North location from UI      /// </summary>      /// <param name="sender">Ignored</param>      /// <param name="e">Ignored</param>      void m_panButton_AngleChanged( object sender, EventArgs e )      {         foreach ( Overlay overlay in m_map.Overlays )         {            overlay.Lock.EnterWriteLock();         }         try         {            double saveAngle = m_projection.Angle;            //            //Update the TrackOverlay.            //            m_map.TrackOverlay.Lock.EnterWriteLock();            try            {               Collection<Feature> projectedTrackFeatures = new Collection<Feature>();               foreach ( Feature feature in m_map.TrackOverlay.TrackShapeLayer.InternalFeatures )               {                  Feature projectedFeature =  m_projection.ConvertToInternalProjection(feature);                  projectedTrackFeatures.Add(projectedFeature);               }               m_projection.Angle = m_panButton.RotationAngle;               m_map.TrackOverlay.TrackShapeLayer.InternalFeatures.Clear();               foreach ( Feature feature in projectedTrackFeatures )               {                  m_map.TrackOverlay.TrackShapeLayer.InternalFeatures.Add(m_projection.ConvertToExternalProjection(feature));               }            }            finally            {               m_map.TrackOverlay.Lock.ExitWriteLock();            }            //            //Update the EditOverlay.            //            m_map.EditOverlay.Lock.EnterWriteLock();            try            {               Collection<Feature> projectedEditFeatures = new Collection<Feature>();               m_projection.Angle = saveAngle;               foreach ( Feature feature in m_map.EditOverlay.EditShapesLayer.InternalFeatures )               {                  Feature projectedFeature = m_projection.ConvertToInternalProjection(feature);                  projectedEditFeatures.Add(projectedFeature);               }               m_projection.Angle = m_panButton.RotationAngle;               m_map.EditOverlay.EditShapesLayer.InternalFeatures.Clear();               foreach ( Feature feature in projectedEditFeatures )               {                  m_map.EditOverlay.EditShapesLayer.InternalFeatures.Add(m_projection.ConvertToExternalProjection(feature));               }               m_map.EditOverlay.CalculateAllControlPoints();            }            finally            {               m_map.EditOverlay.Lock.ExitWriteLock();            }            m_map.CurrentExtent = m_projection.GetUpdatedExtent(m_map.CurrentExtent);         }         catch ( Exception )         {         }         finally         {            foreach ( Overlay overlay in m_map.Overlays )            {               overlay.Lock.ExitWriteLock();            }         }         RefreshMap();      }`

---

<div class="post-metadata">

**Author:** ![ThinkGeo](https://community.thinkgeo.com/user_avatar/community.thinkgeo.com/thinkgeo/32/25029_2.png) [@ThinkGeo](https://community.thinkgeo.com/u/ThinkGeo)\
**Post date:** [June 2, 2009, 8:47pm UTC](https://community.thinkgeo.com/t/rotationprojection-on-editoverlay-trackoverlay/449/4 "2009-06-02T20:47:42Z")

</div>

David,&nbsp;  
&nbsp;&nbsp;  
&nbsp;Thanks&nbsp;for&nbsp;your&nbsp;sharing&nbsp;codes.&nbsp;Do&nbsp;not&nbsp;hesitate&nbsp;to&nbsp;let&nbsp;me&nbsp;know&nbsp;if&nbsp;any&nbsp;further&nbsp;questions.&nbsp;  
&nbsp;&nbsp;  
&nbsp;Yale.&nbsp;&nbsp;
