我使用点列表和绘制/填充多边形函数创建了一个自定义GMapMarker子类,但是我发现“ OnMarkerClick”检测无法准确检测到新的多边形形状。我的用户单击了整个标记,在某些地方,他们显然单击了正确的彩色位置,但是它仅在某些部分上注册。也可以单击关闭多边形的部分,以选择标记。我什至更改了标记的形状,使其成为非常简单的正方形,这也是有问题的。我会说只有25%的标记是可点击的。
是否需要在我的代码中添加一些额外内容,以使“ OnMarkerClick”行为具有预期的效果?
这是我要生成正方形的点的列表:
static readonly Point[] Arrow = new Point[] { new Point(-15, 0), new Point(15, 0), new Point(15, 15), new Point(-15, 15) };
以下是绘制形状的“ OnRender”部分:
public override void OnRender(Graphics g)
{
{
g.TranslateTransform(ToolTipPosition.X, ToolTipPosition.Y);
var c = g.BeginContainer();
{
//Testing without rotation
//g.RotateTransform(Bearing - Overlay.Control.Bearing);
g.ScaleTransform(Scale, Scale);
g.FillPolygon(Fill, Arrow);
g.DrawPolygon(pen, Arrow);
}
g.EndContainer(c);
g.TranslateTransform(-ToolTipPosition.X, -ToolTipPosition.Y);
if(caption != "")
{
var stringSize = g.MeasureString(caption, font);
var localPoint = new PointF(LocalPosition.X - stringSize.Width / 2, LocalPosition.Y + stringSize.Height + 10);
g.DrawString(caption, font, textFill, localPoint);
}
}
}
我通常实例化自定义的“箭头”对象(尽管现在是正方形),并将其添加到标记叠加层的标记列表中:
Demo.WindowsForms.CustomMarkers.GMarkerArrow marker = new Demo.WindowsForms.CustomMarkers.GMarkerArrow(new GMap.NET.PointLatLng(lat, longitude));
markersOverlay.Markers.Add(marker);