ThinkGeo.com    |     Blog    |     Wiki    |     Support

TrackLayer Shape removal question

Hi,


I'm playing around with the TrackMode types in the TrackOverlay and I run into a problem with shape removal.


If I switch from TrackMode.Polygon to TrackMode.None, and then eventually back to TrackMode.Polygon, I run into a problem where the original polygon is still visible.  This happens in the case that the user didn't double click in the map to complete the first Polygon.


I've tried doing TrackOverlay.TrackShapeLayer.InternalFeatures.Clear(), and that didn't seem to work.


How do I make the TrackOverlay start fresh when I switch back to Polygon from None? 


Also, is there an exposed function for what happens when the user double-clicks during polygon creation?  It would be nice if I could add a context menu option for ending the Polygon creation.


Thanks,


Greg



Hi Greg, I think I can help with this. I allow a user to start drawing a polygon, but if they want to cancel out in the middle without it being complete, I capture a keydown event on the map. If they hit escape, I have it clear all the features from the track layer and then I call 
  
 map.TrackOverlay.MouseDoubleClick(new InteractionArguments());  
  
 and then I refresh the map. In my code that handles the track0ended event, I have a check to make sure that there is actually a feature on the trackShapes layer. 
  
 Just to be complete, I also allow the user to hit the enter key instead of double clicking to finalize the tracking. In that case, I just have the line of code above.  
  
 Hope this helps. 
  
 Kimberly

Sorry, I didn't read the last bit of your message. There is an event that you can catch when the user double clicks:



map.TrackOverlay.TrackEnded +=


new EventHandler<TrackEndedTrackInteractiveOverlayEventArgs>(TrackOverlay_TrackEnded);


Does that help? In that event, you can get the tracked feature and then do call your form or context menu or whatever.


Kimberly



Greg, Thanks for your post and questions and many thanks for your sharing in this , Patrick, I appreciate it very much.


Also, we have a sample in our code community showing how to cancel the tracking by clicking the “Esc” key in keyboard:
code.thinkgeo.com/projects/show/cancelingtrack
 
If you have any more questions just feel free to let me know.
 
Thanks.
 
Yale

Thanks to everyone who replied!  I have what I need.



 I am glad we could help you on this. I just let you know in case you are interested, we have a new project in the Code Community also related to tracking polygons and rectangles, Editing Rectangles.


code.thinkgeo.com/projects/s...rectangles


 



I am having a similar problem as what's described in the OP. I have captured the Esc key and am able to clear the poly from screen, but when the user clicks the poly button in our toolbar again, the poly they were drawing shows up again. basically picking up from where they left off. 



Here is the code that I'm executing to accomplish behavior: 



map.TrackOverlay.TrackMode = TrackMode.None; 

map.TrackOverlay.MouseDoubleClick(new InteractionArguments()); 

map.TrackOverlay.Lock.EnterWriteLock(); 

map.TrackOverlay.TrackShapeLayer.InternalFeatures.Clear(); 

map.TrackOverlay.Lock.ExitWriteLock(); 



map.Refresh(); 



I did implement the code inside the example "Canceling TrackOverlay" and what that seemed to accomplish was ending the drawing, causing my OnTrackOverlayTrackEnded event to fire. Basically what i would expect to happen when pressing the enter key. 



So the question is, how can i ensure that when the user clicks the poly button in our toolbar, that a new poly is started?



Levi, 
  
 Sorry for my delay on answering your questions. 
  
 In you if you clear alll th features in the TrackOverlay and recaculate the control points for it. Then the opvious traking shape will go away.  
  
 If you still have problem, just let me know, I will try to make you a sample after I go back to work. 
  
 Thanks. 
  
 Yale