我正在使用 gmap.net,我正在尝试删除地图上的多边形。当我执行 .Clear() 时,它们会被删除,但是当我再次单击地图时,我刚刚清除的旧多边形会再次出现在地图上。此外,当我单击添加第三个标记时,第一个标记以某种方式连接到第三个标记。有没有办法使第一个标记不连接到多边形中除第二个标记外的任何其他标记?
第一个总是连接到其余的标记
我必须再次启动我的程序,这样它才能完全删除多边形
我的代码
private void gMapControl1_Load(object sender, EventArgs e) //map load
{
map.MapProvider = GoogleSatelliteMapProvider.Instance;
GMaps.Instance.Mode = AccessMode.ServerOnly;
map.Position = new GMap.NET.PointLatLng(my home coords inserted here);
map.DragButton = MouseButtons.Left;
map.MinZoom = 5;
map.MaxZoom = 100;
map.Zoom = 20;
}
private void deletea_Click(object sender, EventArgs e) //Delete all button
{
map.Overlays.Clear();
map.Refresh();
map.Update();
}
GMapOverlay polygons = new GMapOverlay("polygons");
List<PointLatLng> points = new List<PointLatLng>();
GMapPolygon polygon;
public void map_MouseClick(object sender, MouseEventArgs e) //add marker and polygon by click
{
if (e.Button == MouseButtons.Left)
{
GMapOverlay o = new GMapOverlay("o");
double lat1, lon1;
lat1 = map.FromLocalToLatLng(e.X, e.Y).Lat;
lon1 = map.FromLocalToLatLng(e.X, e.Y).Lng;
var m = new GMarkerGoogle(new PointLatLng(lat1, lon1), GMarkerGoogleType.red);
map.Overlays.Add(o);
o.Markers.Add(m);
points.Add(new PointLatLng(map.FromLocalToLatLng(e.X, e.Y).Lat, map.FromLocalToLatLng(e.X, e.Y).Lng));
if (points.Count > 0)
{
polygon = new GMapPolygon(points, "Poly");
polygon.Fill = new SolidBrush(Color.FromArgb(0, Color.Red));
polygon.Stroke = new Pen(Color.Red, 1);
polygons.Polygons.Add(polygon);
}
map.Overlays.Add(polygons);
map.Invalidate();
map.Update();
}