2017-03-17 69 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,然後你可以將它添加到圖層你通常會。無論如何,它看起來像你找到了一個更簡單的方法! –