Ini*_*itK 5 c# winforms gmap.net
IsMouseOverMarker属性检测单击标记就好了,但是当试图使用Control的IsMouseOverPolygon属性GMap来检测用户是否点击多边形线时 - 它似乎没有工作.
注意:控件的PolygonEnabled属性GMap设置为True.
该OnPolygonClick事件甚至不火:
private void gMap_OnPolygonClick(GMapPolygon item, MouseEventArgs e) {
double pLat = item.From.Value.Lat;
}
Run Code Online (Sandbox Code Playgroud)
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");
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道我添加多边形的方式是否有问题,或者是因为在我的情况下它只是线条:
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);
Run Code Online (Sandbox Code Playgroud)
所以,问题是:我应该如何检测那些线上的鼠标点击?
我可以在代码中看到两个问题.首先,您需要明确地将多边形定义为HitTestVisible:
polygon.IsHitTestVisible = true;
Run Code Online (Sandbox Code Playgroud)
其次,要设置多边形,请添加至少三个未对齐的点,并实际生成一个区域.我发现点击只会在实际区域被注意到,理论上多边形可以由两个点组成.
如果上面的提示gMap.IsMouseOverPolygon应该返回true.
| 归档时间: |
|
| 查看次数: |
1915 次 |
| 最近记录: |