代码之家  ›  专栏  ›  技术社区  ›  user2913869

gmap net markerclick上的自定义标记不准确

  •  0
  • user2913869  · 技术社区  · 6 年前

    我已经创建了一个使用点列表和绘制/填充多边形函数的自定义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);
                }
            }
        }
    

    我通常实例化我的自定义“arrow”对象(尽管现在它是一个正方形)并将其添加到标记覆盖上的标记列表中:

            Demo.WindowsForms.CustomMarkers.GMarkerArrow marker = new Demo.WindowsForms.CustomMarkers.GMarkerArrow(new GMap.NET.PointLatLng(lat, longitude));
            markersOverlay.Markers.Add(marker);
    
    0 回复  |  直到 6 年前
    推荐文章