2016-06-20 1 views
1

Oui, je ne suis pas le premier qui demande, mais je n'ai pas trouvé de réponse (peut-être parce que mon anglais est mauvais). Comment dessiner une polyligne sur une carte? Pas un itinéraire, mais juste une polyligne, comme dans l'API JS Google Maps avec la fonction Polyline. Je ne peux pas comprendre.Dessine une polyligne sur la carte en utilisant GMap.net

Merci quand même.

Répondre

1

Bonne lecture de ce tutoriel:

http://www.independent-software.com/gmap-net-tutorial-maps-markers-and-polygons/

Cela devrait vous aider à démarrer:

GMapOverlay polyOverlay = new GMapOverlay("polygons"); 
IList<PointLatLng> points = new List<PointLatLng>(); 
points.Add(new PointLatLng(-25.969562,32.585789)); 
points.Add(new PointLatLng(-25.966205,32.588171)); 
GMapPolygon polygon = new GMapPolygon(points, "mypolygon"); 
polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red)); 
polygon.Stroke = new Pen(Color.Red, 1); 
polyOverlay.Polygons.Add(polygon); 
gmap.Overlays.Add(polyOverlay); 
+0

je besoin d'un polyligne, ni marqueur, ni polygone –

+0

@ValerikPunk il suffit de modifier les points à inclure deux au lieu de quatre? – fuzz

+0

Hm, mais existe-t-il une fonction spéciale pour la polyligne elle-même, ou pas? –

1

Bien que légèrement surpuissant, vous pouvez utiliser la capacité des routes GMap pour tracer des lignes simples. Cela a aussi un avantage majeur qui vous permet de déterminer la longueur de cette ligne (en km) si nécessaire. Voici comment vous dessiner une seule ligne:

GMapRoute line_layer; 
GMapOverlay line_overlay 

line_layer = new GMapRoute("single_line"); 
line_layer.Stroke = new Pen(Brushes.Black, 2); //width and color of line 

line_overlay.Routes.Add(line_layer); 
gMapControl1.Overlays.Add(line_overlay) 

//Once the layer is created, simply add the two points you want 

line_layer.Points.Add(new PointLatLng(lat, lon)); 
line_layer.Points.Add(new PointLatLng(lat2, lon2)); 

//Note that if you are using the MouseEventArgs you need to use local coordinates and convert them: 
line_layer.Points.Add(gMapControl1.FromLocalToLatLng(e.X, e.Y)); 

//To force the draw, you need to update the route 
gMapControl1.UpdateRouteLocalPosition(line_layer); 

//you can even add markers at the end of the lines by adding markers to the same layer: 

GMapMarker marker_ = new GMarkerCross(p); 
line_overlay.Markers.Add(marker_);