在.Clear 和第一个标记连接问题上未完全删除多边形

问题描述 投票:0回答:0

我正在使用 gmap.net,我正在尝试删除地图上的多边形。当我执行 .Clear() 时,它们会被删除,但是当我再次单击地图时,我刚刚清除的旧多边形会再次出现在地图上。此外,当我单击添加第三个标记时,第一个标记以某种方式连接到第三个标记。有没有办法使第一个标记不连接到多边形中除第二个标记外的任何其他标记?

这是标记的样子: enter image description here

enter image description here

第一个总是连接到其余的标记

对于多边形: 这是它最初的样子 enter image description here

这就是清除叠加层然后再次单击以添加标记后发生的情况 enter image description here

我必须再次启动我的程序,这样它才能完全删除多边形

我的代码

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();
            }

c# google-maps-markers polygon gmap.net waypoint
© www.soinside.com 2019 - 2024. All rights reserved.