GMap多色线路线
GMap multicolor line route
如何在 GMap WPF(或 WPF 应用程序的 WinForms 端口)中创建多色线路由?
它应该通过路线显示一些参数值的颜色代码(例如速度颜色代码:红色代表低速,绿色代表高速,"heatmap scale color" 代表所有在低和高之间)。
我尝试通过为每个点添加一个不同颜色的标记来做到这一点,但是当有很多点时,这个解决方案似乎不够有效。而且两个markers/points.
之间也没有线路连接
也许有一种方法可以覆盖渲染函数或其他方法?
你有什么建议?
目前,路线渲染方法使用相同的笔划绘制所有内容。你需要继承路由 class 并制作自己的绘图方法,例如:
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 具有更多的叠加功能,可能更适合您的应用程序。
如何在 GMap WPF(或 WPF 应用程序的 WinForms 端口)中创建多色线路由?
它应该通过路线显示一些参数值的颜色代码(例如速度颜色代码:红色代表低速,绿色代表高速,"heatmap scale color" 代表所有在低和高之间)。
我尝试通过为每个点添加一个不同颜色的标记来做到这一点,但是当有很多点时,这个解决方案似乎不够有效。而且两个markers/points.
之间也没有线路连接也许有一种方法可以覆盖渲染函数或其他方法?
你有什么建议?
目前,路线渲染方法使用相同的笔划绘制所有内容。你需要继承路由 class 并制作自己的绘图方法,例如:
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 具有更多的叠加功能,可能更适合您的应用程序。