同じ問題が発生し、ちょうどbase.OnRender(g);
と呼んでも私のために修正されていませんでした。あなたが提供した答えで行われたように、GMapMarker
の代わりにGMarkerGoogle
から派生することです
また、テキストレンダリングでいくつかの調整が必要でした。
public class GmapMarkerWithLabel : GMarkerGoogle, ISerializable
{
private readonly Font _font;
private GMarkerGoogle _innerMarker;
private readonly string _caption;
public GmapMarkerWithLabel(PointLatLng p, string caption, GMarkerGoogleType type)
: base(p, type)
{
_font = new Font("Arial", 11);
_innerMarker = new GMarkerGoogle(p, type);
_caption = caption;
}
public override void OnRender(Graphics g)
{
base.OnRender(g);
var stringSize = g.MeasureString(_caption, _font);
var localPoint = new PointF(LocalPosition.X - stringSize.Width/2, LocalPosition.Y + stringSize.Height);
g.DrawString(_caption, _font, Brushes.Black, localPoint);
}
public override void Dispose()
{
if (_innerMarker != null)
{
_innerMarker.Dispose();
_innerMarker = null;
}
base.Dispose();
}
#region ISerializable Members
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
GetObjectData(info, context);
}
protected GmapMarkerWithLabel(SerializationInfo info, StreamingContext context)
: base(info, context)
{ }
#endregion
}
は、私の知る限り、私は、最新バージョン(1.7.1)を使用しています言うことができるように、数年前 – geocodezip
興味深い修正されたバグのような音:私は私のために正常に動作し、このソリューションを思い付きました。 base.OnRender(g)を呼び出して、マーカーの配置問題を修正することができました。 –