gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:21:25 29 4
gpt4 key购买 nike

IsMouseOverMarker 属性检测点击标记就好了,但是当尝试使用 GMap 控件的 IsMouseOverPolygon 属性检测用户是否点击多边形时行 - 它似乎不起作用。

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

OnPolygonClick 事件甚至没有触发:

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

Map 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);

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

最佳答案

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

polygon.IsHitTestVisible = true;

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

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

关于c# - GMap - 无法检测到点击多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33901255/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com