ThinkGeo.com    |     Documentation    |     Premium Support

How to find latitude/longitude using MapUnit as Meter

Hello I have some problem and I need your help.


I am using Google Map with MapUnit as Meter. I want to get the latitude and longitude of the location with MouseMove event of the WinformsMap. I am able to retrieve world coordinate from screen coordinates but now want latitude and longitude.


Waiting for the help.


Thanks in advance.



There is a project GPS to Google Map (Desktop) in the Code Community, that does almost that. It shows how to plot on the Google Map a point in Longitude/Latitude. You can use the same projection parameters for getting Long/Lat at mouse mouve event.


code.thinkgeo.com/projects/show/gpstogoogledesktop


 



I want to pass the screen coordinate of a point and find latitude/longitude of the selected point in the Google Map. In the project GPS to Google Map (Desktop) in the Code Community the latitude and longitude values are passed and respective point is ploted in the map. 


Akku,


Thanks for your input and questions.
 
See following code snippet, hope it is what we are trying to get from ScreenPoint(e) to world coordinate(pointShape).

 

private void winformsMap1_MouseMove(object sender, MouseEventArgs e)
{
     //Displays the X and Y in screen coordinates.
     statusStrip1.Items["toolStripStatusLabelScreen"].Text = "X:" + e.X + " Y:" + e.Y;
 
     //Gets the PointShape in world coordinates from screen coordinates.
     PointShape pointShape = ExtentHelper.ToWorldCoordinate(winformsMap1.CurrentExtent, new ScreenPointF(e.X, e.Y), winformsMap1.Width, winformsMap1.Height);
 
     //Displays world coordinates.
     statusStrip1.Items["toolStripStatusLabelWorld"].Text = "(world) X:" + Math.Round(pointShape.X, 4) + " Y:" + Math.Round(pointShape.Y, 4);
}


Any more questions just feel free to let me know.
 
Thanks.
 
Yale

Yale, 



I am displaying Google Map with Map Unit as Meter and I am able to convert the screen coordinate to world coordinate by using 



Dim screenPoint As ScreenPointF = New ScreenPointF(e.X, e.Y) 

Dim value As PointShape= ExtentHelper.ToWorldCoordinate(winformsMap1.CurrentExtent, screenPoint, WinformsMap1.Width, WinformsMap1.Height ) 




I want to get latitude/longitude value. 

If I use the code given below then error is fired. 

'The input double value is out of range. Parameter name: decimalDegreeValue' 

Code used is 

Dim LongLat As String = DecimalDegreesHelper.GetDegreesMinutesSecondsStringFromDecimalDegreePoint(value) 


Please help to resolve the problem.



Thanks, 

Akku



Akku,


 
Sorry for my misunderstanding.
 
Try following code, hope it helps:

 

private void winformsMap1_MouseMove(object sender, MouseEventArgs e)
{
     //Displays the X and Y in screen coordinates.
     statusStrip1.Items["toolStripStatusLabelScreen"].Text = "X:" + e.X + " Y:" + e.Y;
 
     //Gets the PointShape in world coordinates from screen coordinates.
     PointShape pointShape = ExtentHelper.ToWorldCoordinate(winformsMap1.CurrentExtent, new ScreenPointF(e.X, e.Y), winformsMap1.Width, winformsMap1.Height);
 
     string googlePrjString = ManagedProj4Projection.GetGoogleMapParameters();
     string decmailString = ManagedProj4Projection.GetEpsgParameters(4326);
     ManagedProj4Projection projection = new ManagedProj4Projection(googlePrjString, decmailString);
     projection.Open();
     Vertex decimalDegreeValue = projection.ConvertToExternalProjection(pointShape.X, pointShape.Y);
     projection.Close();
 
     //Displays world coordinates.
     statusStrip1.Items["toolStripStatusLabelWorld"].Text = "(world) X:" + Math.Round(pointShape.X, 4) + " Y:" + Math.Round(pointShape.Y, 4);
 }


Any more questions just feel free to let me know.
 
Thanks.
 
Yale

Thanks for the help. Now my problem is solved. 
  
 Regards, 
 Akku

Akku, 
  
 Thanks for letting me know your status. 
  
 Any more questions just feel free to let me know. 
  
 Thanks. 
  
 Yale