2015-08-17 2 views
1

Я только что начал использовать gmap.net, и я искал функциональность добавления меток под маркерами. Я вижу, что есть подсказки, но я хотел бы иметь постоянную метку под моим маркером с описанием одного слова.GMAP.NET добавляет метки под маркерами

Я искал документы или другие ответы, но я не могу найти ничего, что заставило бы меня поверить, что оно не реализовано. Если кто-то сможет проверить это, я был бы признателен.

enter image description here

+0

Является ли это WPF или WinForms ? – rdoubleui

+0

@rdoubleui Windows Forms –

ответ

1

Вам нужно создать свой собственный пользовательский маркер.

на основе источника GMapMarker и производного GMarkerGoogle я придумал этот упрощенный пример:

public class GmapMarkerWithLabel : GMapMarker, ISerializable 
{ 
    private Font font; 
    private GMarkerGoogle innerMarker; 

    public string Caption; 

    public GmapMarkerWithLabel(PointLatLng p, string caption, GMarkerGoogleType type) 
     : base(p) 
    { 
     font = new Font("Arial", 14); 
     innerMarker = new GMarkerGoogle(p, type); 

     Caption = caption; 
    } 

    public override void OnRender(Graphics g) 
    { 
     if (innerMarker != null) 
     { 
      innerMarker.OnRender(g);  
     } 

     g.DrawString(Caption, font, Brushes.Black, new PointF(0.0f, innerMarker.Size.Height)); 
    } 

    public override void Dispose() 
    { 
     if(innerMarker != null) 
     { 
      innerMarker.Dispose(); 
      innerMarker = null; 
     } 

     base.Dispose(); 
    } 

    #region ISerializable Members 

    void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) 
    { 
     base.GetObjectData(info, context); 
    } 

    protected GmapMarkerWithLabel(SerializationInfo info, StreamingContext context) 
     : base(info, context) 
    { 
    } 

    #endregion 
} 

Использование (предполагается, что в GMap экземпляр с именем gm):

GMapOverlay markerOverlay = new GMapOverlay("markers"); 
gm.Overlays.Add(markerOverlay); 

var labelMarker = new GmapMarkerWithLabel(new PointLatLng(53.3, 9), "caption text", GMarkerGoogleType.blue); 
markerOverlay.Markers.Add(labelMarker) 
+0

Будет ли это также работать для WPF? –

+0

Довольно уверен, что это аналогичный подход, можно добавить образец позже, если хотите. – rdoubleui

Смежные вопросы