IsMouseOverMarker
属性可以很好地检测到单击标记,但是在尝试使用控件的IsMouseOverPolygon
属性GMap
来检测用户是否单击了多边形线时,它似乎无法正常工作。
注意:控件的PolygonEnabled
属性GMap
设置为True。
该OnPolygonClick
事件甚至不会触发:
private void gMap_OnPolygonClick(GMapPolygon item, MouseEventArgs e) {
double pLat = item.From.Value.Lat;
}
MapClick
事件确实触发,但是'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);
因此,问题是:如何检测这些行上的鼠标单击?
我可以在代码中看到两个问题。首先,您需要将多边形明确定义为HitTestVisible
:
polygon.IsHitTestVisible = true;
其次,要设置多边形,请至少添加三个未对齐的点,并实际生成一个区域。我发现点击只会在实际区域中引起注意,理论上该区域可以由两个点组成。
随着上面的提示检查gMap.IsMouseOverPolygon
应返回true
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句