2017-02-28 109 views
1

如何在GMap WPF(或WinForms端口到WPF应用程序)中制作多色线路?GMap多色线路线

它应该通过路径显示一些参数值的颜色代码(例如速度的颜色代码:低速时为红色,高速时为绿色,所有高低速时为“热图缩放颜色”)。

我试图通过每个点添加一个具有不同颜色的标记来做到这点,但是这个解决方案似乎效率不够高,当有很多点时。两个标记/点之间也没有线连接。

也许有一种方法来重写渲染功能或别的东西?

您有什么建议?

回答

0

当前,路由呈现方法使用相同笔画绘制所有内容。您将需要继承Route类,使自己的画法,是这样的:

public class GMapRouteColored : GMap.NET.WindowsForms.GMapRoute 
{ 
    public GMapRouteColored(IEnumerable<PointLatLng> points, string name) 
     : base(points, name) 
    { 

    } 

    public override void OnRender(Graphics g) 
    { 
     for(int i = 0; i < LocalPoints.Count - 1; i++) 
     { 
      g.DrawLine(yourPenForThisLine, LocalPoints[i].X, LocalPoints[i].Y, LocalPoints[i+1].X, LocalPoints[i+1].Y); 
     } 

    } 
} 

当然你可能还需要一种方法来确定取决于点的一些值要使用的笔。我能处理这个问题的唯一简单方法是添加一个与您拥有的点数相等的整数列表,并使用此列表确定每个局部点索引使用哪支笔。我希望这有帮助。

编辑:我注意到你正在寻找一个WPF的解决方案。我发布的解决方案仅适用于WinForms,但基于我使用控件的经验,WinForms具有覆盖层功能更多,可能更适合您的应用程序。

+0

谢谢:)我做了简单的测试,它是非常好的解决方案。尽管我必须在代码中对WindowsFormsHost中的GMap的WinForms版本进行许多更改,但它似乎是我能做的最好的选择。 – hooboe

+0

不客气。您是否发现使用WPF或WinForms之间的主要性能差异?我还没有机会研究这个。 –

+0

我试图找到文件,但我还没有找到任何比较。 – hooboe