GMap - 无法检测到点击多边形

时间:2015-11-24 18:34:23

标签: c# winforms gmap.net

IsMouseOverMarker属性检测到点击标记很好,但在尝试使用IsMouseOverPolygon控件的GMap属性来检测用户是否点击了多边形线时 - 它似乎没有工作。

注意:PolygonEnabled控件的GMap属性设置为True。

OnPolygonClick事件甚至无法触发:

private void gMap_OnPolygonClick(GMapPolygon item, MouseEventArgs e) {
        double pLat = item.From.Value.Lat;
}

地图Click事件确实触发,但“IsMouseOverPolygon”永远不会获得True值:

private void gMap_Click(object sender, EventArgs e) {
   if (gMap.IsMouseOverMarker) {
       MessageBox.Show("Clicked on marker and it works!");
   }

   if (gMap.IsMouseOverPolygon) {
       MessageBox.Show("clicked on line - never works");
   } 
}

我想知道我添加多边形的方式是否有问题,或者是因为在我的情况下它只是一行:

GMapOverlay polyOverlay  = new GMapOverlay("polygons");
gMap.Overlays.Add(polyOverlay);
List<PointLatLng> points = new List<PointLatLng>();
points.Add(start);
points.Add(end);
polygon = new GMapPolygon(points, "mypolygon");
polygon.Stroke = new Pen(Color.Blue, 5);
polyOverlay.Polygons.Add(polygon);

所以,问题是:我应该如何检测那些线上的鼠标点击?

1 个答案:

答案 0 :(得分:4)

我可以在代码中看到两个问题。首先,您需要明确地将多边形定义为HitTestVisible

polygon.IsHitTestVisible = true;

其次,要设置多边形,请添加至少三个未对齐的点并实际生成一个区域。我发现点击只会在实际区域被注意到,理论上多边形可以由两个点组成。

根据上面的提示,gMap.IsMouseOverPolygon的检查应该返回true

相关问题