GMap.Net 标记上的位置集中在不高于该点的位置

GMap.Net location on marker centralizes over point not above

我刚刚开始使用 GMAP.Net,因此我正在设置自定义标记:

 marker = new GMarkerGoogle(new PointLatLng(Convert.ToDouble(latlon[0]), Convert.ToDouble(latlon[1])), new Bitmap(Iconpath));

其中 Iconpath 指向 PNG 类型的 42 * 38 像素图像。

然而,图像出现在上面设置的点的正上方。我想知道如何设置它,使图像的中心位于该位置上。

知道怎么做吗?

这是在 winforms .Net 4.0 应用程序中。

GoogleMarker class 似乎是为图钉外观的图像设计的,您可能希望图钉尖端直接位于兴趣点上方。最好的办法是继承标记 class 并制作您自己的 class,您可以在其中控制图像放置。像这样:

class customImageMarker: GMapMarker
{
    Bitmap Bitmap;

    public customImageMarker(PointLatLng p, Bitmap Bitmap)
     : base(p)
      {
         this.Bitmap = Bitmap;
         Size = new System.Drawing.Size(Bitmap.Width, Bitmap.Height);
         Offset = new Point(-Size.Width / 2, -Size.Height / 2);
      }

    public override void OnRender(Graphics g)
    {
        g.DrawImage(Bitmap, LocalPosition.X - Offset.X, LocalPosition.Y - Offset.Y, Size.Width, Size.Height); 
    }
}

现在打电话给你的 class:

marker = new customImageMarker(new PointLatLng(Convert.ToDouble(latlon[0]), Convert.ToDouble(latlon[0])), new Bitmap(Iconpath));

您可以通过调整 Offset 变量来控制图标的位置。

我发现有一个简单的方法可以做到这一点:

                    Bitmap imgMarker = new Bitmap(Iconpath);
                marker = new GMarkerGoogle(new PointLatLng(Convert.ToDouble(latlon[0]), Convert.ToDouble(latlon[1])), imgMarker);
                marker.Offset = new Point(imgMarker.Width/2,  imgMarker.Height / 2);

希望对其他人有所帮助!