2017-02-28 41 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