ThinkGeo.com    |     Documentation    |     Premium Support

Mouse Coordinates vs Long/Lat

Hi,


I am using web edition v3.0 and Vb.net. My map source is google maps.


I am trying to plot a marker on the map. Funnily enough if I insert a longitude and latitude this does not work and my point appears just off Nigeria at 00.000, 00.000


However if I insert the mouse co-ordinates into my code all works fine and the marker is plotted correctly.


I am a little baffled about this.


Also is there a way to display real long and lats on the map rather than mouse cordinates?


 


rgs


Brian


 



Hi Brian,


I want to know if you are trying to plot a marker on the map in client side or server side. The Google map coordinate is projected and its map unit is meter. So you can not insert a coordinate in decimal degree as a marker to the map. I used the click event of the map control to insert marker in the server side and it works fine, the code could be like this:


protected void Map1_Click(object sender, MapClickedEventArgs e)
{
    SimpleMarkerOverlay markerOverlay = (SimpleMarkerOverlay)Map1.CustomOverlays[1];
    markerOverlay.Markers.Add(new Marker(e.Position));
}


 
Maybe there is some misunderstanding about your requirement, so could you please give us some code to demonstrate about what you want to do?
Any more information please let me know.
Thanks,
Sun

Hi,


thanks for the reply. I am trying to plot the marker on the client side. As I am using a customoverlay to display google maps can I mix overlays as you mentioned?


Also would you please provide an example of how this can be achieved using vb?


 


rgs


Brian



I am trying to use the following code to plot a marker on a google map customoverlay


 



 



Dim markerOverlay = DirectCast(Map1.CustomOverlays(1), InMemoryMarkerOverlay)If Not markerOverlay.Features.Contains("Kansas") Then

markerOverlay.Features.Add(


 


"Kansas", New Feature(-94.558, 39.078))End If

the issue is that you get a marker plotted at 0.000, 0.000


If you change the long / lat to mouse coordinates then all works fine


Any ideas please?


 


rgs


Brian



 



Yes, the SimpleMarkerOverlay can be added the CustomOverlays collection with Google overlay. The Google map coordinate is projected, but your code is adding a coordinate which is in Decimal Degree to the marker overlay. So you should project the coordinate to Google projection coordinate, and then add it the marker overlay. The code could be like this:



 


'Convert DecimalDegree LatLon to projected Google Map LatLon
Dim proj4Projection As New Proj4Projection()
proj4Projection.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326)
proj4Projection.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString()
 
proj4Projection.Open()
Dim projectedVertex As Vertex = proj4Projection.ConvertToExternalProjection(-94.558, 39.078)
markerOverlay.Features.Add("Kansas", New Feature(projectedVertex))


And to add marker in the client side, you should use a call back to project the point which is in Decimal Degree, return the projected point to the client side and add it the marker overlay.



Any more questions please let me know.
Thanks,
Sun

thank you Sun,


 


this worked like a dream!


 


One last question on the topic. Is there a way for the googleoverlay to display Decimal Degree in order to have a standard format?


 


rgs


Brian



Actually we tried to display Decimal Degree on Google map, but there is a precision issue on this. And the reason is that Google overlay just fetches tiles from Google Map Service and these tiles are projected in another coordinate system, then the Decimal Degree coordinate doesn’t match it very much. 
  
 Any more questions please let me know. 
  
 Thanks, 
  
 Sun