ThinkGeo.com    |     Documentation    |     Premium Support

Displaying a track using latlong points on googlemap

Hi,


I am new to this component. My requirement is to draw a track on google static map and the track is made of list of latitude, longitude points.


 


How to achieve this? Just now i installed the component and struggling to achieve the same.


 


more over when I run the demo of the desktop version, I get following error " remote name could not be resloved".



Srinivas,


Thanks for your post and question and Welcome you to ThinkGeo desktop discussion forum.
 
About the drawing a track on Google static map, I just want to make sure the latitude longitude points are known or must be tracked manually? If they are already known then what we need to do is just add those points into an InmemoryFeatureLayers and then attach it to the map control with a base of Google map overlay; if it has to be from the tracking shape, then we just need to set the TrackMode to TrackPolygon instead of None for the TrackInterativeOverlay for the map control.
 
About the error “remote name could not be resolved”, are you referring to the HowDoI samples, if it is, which HowDoI samples will cause this error? Any more information would be appreciated.
 
Any more questions please feel free to let me know.
 
Thanks.
 
Yale

 


 


 


Thanks for the reply. After some difficulties Now I am able to see the googl map from my sample application.


 


I did the following


 GoogleMapsOverlay test = new GoogleMapsOverlay();

test.WebProxy =


Now I am still facing problem with plotting a track on google map. I have list of Latitude, longitude points ( may be few thousand) and would like to draw a track.


COuld you please give a sampel code. I want to draw a track with line width of 4 and color of red.


WebProxy.GetDefaultProxy(); // assigned the default proxy to the googlemapsoverlay.



Dear Srinivas, 



You can try this code, I hope it can help: 


winformsMap1.MapUnit = GeographyUnit.DecimalDegree;

            GoogleMapsOverlay test = new GoogleMapsOverlay();
            winformsMap1.Overlays.Add(test);
            //begin the track
            winformsMap1.TrackOverlay.TrackMode = TrackMode.Line;
            // loop your list of points
            Collection<Vertex> vertexs = new Collection<Vertex>();
            vertexs.Add(new Vertex(-120, 70));
            vertexs.Add(new Vertex(-120, 60));
            vertexs.Add(new Vertex(-120, 50));
            vertexs.Add(new Vertex(-110, 50));
            vertexs.Add(new Vertex(-100, 50));
            vertexs.Add(new Vertex(-90, 50));
            vertexs.Add(new Vertex(-90, 40));
            vertexs.Add(new Vertex(-90, 30));
            vertexs.Add(new Vertex(-90, 20));
            //added the vertexs into layer
            winformsMap1.TrackOverlay.TrackShapeLayer.InternalFeatures.Add(new Feature(new LineShape(vertexs)));
            //set the color and width
            winformsMap1.TrackOverlay.TrackShapeLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = new LineStyle(new GeoPen(GeoColor.SimpleColors.Red, 4));
            winformsMap1.TrackOverlay.TrackShapeLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            //end the track
            winformsMap1.TrackOverlay.TrackMode = TrackMode.None;

            winformsMap1.CurrentExtent = new RectangleShape(-139.2, 92.4, 120.9, -93.2);
            winformsMap1.Refresh();



Thanks, 



Gary



Hi


Thanks for the hints. It works but not upto our requirement.


We need to show the track ( made by vertex ) on the google static map . I could see a line is drawn, but when I am zooming the track is shifting. Also I guess the track is not plotted on the google mapsoverlay. I should appear as if a route is shown in google map.


 


is this possible? Also is there any API to zoom the map to the proper level so that the track is properly fir to the display area.


 


We triew similar thing in GMAP.net which was open source.



Dear Srinivas, 



I'm sorry to say, it's not possible to add points to Google overlay, as you said, it's a static map. 

But, we have our TrackOverlay, it can work perfect with GoogleOverlay, just try this sample below: 




            winformsMap1.MapUnit = GeographyUnit.Meter;

            GoogleMapsOverlay test = new GoogleMapsOverlay();
            winformsMap1.Overlays.Add(test);
            //begin the track
            winformsMap1.TrackOverlay.TrackMode = TrackMode.Line;
            // loop your list of points
            Collection<Vertex> vertexs = new Collection<Vertex>();
            vertexs.Add(new Vertex(-120, 70));
            vertexs.Add(new Vertex(-120, 60));
            vertexs.Add(new Vertex(-120, 50));
            vertexs.Add(new Vertex(-110, 50));
            vertexs.Add(new Vertex(-100, 50));
            vertexs.Add(new Vertex(-90, 50));
            vertexs.Add(new Vertex(-90, 40));
            vertexs.Add(new Vertex(-90, 30));
            vertexs.Add(new Vertex(-90, 20));
            //make the track layer use the same projection with google map
            Proj4Projection proj = new Proj4Projection();
            proj.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326);
            proj.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString();
            //added the vertexs into layer
            winformsMap1.TrackOverlay.TrackShapeLayer.InternalFeatures.Add(new Feature(new LineShape(vertexs)));
            winformsMap1.TrackOverlay.TrackShapeLayer.FeatureSource.Projection = proj;
            //set the color and width
            winformsMap1.TrackOverlay.TrackShapeLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = new LineStyle(new GeoPen(GeoColor.SimpleColors.Red, 4));
            winformsMap1.TrackOverlay.TrackShapeLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            //end the track
            winformsMap1.TrackOverlay.TrackMode = TrackMode.None;
            winformsMap1.CurrentExtent = new LineShape(vertexs).GetBoundingBox();
            winformsMap1.CurrentExtent = new RectangleShape(-13939426.6371, 6701997.4056, -7812401.86, 2626987.386962);
            winformsMap1.Refresh();



Sorry for the first sample I just show a idea. In this sample you can see the track line move with the Google map by set the projection to them. If you can set your own track point in, that will looks much beautiful. 



There is a easy way to zoom the map to show your track line, you can use  

winformsMap1.CurrentExtent = new LineShape(vertexs).GetBoundingBox(); 



Any more questions please feel free to let me know. 



Thanks. 



Gary