ThinkGeo.com    |     Documentation    |     Premium Support

Intercepting TrackOverlay VertexAdding Vertex

I created a new class that inherits from TrackInteractiveOverlay.  I am using this class to implement snapping already, but I am looking to expand it to enforce some rules for the feature shape.  Basically, as the feature draws, I am running the vertices through a function that will check to see if the line or polygon will self-intersect.  



My goal is to handle the VertexAdding event of the overlay so that I can reject new vertices that will create a bad feature.  The VertexAddingTrackInteractiveOverlayEventArgs contains a .Cancel boolean.  Your documentation isn’t really clear if this operates as a ‘cancel adding’ operation.  I tried using it like…




If CheckForBadGeometry() Then
e.Cancel = True
End If

Thinking that it would cancel the vertex adding.  However, it saves the one vertex I add, and then on the 2nd time it is triggered, it stops drawing completely.  The map click handler still directs to adding a new vertex, but the track shape is gone.



So, my main question is if this is a bug, or is there a better way to stop a vertex from being added.  I don’t want to do it after the fact with the created shape.  I would much rather stop the vertex being added than try to correct something down the line.



Thanks for any info.

Hi Brandon,


I can’t reproduce your issue, so I recreate a project for
your issue as the attachment. I think it may be caused by setting TrackMode,
“TrackOverlay.TrackMode = TrackMode.Point” should be set.



Thanks,



post12496.zip (9.08 KB)

Hi Brandon,



Thanks a lot. It proved that there is a bug. We’ve fixed it in the latest build. Would you please get todays package (8.0.0.266 or 8.0.266.0) or higher version and have a try?



Hope this is helpful and if the issue still persist, please feel free to let us know.



Regards and thanks,

Troy

The new build solved the problem. - I have just had the same problem. Thanks for quick bug fixing.



My goal is to handle the VertexAdding event of the overlay so that I can reject new vertices that will create a bad feature. It works nicely. BUT it does not handle the closing vertex (when I doubleclick). That is VertexAdding is not fired for the closing vertex. - Is that a bug? And if not, how do I reject the closing vertex?



Best regards

Lars

Hi Lars,



We looked into it and found the double click will go into another branch and won’t fire the VertexAdding event. Currently, I think it is hard to find a way to cancel the last vertex and we will keep looking on it to see if any approaches.  For now,I guess a workaround is we cancel the whole feature by using TrackingEnding event or we can register the MouseMoved event to check every vertex and if the vertex is beyond, then give it an alert. 



Anyway, we will keep looking for an approach.

Thanks,

Troy

Hi Troy 
  
 Thanks for your quick reply. I think I will go with your advice and use the TrackEnding event, and cancel the hole tracked feature. 
  
 Regards 
 Lars

Lars, 
  
 You’re welcome. Please feel free to let us know if any other questions. 
  
 Thanks, 
  
 Troy