我已经创建了一个使用点列表和绘制/填充多边形函数的自定义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();
{
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);
}
}
}
我通常实例化我的自定义“arrow”对象(尽管现在它是一个正方形)并将其添加到标记覆盖上的标记列表中:
Demo.WindowsForms.CustomMarkers.GMarkerArrow marker = new Demo.WindowsForms.CustomMarkers.GMarkerArrow(new GMap.NET.PointLatLng(lat, longitude));
markersOverlay.Markers.Add(marker);