ThinkGeo.com    |     Documentation    |     Premium Support

Add marker or polygon on click

I need to enable users to add a marker or polygon by clicking on the map with Google overlay.


After click I need to collect the location info (Lat/Lon for marker and WKT or WKB for polygon) , user adds label and then saves into database.


I looked at your samples but did not see how to collect the location info after feature is added to the map.


Can you provide a little piece of code to show me how to accomplish that? VB preffered.


 


thanks,


jakub


 



Hi Jakub,


For adding markers, you could implement this functionality by the click event of the map control, and the position information has been contained in MapClickedEventArgs. 
 
For adding polygons, we are not sure how you add features by clicking the map. Do you mean using the EditOverlay to add the features? If so, you can use the TrackShapeFinished event of the map control, when this event fires, you can get the feature you added in the EditOverlay;
 
We have some how do I samples about both of these two requirements, so I suggest you to install our HowDoISamples which you can download from Our Website. The sample for adding markers is in “GettingStarted/AddAClickEvent.aspx”, and the sample for TrackShapeFinished is in “MapSahpes/TrackShapeFinishedEvent.aspx”.
 
Please let us know if we have any misunderstandings about your requirement.
 
Thanks,
 
Sun

Perfect. i all works great. The only problem I have I am unable to convert the screen coordinates of markers to Latitude and Longitude. 
 I am using Google Overlay as a reference. 
 This function give biogus numbers? Am I using a wrong conversion (east Florida)? 
  
     ’    Dim proj4Projection As New Proj4Projection() 
     ’    proj4Projection.InternalProjectionParametersString = proj4Projection.GetEpsgParametersString(2777) 
     ’    proj4Projection.ExternalProjectionParametersString = proj4Projection.GetGoogleMapParametersString() 
  
     ’    proj4Projection.Open() 
     ’    Map1.MarkerOverlay.Features.Clear() 
     ’    Dim projectedVertex As Vertex = proj4Projection.ConvertToExternalProjection(Xcoord, Ycoord) 
  
     ’    'Map1.MarkerOverlay.Features.Add(“New Point”, New Feature(Xcoord, Ycoord)) 
     ’    txtLat.Text = projectedVertex.X 
     ’    txtLon.Text = projectedVertex.Y

Jakub, 
  
 We think the new feature which is added into the marker overlay should be the projected vertex. For example, the code should be: 
 Map1.MarkerOverlay.Features.Add("New Point", New Feature(Vertex.X, Vertex.Y)) 
  
 Please have a try and let me know how it works. 
  
 Thanks, 
 Howard

Is that going to me give lat and long or do I still have to convert? 


Jakub, 
  
 The vertex is already converted to Google’s projection by the following code in your last reply. 
 Dim projectedVertex As Vertex = proj4Projection.ConvertToExternalProjection(Xcoord, Ycoord)  
  
 So it gives you the lat&lon without anymore conversion. 
  
 Anymore questions, please let me know. 
  
 Thanks, 
 Howard

It does not.  
 for  
 x = projectedVertex.X  
 y = projectedVertex.Y 
 It gives me the following numbers x=-2.86181278692044 and y=11.3458798163498 
 It should give me Lat: 26.5958952526538 Lng: -80.7124328613281 


Jakub,



Maybe there is some misunderstanding between our communication. Could you tell us what coordinate are your XCoord and Ycoord? Are they screen coordinate or world coordinate in decimal degree or world coordinate in meter. If it's screen coordinate, please convert to the external projection after converting the screen coordinate to world coordinate as the following code.

PointShape point = Map1.ToWorldCoordinate(XCoord, YCorrd);



Thanks,

Howard



 Hi Jakub,





i need help in draw polygon and get (log\lat with wkt or wkb ) 
its like your problem so if you dont mind and you solve these problem please send to me your code. 
 
thanks 
beast regards ehab sabra 
 

Hi, ehab 
  
 Welcome to ThinkGeo Map Suite Discussion Forums. 
  
 For this post, it’s been a long time coming, so I guess Jakub can’t see this post right now. 
 Would mind describing your requirement to us and so that we could provide the best suggestions for you? 
  
 Thanks, 
  
 Khalil