Как организовать наложения GMapPolygon в gmap.net? - PullRequest
0 голосов
/ 30 марта 2019

Я не могу получить имя GMapPolygon обоих полигонов, когда они перекрываются. В данном коде создаются два прямоугольника (синий и красный) - красный больше и перекрывает синий. Нажав на каждое из них, я хочу получить имя, но доступно только название красного прямоугольника.

Что я делаю не так? ...

private void Form1_Load(object sender, EventArgs e)
        {
            gmap.MapProvider = GMap.NET.MapProviders.BingMapProvider.Instance;
            GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly;
            gmap.Position = new GMap.NET.PointLatLng(48.8589507, 2.2775175);
            gmap.Zoom = 15;

            GMapOverlay polygonsRed = new GMapOverlay("polygonsRed");
            List<PointLatLng> pointsRed = new List<PointLatLng>();
            pointsRed.Add(new PointLatLng(48.863851, 2.321593));
            pointsRed.Add(new PointLatLng(48.866237, 2.323466));
            pointsRed.Add(new PointLatLng(48.863746, 2.331748));
            pointsRed.Add(new PointLatLng(48.861180, 2.330081));
            GMapPolygon polygonRed = new GMapPolygon(pointsRed, "Red Polygon");

            polygonRed.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
            polygonRed.Stroke = new Pen(Color.Red, 1);
            polygonRed.IsHitTestVisible = true;

            polygonsRed.Polygons.Add(polygonRed);
            gmap.Overlays.Add(polygonsRed);


            GMapOverlay polygonsBlue = new GMapOverlay("polygonsBlue");
            List<PointLatLng> pointsBlue = new List<PointLatLng>();
            pointsBlue.Add(new PointLatLng(48.863851, 2.321593));
            pointsBlue.Add(new PointLatLng(48.866237, 2.323466));
            pointsBlue.Add(new PointLatLng(48.865172, 2.327143));
            pointsBlue.Add(new PointLatLng(48.862550, 2.325285));
            GMapPolygon polygonBlue = new GMapPolygon(pointsBlue, "Blue Polygon");

            polygonBlue.Fill = new SolidBrush(Color.FromArgb(50, Color.Blue));
            polygonBlue.Stroke = new Pen(Color.Blue, 1);
            polygonBlue.IsHitTestVisible = true;

            polygonsBlue.Polygons.Add(polygonBlue);
            gmap.Overlays.Add(polygonsBlue);
        }

        private void gmap_OnPolygonClick(GMapPolygon item, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                contextMenu.Show(MousePosition, ToolStripDropDownDirection.Right);
                polygonName.Text = item.Name;
            }
        }
...