2017-03-17 75 views
0

我一直在使用GMAP.Net刚开始,我因而设置自定义标记:GMap.Net位置集中在一点不高于

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

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

但是,图像显示在中心位置并紧靠上述设置的点的上方。我想知道如何将它设置为在图像中心位置。

任何想法如何做到这一点?

这是一个winforms.net 4.0应用程序。

回答

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

希望它可以帮助别人!

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

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

+0

谢谢,我回来的时候我会在星期天给这个星期。谷歌是否与GMap.Net类似? – Adrian

+0

嗨,我已经试过这个,但我得到以下错误“不能隐式转换类型CustomImageMarker GMap.Net.WindowsForms.Markers.GMarkerGoogle” – Adrian

+0

你必须最初定义标记为customImageMarker,然后你可以将它添加到图层你通常会。无论如何,它看起来像你找到了一个更简单的方法! –