Winforms 标记上的GMap.Net位置集中在不在上面的点上

Winforms 标记上的GMap.Net位置集中在不在上面的点上,winforms,.net-4.0,gmap.net,Winforms,.net 4.0,Gmap.net,我刚刚开始使用GMAP.Net,我正在设置一个自定义标记: marker = new GMarkerGoogle(new PointLatLng(Convert.ToDouble(latlon[0]), Convert.ToDouble(latlon[1])), new Bitmap(Iconpath)); 其中Iconpath指向PNG类型的42*38像素图像 但是,图像显示在中心位置,并紧靠上面设置的点上方。我想知道如何设置它,使图像的中心位于位置上方 你知道怎么做吗 这是在winfor

我刚刚开始使用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类似乎是为图钉式图像设计的,在图钉式图像中,您希望图钉尖端直接位于感兴趣的点之上。最好的方法是继承marker类并创建自己的类,在其中可以控制图像的放置。像这样:

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); 
    }
}
现在只需给你的班级打电话:

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

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

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

                    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);

希望它能帮助别人

谢谢,我会在周日回来的时候试一试。google与GMap.Net类似吗?您好,我已经尝试过了,但出现了以下错误:无法将CustomImageMarker类型隐式转换为GMap.Net.WindowsForms.Markers.GMarkerGoogle您必须首先将标记定义为CustomImageMarker,然后才能像通常那样将其添加到图层中。不管怎样,看起来你找到了一个更简单的方法!我需要使偏移量中的x/y值为负值。但这对我来说是一种享受。