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);
希望对其他人有所帮助!
我刚刚开始使用 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);
希望对其他人有所帮助!