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

时间:2017-03-17 20:31:43

标签: 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像素图像。

然而,图像显示在中央并且紧接在由上面设定的点之上。我想知道的是如何设置它以使图像的中心位于该位置上。

知道怎么做吗?

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

2 个答案:

答案 0 :(得分:0)

GoogleMarker类似乎是专为推针图像而设计的,您可能希望针尖直接位于感兴趣点之上。您最好的选择是继承标记类并创建自己的类,您可以在其中控制图像放置。像这样:

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

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

答案 1 :(得分:0)

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

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

希望它可以帮助别人!