[發明專利]一種基于WPF和GDI+分層繪制地圖的方法有效
| 申請號: | 201410423803.8 | 申請日: | 2014-08-26 |
| 公開(公告)號: | CN104156480B | 公開(公告)日: | 2017-10-13 |
| 發明(設計)人: | 胡曉楠;李欣榮;李寬榮;高勇 | 申請(專利權)人: | 天津市普迅電力信息技術有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 天津盛理知識產權代理有限公司12209 | 代理人: | 韓奎勇 |
| 地址: | 300384 天津市西*** | 國省代碼: | 天津;12 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 wpf gdi 分層 繪制 地圖 方法 | ||
1.一種基于WPF和GDI+分層繪制地圖的方法,其特征在于包括步驟如下:
(1)當地圖啟動刷新的時候,首先組件加鎖,提醒調用組件不可用,添加MapLocked的屬性,開始刷新的時候設置MapLoaded為True;
(2)將繪制地圖分為最上面的WPF繪制層、第二層的GDI+矢量圖層繪制層、第三層的實時柵格服務層及最下面的瓦片地理背景服務層,分別繪制;
①最上面WPF繪制層的繪制,通過主線程繪制WPF繪制層上面的二維矢量圖形,使用WPF自帶的System.Windows.Shapes.Path對象對繪制痕跡反饋和地圖元素進行繪制,其具體操作過程為:將地圖中的繪制痕跡對象集合和地圖中地圖元素對象集合進行地理坐標到屏幕坐標的轉換,再根據已經坐標轉換后的對象集合生成實體的System.Windows.Shapes.Path對象集合放到圖層Canvas容器中,最終完成該次繪制操作;
②第二層GDI+矢量圖層的繪制,該圖層的繪制采用多線程,及GDI+繪制圖片加載到該層中的方式,繪制過程分成兩個步驟進行,第一步是對矢量數據的形狀進行繪制,第二步是對于標注的繪制,最終繪制在一個圖片上,放到Canvas圖層上;
③第三層實時柵格服務層的繪制,該圖層的繪制采用多線程,及異步獲取,且能支持多個柵格地圖服務的方式,當地圖完成視野變化的時候,異步從網絡下載屬于該視野的矢量柵格圖片,放到Canvas圖層上;
④最下面瓦片地理背景服務層的繪制,該層在從網絡獲取地圖的時候,采用線程池異步下載獲取當前可見范圍內所需的瓦片圖片,在地圖可見范圍變化時,利用WPF幀動畫實時異步刷新該圖層獲取瓦片,同時緩存下載獲取的瓦片圖片;
(3)在第二層GDI+矢量圖層的繪制及第三層實時柵格服務層的繪制刷新完畢之后解鎖,即將地圖MapLocked的屬性設置為False,分層繪制的地圖刷新完畢;
(4)獲得目標視圖范圍,以該范圍作為每個圖層的參數,各層在自己的線程中獨立渲染,互相不干擾,每個層渲染完畢,即時結束。
2.根據權利要求1所述的基于WPF和GDI+分層繪制地圖的方法,其特征在于:所述步驟(2)的②采用多線程繪制該圖層,也就是開啟子線程,具體的子線程是利用微軟多線程工具System.ComponentModel.BackgroundWorker,在其DoWork方法中添加矢量繪制的程序代碼,同時,在其RunWorkerCompleted事件下,將渲染后的矢量圖片放置到該圖層中,并且告訴組件該圖層繪制已經完畢。
3.根據權利要求1所述的基于WPF和GDI+分層繪制地圖的方法,其特征在于:所述步驟(2)的③步中采用多線程,及異步獲取,具體是采用微軟多線程工具System.ComponentModel.BackgroundWorker,在其DoWork方法中添加通過網絡獲取某服務柵格數據,同時,在其RunWorkerCompleted事件下將從網絡上獲得的矢量柵格圖片放置到該圖層中,并且告訴組件該圖層繪制已經完畢。
4.根據權利要求1所述的基于WPF和GDI+分層繪制地圖的方法,其特征在于:所述步驟(2)的④中線程池異步下載獲取當前可見范圍內所需的瓦片圖片,具體采用微軟提供的線程池類庫System.Threading.ThreadPool的方法。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于天津市普迅電力信息技術有限公司,未經天津市普迅電力信息技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410423803.8/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:網頁變化檢測方法及裝置
- 下一篇:一種網頁文本摘要生成方法和裝置





