ThinkGeo.com    |     Documentation    |     Premium Support

Interrupting a track overlay draw

Good afternoon...


I'm trying to interrupt a track overlay draw midway through.  In our application the user, while drawing a shape (let's say a multisegmented line) via the track overlay, can click a "clear" button, and when that happens the shape being drawn is supposed to be discarded.  I set TrackMode to none and clear TrackShapeLayer.InternalFeatures, but when I click on the map again the partially-completed track shape is still there, as if these vertice are being buffered somewhere.  I can't see anything in the documentation that lets me get to them.  If I double click (again, let's say I'm doing a line draw)  even though I've previously turned TrackMode to none, the shape reappears.  It seems that only when the TrackEnded event fires does the shape stop drawing even if I turn TrackMode to none. 


Any thoughts?


Thanks,


Allen



Allen,


 From what I understood reading your request, I think that the Code Community sample code Canceling TrackOverlay wiki.thinkgeo.com/wiki/Map_Suite_De...ackOverlay is going to help you for your needs. If this is not exactely what you are looking for, please, do not hesitate to tell us so and we will work on a sample app based on your further explanation on the subject. Thank you for probing our control and helping us make it better.



Val, 
  
 Ah yes…as soon as I saw your comments a vague memory of seeing something on the site (not in the documentation) on this topic popped back in my mind.  I keep thinking "nobody else needs to do that" and never go and check those samples.   Let me see if that sample helps.  If not, this is one of the cases where a simple program WILL demonstrate my issue. 
  
 Thanks, 
 Allen

Val, 
  
 Looking at that example gave me an idea.  In our application, the shape drawn in the TrackOverlay is then moved to an InMemoryFeatureLayer.  So my solution explicitly calls TrackOverlay.MouseDoubleClick (like the example), which then causes TrackEnded to move the trackshape into the memory layer.  I just go back and delete the last shape in the memory layer.  There was a flicker that showed the trackshape in the memory layer briefly, so I just set the memorylayer IsVisible to false while this code was executing.   
  
         public void CancelMeasurement() 
         { 
             InMemoryFeatureLayer measureResult = (InMemoryFeatureLayer)winformsMap1.FindFeatureLayer("MEASURERESULT"); 
             measureResult.IsVisible = false; 
             winformsMap1.TrackOverlay.MouseDoubleClick(new InteractionArguments()); 
             int recCount = measureResult.InternalFeatures.Count; 
             measureResult.InternalFeatures.RemoveAt(recCount - 1); 
             measureResult.IsVisible = true; 
             RefreshOverlay("DYNAMICOVERLAY"); 
         } 
  
 Thanks for pointing me in the right direction.  Looks like another tracking system ticket I can close! 
 Allen

Allen, 
  
  You are welcome. Indeed, those Code Community sample are very usefull and many times a question in the Discussion Forum can be answered or directed to one of those samples to solve a problem.