ThinkGeo.com    |     Documentation    |     Premium Support

EditOverlay: Index of added vertex

Hello ThinkGeo,


I use EditOverlay to add  new points to a lineshape. I want to get the index of a new vertex in the vertices collection of the lineshape. I tried onVertexAdded event but the vertex I get as event parameter and the added vertex in the lineshape do not have the same coordinates (see screenshot). Is this a bug? How can I get the index of the new vertex?


Thomas




Hi Thomas, 



The reason why you see the difference coordinates between the vertex label and its property x/y is the vertex label is from the return result of Vertex.ToString() method. And the vertex ToString method like below: 



public override string ToString() 



        return string.Format(CultureInfo.InvariantCulture, "X: {0:F4}; Y: {1:F4}", x, y); 





We can see the x/y label only kept 4 decimals. However, the X/Y property’s values are still the original without cut off. That’s the reason why they looked like difference. 



As for how to get the index of the new vertex, I guess there isn't any direct way to get it, I guess a good way you can try is to compare with all the vertexes x/y value one by one in this line shape. 



Hope it helps. 

Thanks 

Johnny



Johnny,


if you look at my screenshot you can see that the x/y coordinates of the new added vertex are not identical. If you compare the x/y coordiantes of new vertex in the vertices collection from Lineshape (marked with red line) against the coordiantes in the onVertexAdded event you can see that they are not the same. Also I compare the double values not the labels.


Thomas



Hi Thomas,  
  
 Thanks for your further information, and sorry for the mistake we made in previous post, we double checked and find out the reason is: 
  
 The added vertex is the position you click, but this vertex may not be exactly  on the line, so we will find the closest point on the line from the vertex, so the point will be slightly different from the vertex just like what you see.  
  
 Hope it helps, 
  
 Johnny