一種地圖覆蓋物區(qū)域渲染方法及相關(guān)設(shè)備的制作方法
【專利摘要】本發(fā)明提供了一種地圖覆蓋物區(qū)域渲染方法及相關(guān)設(shè)備。本發(fā)明采用覆蓋物動態(tài)加載渲染技術(shù),通過定義焦點視圖范圍,來管理覆蓋物的創(chuàng)建與銷毀,可以實現(xiàn)內(nèi)存與運算資源的合理分配利用。將瀏覽器視野范圍外的無用覆蓋物進行銷毀,實現(xiàn)有目的的部分銷毀,而不是統(tǒng)一全部銷毀,減少系統(tǒng)中內(nèi)存與CPU資源占用,同時也使系統(tǒng)的銷毀更靈活。及時加載用戶視野范圍內(nèi)未加載覆蓋物,在降低消耗的同時保證提供給用戶最真實的可視化信息。
【專利說明】-種地圖覆蓋物區(qū)域這染方法及相關(guān)設(shè)備
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及電子地圖領(lǐng)域,尤其設(shè)及一種地圖覆蓋物區(qū)域擅染方法及其系統(tǒng)內(nèi)對 象。
【背景技術(shù)】
[000引肥B-GIS (網(wǎng)絡(luò)地理信息系統(tǒng))指基于Internet平臺,客戶端應(yīng)用軟件采用網(wǎng)絡(luò)協(xié) 議,運用在Internet上的地理信息系統(tǒng)。一般由多主機,多數(shù)據(jù)庫和多個客戶端W分布式 形式連接在Internet上而組成。
[0003] 在Web-Gis應(yīng)用中,所有疊加或覆蓋到地圖的內(nèi)容,我們統(tǒng)稱為地圖覆蓋物。如標(biāo) 注、矢量圖形元素(包括:折線、多邊形和圓)、信息窗口等。覆蓋物擁有自己的地理坐標(biāo), 當(dāng)手動拖動或縮放地圖時,它們會根據(jù)在地圖上相應(yīng)的坐標(biāo)位置與地圖變動后像素轉(zhuǎn)換進 行二次擅染,此擅染是地圖自動記憶位置然后運用算法進行擅染。我們會在地圖中通過添 加各種不同的覆蓋物,來標(biāo)示出實際物體在地圖上的位置,使展現(xiàn)更貼近于現(xiàn)實。
[0004] 在現(xiàn)有技術(shù)方案中,當(dāng)?shù)貓D移動或縮放等事件觸發(fā)時,不會存在人工對地圖上的 覆蓋物進行管理,即使地圖發(fā)生了移動使覆蓋物不可見,覆蓋物也不會被銷毀,或者是地圖 變動后又有新的覆蓋物需在此視圖上顯示,地圖也不會自動去監(jiān)測并進行添加。地圖只會 將變動前添加到它上面的覆蓋物進行記憶保存,待地圖變動后運用相應(yīng)算法進行二次擅 染。因此,只有通過手動刷新頁面或清空操作才能銷毀所有覆蓋物,而此銷毀操作是極端的 操作,不能按照特定意愿去進行相應(yīng)銷毀操作。
[0005] 在現(xiàn)有技術(shù)方案中,隨著數(shù)據(jù)量的增大,添加到地圖上的覆蓋物越來越多,該些覆 蓋物占用了系統(tǒng)中大量的內(nèi)存與CPU資源,而用戶在多數(shù)情況并不需要同時看到所有的覆 蓋物,該時處于瀏覽器視野范圍外的覆蓋物的信息就會成為無用的數(shù)據(jù)。由于地圖上的覆 蓋物過多,用戶在使用該系統(tǒng)的過程中,內(nèi)存與CPU都處于高負荷狀態(tài)。當(dāng)覆蓋物數(shù)量達到 一定規(guī)模后,會占用用戶客戶端中更多的內(nèi)存空間與CPU資源,最終導(dǎo)致瀏覽器卡頓甚至 崩潰,使得用戶在使用該類系統(tǒng)時出現(xiàn)較差的用戶體驗。除此之外,當(dāng)用戶拖動地圖或縮放 地圖時,地圖發(fā)生相應(yīng)變動,而現(xiàn)有技術(shù)方案調(diào)用的是地圖自恢復(fù)方法,地圖每移動一次其 內(nèi)部就會又重新擅染一次之前記憶中的所有覆蓋物。而如果用戶操作頻繁,地圖就會一直 不停地工作,給地圖帶來的負載與工作量非常大,從而進一步增加了內(nèi)存空間與CPU資源 的占用,同時也進一步降低了用戶體驗。
[0006] 當(dāng)前,現(xiàn)有技術(shù)的缺點是,地圖負載較大,內(nèi)存與CPU資源的占用過高。本發(fā)明采 用一種地圖覆蓋物區(qū)域擅染算法,旨在使用擅染算法識別無用的覆蓋物數(shù)據(jù)并進行刪除, 添加當(dāng)前視圖內(nèi)需展示但未擅染資源,從而在展現(xiàn)最真實數(shù)據(jù)給用戶的同時減少系統(tǒng)占用 內(nèi)存與CPU資源。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明主要是為了解決上述技術(shù)問題,提供一種地圖覆蓋物區(qū)域擅染系統(tǒng),包括 地圖,其特征在于,還包括擅染器管理單元、擅染器、覆蓋物圖層實例管理單元;所述擅染器 分別與所述擅染器管理單元和所述覆蓋物圖層實例管理單元相連接,所述覆蓋物圖層實例 管理單元還與所述地圖相連接;
[000引所述擅染器管理單元用于對所述擅染器進行管理,負責(zé)各擅染器調(diào)配;
[0009] 所述擅染器用于對圖層和/或覆蓋物進行擅染;
[0010] 所述覆蓋物圖層實例管理單元用于向地圖上添加或刪除所述覆蓋物,更新覆蓋物 信息與位置,對覆蓋物進行本地存儲與管理。
[0011] 優(yōu)選的是,所述地圖覆蓋物區(qū)域擅染系統(tǒng)還包括通信模塊,當(dāng)擅染事件由定時位 置信息推送引發(fā)的涂層信息變更時,觸發(fā)所述通信模塊;所述通信模塊接收到后臺推送過 來的信息后,對其進行相應(yīng)的處理轉(zhuǎn)換,將信息保存到本地存儲中。
[0012] 在上述任一方案中優(yōu)選的是,所述覆蓋物是一種圖文信息,添加到地圖上表示現(xiàn) 實中某個實物,所述覆蓋物信息包括文字信息和圖像信息。
[0013] 在上述任一方案中優(yōu)選的是,所述覆蓋物是添加到地圖中內(nèi)容的統(tǒng)稱;包括矢量 圖形元素、文字標(biāo)注、圖片、信息窗口。
[0014] 本發(fā)明還提供一種擅染器管理單元,包括:查找模塊和切換模塊,
[0015] 所述查找模塊用于尋找合適的擅染器;
[0016] 所述切換模塊用于切換擅染器和圖層。
[0017] 優(yōu)選的是,所述查找模塊還包括;擅染器循環(huán)鏈表,所述擅染器循環(huán)鏈表中按一 定順序排列擅染器;在所述擅染器管理單元的所述查找模塊查找合適的擅染器時,按照所 述擅染器循環(huán)鏈表中的順序查找。
[001引在上述任一方案中優(yōu)選的是,所述擅染器循環(huán)鏈表最后一個為通用擅染器,所述 通用擅染器無條件擅染;當(dāng)其他每個擅染器都無法擅染時,調(diào)用通用擅染器進行擅染。
[0019] 本發(fā)明還提供一種擅染器,包括轉(zhuǎn)接模塊和擅染模塊,
[0020] 所述轉(zhuǎn)接模塊,用于圖層和不同地圖API適配轉(zhuǎn)換工作;
[0021] 所述擅染模塊,用于對圖層及圖層上覆蓋物進行擅染。
[0022] 本發(fā)明還提供一種覆蓋物圖層實例管理單元,用于對覆蓋物進行本地存儲和管 理,包括遍歷模塊、添加模塊、更新模塊和銷毀模塊,所述遍歷模塊分別與添加模塊、更新模 塊和銷毀模塊相連接;
[0023] 所述遍歷模塊,用于遍歷所述覆蓋物信息;
[0024] 所述添加模塊,將所述覆蓋物添加到地圖中;
[0025] 所述更新模塊,更新所述覆蓋物的相關(guān)信息和所述覆蓋物的可視化圖像;
[0026] 所述銷毀模塊,用于銷毀所述覆蓋物所述覆蓋物的相關(guān)信息和所述覆蓋物的可視 化圖像。
[0027] 本發(fā)明還提供一種地圖覆蓋物區(qū)域擅染方法,其特征在于,包括:
[002引擅染器管理單元接收到通信模塊推送的消息后和/或監(jiān)聽地圖事件接收到事件 觸發(fā)后,通過對比推送消息或事件和擅染器的方法名,如果相同,則選用所述擅染器,如不 同則切換下一個擅染器進行對比,直至找到合適的擅染器;
[0029] 找到所述合適的擅染器后,先判斷其與上次擅染所用擅染器是否相同,如果相同 則不對圖層進行處理,如果不同則銷毀當(dāng)前圖層,添加新圖層。
[0030] 優(yōu)選的是,所述擅染器管理單元先查找上一次使用的擅染器;如果首次調(diào)用所述 擅染器管理單元,則根據(jù)擅染器循環(huán)鏈表中的順序,依次查找合適的擅染器。
[0031] 在上述任一方案中優(yōu)選的是,如果所有擅染器都不符合條件,則選擇通用擅染器。
[0032] 在上述任一方案中優(yōu)選的是,所述銷毀當(dāng)前圖層,添加新圖層包括將上一圖層的 數(shù)據(jù)和接收到的新數(shù)據(jù)做并集,組成最新一圖層的擅染數(shù)據(jù);所述擅染管理對象接收到上 一圖層的圖層信息后,所述上一圖層自行銷毀本圖層信息;所述最新一圖層的擅染數(shù)據(jù)作 為參數(shù)傳送給擅染器擅染方法。
[0033] 本發(fā)明還提供一種地圖覆蓋物區(qū)域擅染方法,其特征在于,包括:
[0034] 被擅染器管理單元選中的擅染器,顯示其相對應(yīng)的圖層的展示方法,將接收自所 述擅染器管理單元的參數(shù)傳送給覆蓋物圖層實例管理單元。
[0035] 本發(fā)明還提供一種地圖覆蓋物區(qū)域擅染方法,其特征在于,包括:
[0036] 覆蓋物圖層實例管理單元遍歷覆蓋物相關(guān)信息,對每個所述覆蓋物的相關(guān)信息操 作如下,
[0037] 判斷是即時訂閱產(chǎn)生的響應(yīng)還是定時訂閱產(chǎn)生的響應(yīng);
[003引如果是所述即時訂閱,則判斷是否已被擅染,
[0039] 如果未被擅染,則先初始化所述覆蓋物、將所述覆蓋物信息id保存到本地存儲數(shù) 組中、將所述覆蓋物信息id和所述覆蓋物保存到本地存儲對象中,將所述覆蓋物保存到當(dāng) 前視圖覆蓋物數(shù)組中,
[0040] 如果已被擅染,則更改所述覆蓋物的位置和相關(guān)信息,更新所述覆蓋物在地圖上 的可視化圖像,
[004U 如果是所述定時訂閱產(chǎn)生的響應(yīng),則判斷是否已被擅染,
[0042] 如果未被擅染,初始化所述覆蓋物,將所述覆蓋物信息id保存到本地存儲數(shù)組 中,將所述覆蓋物信息id和所述覆蓋物保存到本地存儲對象中,再判斷是否在當(dāng)前視圖的 擴大圖中
[0043] 如果在,則將所述覆蓋物保存到當(dāng)前視圖覆蓋物數(shù)組中,
[0044] 如果不在,則不進行任何操作;
[0045] 如果已被擅染,則判斷是否在當(dāng)前視圖的擴大圖中,
[0046] 如果在所述擴大圖中,則更改所述覆蓋物的位置和相關(guān)信息,更新所述覆蓋物在 地圖上的可視化圖像,并將所述覆蓋物保存到當(dāng)前視圖覆蓋物數(shù)組中;
[0047] 如果不在所述擴大圖中,則從當(dāng)前視圖中銷毀此覆蓋物,并將其從當(dāng)前視圖對象 和數(shù)組中刪除;
[0048] 遍歷所有所述覆蓋物信息后,批量添加所述當(dāng)前視圖覆蓋物數(shù)組中的覆蓋物到地 圖上,再一次遍歷所述當(dāng)前視圖覆蓋物數(shù)組,對覆蓋物相關(guān)信息進行綁定。
[0049] 優(yōu)選的是,將所述覆蓋物信息id和所述覆蓋物保存到本地存儲對象中的保存形 式為鍵值對。
[0化0] 在上述任一方案中優(yōu)選的是,所述操作2為將所述覆蓋物信息id保存到本地存儲 數(shù)組中。
[0051] 在上述任一方案中優(yōu)選的是,所述當(dāng)前視圖的擴大圖為當(dāng)前視圖范圍擴大1/4后 的視圖。
[0化2] 本發(fā)明還提供一種地圖覆蓋物區(qū)域擅染方法,當(dāng)?shù)貓D被移動距離大于當(dāng)前視圖范 圍的1/8時,其特征在于,包括;
[0053] 圖層類實例對象遍歷覆蓋物相關(guān)信息,將最新視圖范圍內(nèi)的覆蓋物和上一視圖范 圍已加載的覆蓋物作交集,處于交集范圍內(nèi)的所述覆蓋物不做處理,加載擅染位置在所述 最新視圖內(nèi)的覆蓋物,并將所述覆蓋物的信息添加到本地存儲對象中;刪除擅染位置在所 述上一視圖而不在所述最新視圖范圍內(nèi)的所屬覆蓋物,并將所述覆蓋物信息從本地存儲對 象中刪除。
[0化4]與現(xiàn)有技術(shù)相比,本發(fā)明采用覆蓋物動態(tài)加載擅染技術(shù),通過定義焦點視圖范圍, 來管理覆蓋物的創(chuàng)建與銷毀,可W實現(xiàn)內(nèi)存與運算資源的合理分配利用。將瀏覽器視野范 圍外的無用覆蓋物進行銷毀,實現(xiàn)有目的的部分銷毀,而不是統(tǒng)一全部銷毀,減少系統(tǒng)中內(nèi) 存與CPU資源占用,同時也使系統(tǒng)的銷毀更靈活。及時加載用戶視野范圍內(nèi)未加載覆蓋物, 在降低消耗的同時保證提供給用戶最真實的可視化信息。
【專利附圖】
【附圖說明】
[0055] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明 的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可W根 據(jù)該鞋附圖獲得其他的附圖。
[0056] 圖1是按照本發(fā)明的地圖覆蓋物區(qū)域擅染方法的實施例1的流程圖;
[0057] 圖2是按照本發(fā)明的地圖覆蓋物區(qū)域擅染方法的實施例1的序列圖;
[005引圖3是按照本發(fā)明的地圖覆蓋物區(qū)域擅染方法的實施例1中步驟7的流程圖;
[0059] 圖4是按照本發(fā)明的地圖覆蓋物區(qū)域擅染方法的實施例1的當(dāng)前視圖的示意圖;
[0060] 圖5是按照本發(fā)明的地圖覆蓋物區(qū)域擅染方法的實施例2的流程圖;
[0061] 圖6是按照本發(fā)明的地圖覆蓋物區(qū)域擅染方法的實施例2的序列圖;
[0062] 圖7是按照本發(fā)明的地圖覆蓋物區(qū)域擅染方法實施例2的當(dāng)前視圖的示意圖。
【具體實施方式】
[0063] 下面結(jié)合附圖和優(yōu)選的實施方式對本發(fā)明作進一步詳細描述。權(quán)利要求中構(gòu)成要 件和實施例中具體實例之間的對應(yīng)關(guān)系可W如下例證。該里的描述意圖在于確認在實施例 中描述了用來支持在權(quán)利要求中陳述的主題的具體實例,由于在實施例中描述了實例,不 意味著該具體實例不表示構(gòu)成要件。相反地,即使在此包含了具體實例作為對應(yīng)一個構(gòu)成 要件的要素特征,也不意味著該具體實例不表示任何其它構(gòu)成要件。
[0064] 此外,該里的描述不意味著對應(yīng)于實施例中陳述的具體實例的所有主題都在權(quán)利 要求中引用了。換句話說,該里的描述不否認該種實體,即對應(yīng)實施例包含的具體實例,但 不包含在其任何一項權(quán)利要求中,即,能夠在W后的修正被分案并申請、或增加的可能的發(fā) 明的實體。
[00化]應(yīng)當(dāng)注意的是,"系統(tǒng)"在此意味著由兩個或更多設(shè)備構(gòu)成的處理。
[0066]"網(wǎng)絡(luò)"意味著至少連接了兩個設(shè)備的機構(gòu),并且在其中,一條信息能夠從一個設(shè) 備發(fā)送到另一個設(shè)備。經(jīng)由網(wǎng)絡(luò)建立通信的設(shè)備可W是彼此分離的,也可W是構(gòu)成一個機 器的內(nèi)部模塊。
[0067] "通信"可表示無線通信和有線通信。然而,還可W是混合無線和有線通信的通信, 更具體地,在某個區(qū)段采取無線通信而在另一個區(qū)段采取有線通信的通信。同樣,它也可W 是該樣的通信:從一個設(shè)備向另一設(shè)備的通信是有線的,且相反方向的通信是無線的。
[0068] 為了進一步解釋本發(fā)明的技術(shù)方案,下面通過具體實施例來對本發(fā)明進行詳細闡 述。
[0069] 區(qū)域擅染廣義地講是利用從設(shè)備上獲取的數(shù)據(jù),對其進行轉(zhuǎn)義,再對信息進行遍 歷檢索,將數(shù)據(jù)按照用戶更好理解的圖像進行可視化顯示,在地圖上相應(yīng)位置添加覆蓋物 來代表現(xiàn)實中的實物,同時也可W給相應(yīng)實物綁定信息窗口來展示實物相關(guān)聯(lián)信息。
[0070] 本發(fā)明的實現(xiàn)是通過模塊化思想從信息獲取到最后擅染逐步與分塊的方式完成 分工合作。設(shè)及到的一些模塊列舉出了下面具體介紹本發(fā)明實現(xiàn)方案時所設(shè)及到系統(tǒng)中的 模塊、類和對象。
[0071] 本發(fā)明區(qū)域擅染執(zhí)行過程相關(guān)對象包括;通信模塊、擅染器管理單元、擅染器、圖 層管理類、覆蓋物圖層實例管理單元、地圖、當(dāng)前視圖對象、覆蓋物。
[0072] 通信模塊;通信模塊是底層數(shù)據(jù)模塊,是接收位置信息并進行格式轉(zhuǎn)換和控制數(shù) 據(jù)流轉(zhuǎn)的模塊,通過Ajax請求并接收數(shù)據(jù),然后對數(shù)據(jù)進行處理操作。
[0073] 擅染器管理單元:此對象是對各擅染器進行管理的對象,主要負責(zé)各擅染器的調(diào) 配工作。通過監(jiān)聽地圖事件,接收到事件觸發(fā)后,配備擅染器切換轉(zhuǎn)接工作。然后通過比較 判定,當(dāng)需要更新視圖時完成擅染主調(diào)工作。同時也是其他模塊調(diào)用當(dāng)前圖層的中介者,來 將當(dāng)前圖層的相關(guān)信息返回給調(diào)用模塊,完成調(diào)用模塊與當(dāng)前視圖圖層的交互任務(wù)。
[0074] 擅染器:本系統(tǒng)中有多個擅染器,它們同時存放在一個隊列中。每個擅染器都繼承 自同一個基類,擁有一些共同的方法和屬性,但同時也有自己的擴展點。每個擅染器對應(yīng)著 一個圖層種類,一個圖層種類可能對應(yīng)著一個或一個W上擅染器,但是一個擅染器有且僅 能有相對應(yīng)的一個圖層種類。擅染器負責(zé)擅染工作W及圖層和其他模塊的數(shù)據(jù)轉(zhuǎn)接工作, 是通信模塊和圖層模塊的橋接器。
[0075] 圖層管理類;主要是對地圖上各圖層進行統(tǒng)一管理的一個對象。各圖層在初始化 時向圖層管理類進行注冊,就可W通過圖層管理類來獲取各圖層對象,調(diào)用其公開方法。擅 染圖層可W通過圖層管理類來監(jiān)控其他類型圖層,從而決定擅染與否或擅染后是否可見。
[0076] 覆蓋物圖層實例管理單元;根據(jù)用戶需求添加覆蓋物圖層實例管理單元種類,此 對象主要負責(zé)與地圖之間的交互工作,根據(jù)條件向地圖上添加覆蓋物或刪除覆蓋物,實時 更新覆蓋物綁定信息與位置,對覆蓋物進行本地存儲與管理,處理訂閱和取消訂閱的最上 層工作。區(qū)域擅染的粘合體,最終又回到了視圖上,將整個流程折成環(huán)狀。
[0077] 地圖;地圖是本發(fā)明實現(xiàn)的載體,同時也是服務(wù)的終結(jié)者,一切工作的最終調(diào)用對 象都是地圖。通過調(diào)用地圖對象的方法來實現(xiàn)覆蓋物的呈現(xiàn)與銷毀,在新信息到達時,進行 圖層更新。
[007引當(dāng)前視圖對象;當(dāng)前視圖對象是地圖對象的一部分,由地圖級別來決定其大小,是 在用戶視覺范圍內(nèi)的那一部分,是實現(xiàn)本發(fā)明關(guān)鍵點的載體。通過當(dāng)前視圖界限與覆蓋物 位置來判定是否銷毀地圖已加載覆蓋物,或是添加需顯示而未加載的覆蓋物。在本發(fā)明中, 將實際中當(dāng)前視圖擴大四分之一作為當(dāng)前視圖。在銷毀或添加時將當(dāng)前視圖擴大八分之一 后作為當(dāng)前視圖。
[0079] 覆蓋物:圖標(biāo),加載到地圖上來代表某個現(xiàn)實中的具體實物,可W有圖片也可W有 文字??蒞把它添加到地圖某個對應(yīng)位置,將其位置和地圖上經(jīng)紳度點進行綁定。
[0080] 實施例1 ;當(dāng)定時位置信息推送引發(fā)的圖層信息變更時。
[0081] 圖1為一種地圖覆蓋物區(qū)域擅染方法一優(yōu)選實施例的流程圖,如圖1所示,本實施 例的方法可W包括:
[0082] 圖2為一種地圖覆蓋物區(qū)域擅染方法一優(yōu)選實施例的序列圖;
[0083] 圖4是本發(fā)明地圖覆蓋物區(qū)域擅染方法實施例一當(dāng)前視圖的示意圖;
[0084] 定時位置信息推送是通過客戶端定時發(fā)送位置請求而引發(fā)的響應(yīng),此種情況和用 戶訂閱操作相關(guān),返回數(shù)據(jù)也和用戶訂閱信息相對應(yīng)(排除未知信息,如若為未知信息,返 回空數(shù)組),而和用戶對地圖操作無關(guān)。當(dāng)新的定時訂閱信息傳來時,將根據(jù)信息對圖層進 行重新規(guī)整,更新,保持將最新信息在地圖上進行可視化顯示。
[00化]具體的
[0086] 步驟1,用戶通過操作訂閱需求信息,此需求信息便是各覆蓋物相關(guān)信息最初接收 到客戶端的形式。通信模塊接收到后臺推送過來的信息后,對其進行相應(yīng)的處理轉(zhuǎn)換,將數(shù) 據(jù)保存到本地存儲中,W便及時查取,減少后臺交互次數(shù)與信息交互量。
[0087] 步驟2,步驟1中轉(zhuǎn)換后的信息在不同的需求下,被應(yīng)用的場景有所不同,所W本 發(fā)明中定義了一個分發(fā)器,將信息交由分發(fā)器處理,分發(fā)的其中一條線路便是位置信息擅 染線路。此線路下信息會被傳送給擅染器管理單元。
[008引步驟3,查找合適擅染器。擅染器管理單元接收到信息后,先去擅染器循環(huán)鏈表中 查找合適擅染的擅染器。第一個查找對象便是上一次使用的擅染器,如果是首次調(diào)用擅染 器管理單元,則擅染器循環(huán)鏈表中的首個便是第一個查找對象。所有擅染器都共同繼承了 一個基類擅染器,基類擅染器規(guī)定了擅染器的基本任務(wù)與規(guī)范。擅染器管理單元通過對比 推送消息或事件和擅染器的方法名,來找尋合適的擅染器進行擅染。查找按照循環(huán)鏈表順 序查找。擅染器管理單元找到符合條件的擅染器后將停止向下查找,待下一次擅染時從此 位置向下繼續(xù)查找。在循環(huán)鏈表的尾部有一個通用擅染器,通用擅染器條件寬泛或無條件 擅染。如果其他擅染器都無法擅染的話,調(diào)用通用擅染器進行擅染。除通用擅染器外,每個 擅染器都有相應(yīng)的一個條件,該個條件是和地圖縮放級別相關(guān),可W根據(jù)不同的客戶需求, 定義不同的條件,添加不同的擅染器。根據(jù)本發(fā)明的搭建的框架,只需添加一個擅染器然 后將其插進擅染器循環(huán)隊列中,完成注冊即可,不需改動原程序中代碼,緊密附和了開閉原 貝1J,實現(xiàn)對擴展開放、對修改關(guān)閉。
[0089] 步驟4,確定最終擅染信息,做擅染前調(diào)用準備工作。通過步驟3找到合適的擅染 器后,擅染器管理單元首先判斷該擅染器與上次擅染所用擅染器是否相同,因為每個擅染 器有且僅能和一種擅染圖層相對應(yīng),擅染器相同,則圖層相同。圖層相同則不需銷毀當(dāng)前圖 層然后添加新圖層,完成圖層的替換。如果是不同的擅染器,則要考慮圖層的替換工作。替 換工作的基礎(chǔ)數(shù)據(jù)需由上一圖層數(shù)據(jù)和接收到的數(shù)據(jù)做并集,共同組成最新一圖層的擅染 數(shù)據(jù)。上一圖層將其圖層信息傳送給擅染器管理單元后,自行銷毀本圖層信息。擅染器管 理單元將上一圖層數(shù)據(jù)和接收到的數(shù)據(jù)做并集作為本次擅染的參數(shù)傳給擅染器擅染方法。
[0090] 步驟5,擅染器擅染調(diào)用圖層展示。擅染器的擅染方法是調(diào)用其相對應(yīng)圖層的展示 方法,將接收到的參數(shù)傳給展示方法。
[0091] 步驟6,當(dāng)前圖層范圍界定。訪問當(dāng)前視圖管理對象,獲得當(dāng)前視圖的范圍,將其 范圍擴大四分之一后作為要擅染的當(dāng)前視圖,此種方案較保險,防止較小幅度移動地圖查 看當(dāng)前視圖邊緣覆蓋物,其周邊存在信息卻無覆蓋物添加到地圖上,容易讓用戶產(chǎn)生錯覺 和誤解。所W,為了達到更好的用戶體驗,同時也要保證達到發(fā)明目的,故用此方案。如圖 4所示,為當(dāng)前視圖做圖示解義。
[0092] 步驟7,遍歷覆蓋物信息并擅染到地圖上。遍歷步驟5傳送的覆蓋物相關(guān)信息。判 定是及時訂閱產(chǎn)生的響應(yīng)還是定時訂閱產(chǎn)生的響應(yīng),如果是即時訂閱,則直接判定是否已 被擅染,如果未被擅染,則初始化覆蓋物,將其所對應(yīng)信息的id保存到本地數(shù)組和當(dāng)前視 圖數(shù)組中,同時將其信息保存到本地對象和當(dāng)前視圖對象中,W鍵值對的形式,鍵一值分別 為信息id和覆蓋物。同時將覆蓋物保存到當(dāng)前視圖覆蓋物數(shù)組中。如果已經(jīng)被擅染,則根 據(jù)最新信息更改覆蓋物位置和其相關(guān)信息,并更新其在地圖上的可視化圖像。如果是定時 訂閱引發(fā)的響應(yīng),則再判定是否已被擅染后判定其位置是否在步驟6中所擴展的當(dāng)前視圖 內(nèi),如果在,則執(zhí)行和即時訂閱此種情況相同處理,如果不在,則不將其保存在當(dāng)前視圖覆 蓋物數(shù)組中。如果已經(jīng)被擅染,也要判定覆蓋物是否在步驟6中所計算的擴展的當(dāng)前視圖 范圍內(nèi),如果在,則更新覆蓋物位置和其相關(guān)信息,并更新其在地圖上的可視化圖像。如果 不在,則更新覆蓋物位置和其相關(guān)信息,將其從當(dāng)前視圖中銷毀,并將其從當(dāng)前視圖對象和 數(shù)組中刪除。繼續(xù)遍歷,直到遍歷結(jié)束。然后將當(dāng)前視圖覆蓋物數(shù)組中的覆蓋物批量添加 到地圖上,至此完成可視化圖像的顯示。由于本發(fā)明中不僅是展示覆蓋物圖像,同時也要綁 定其相關(guān)信息,而相關(guān)信息又不能在擅染到地圖上之前進行綁定,只能擅染到地圖上,成為 其上的一個圖層之后才能進行綁定?;诖?,而又考慮地圖圖層加載的效率,只能再進行一 次遍歷,然后執(zhí)行綁定操作,實現(xiàn)信息綁定功能。至此,地圖覆蓋物擅染和覆蓋物信息綁定 已完成。本步驟實現(xiàn)流程如圖3所示。
[0093] 圖3本發(fā)明地圖覆蓋物區(qū)域擅染方法實施例一步驟7的流程圖;
[0094] 詳細描述一下步驟7 :
[0095] 覆蓋物圖層實例管理單元遍歷覆蓋物相關(guān)信息,對每個所述覆蓋物的相關(guān)信息操 作如下,
[0096] 判斷是即時訂閱產(chǎn)生的響應(yīng)還是定時訂閱產(chǎn)生的響應(yīng);
[0097] 如果是所述即時訂閱,則判斷是否已被擅染,
[009引如果未被擅染,則先初始化所述覆蓋物、將所述覆蓋物信息id保存到本地存儲數(shù) 組中、將所述覆蓋物信息id和所述覆蓋物保存到本地存儲對象中,將所述覆蓋物保存到當(dāng) 前視圖覆蓋物數(shù)組中,
[0099] 如果已被擅染,則更改所述覆蓋物的位置和相關(guān)信息,更新所述覆蓋物在地圖上 的可視化圖像,
[0100] 如果是所述定時訂閱產(chǎn)生的響應(yīng),則判斷是否已被擅染,
[0101] 如果未被擅染,初始化所述覆蓋物,將所述覆蓋物信息id保存到本地存儲數(shù)組 中,將所述覆蓋物信息id和所述覆蓋物保存到本地存儲對象中,再判斷是否在當(dāng)前視圖的 擴大圖中
[0102] 如果在,則將所述覆蓋物保存到當(dāng)前視圖覆蓋物數(shù)組中,
[0103] 如果不在,則不進行任何操作,
[0104] 如果已被擅染,則判斷是否在當(dāng)前視圖的擴大圖中,
[0105] 如果在所述擴大圖中,則更改所述覆蓋物的位置和相關(guān)信息,更新所述覆蓋物在 地圖上的可視化圖像,并將所述覆蓋物保存到當(dāng)前視圖覆蓋物數(shù)組中;
[0106] 如果不在所述擴大圖中,則從當(dāng)前視圖上銷毀次覆蓋物,并將其從當(dāng)前視圖對象 和數(shù)組中刪除;
[0107] 遍歷所有所述覆蓋物信息后,批量添加所述當(dāng)前視圖覆蓋物數(shù)組中的覆蓋物到地 圖上,再一次遍歷所述當(dāng)前視圖覆蓋物數(shù)組,對覆蓋物相關(guān)信息進行綁定。
[010引圖4是本發(fā)明地圖覆蓋物區(qū)域擅染方法實施例一當(dāng)前視圖的示意圖;
[0109] 實施例2 ;當(dāng)?shù)貓D事件觸發(fā)引發(fā)的視野圖層界限變更
[0110] 圖5是本發(fā)明地圖覆蓋物區(qū)域擅染方法實施例二的流程圖;
[0111] 圖6是本發(fā)明地圖覆蓋物區(qū)域擅染方法實施例二的序列圖;
[0112] 圖7是本發(fā)明地圖覆蓋物區(qū)域擅染方法實施例二當(dāng)前視圖的示意圖;
[0113] 地圖事件觸發(fā)引發(fā)視圖變更,第一種情況是當(dāng)用戶拖動地圖,拖動距離超過當(dāng)前 視圖的八分之一即觸發(fā)本發(fā)明中定義的監(jiān)聽事件一一地圖移動事件。第二種情況是當(dāng)用戶 放大縮小地圖時,視圖從經(jīng)紳度上看,整個范圍就會發(fā)生變化,在此范圍內(nèi)的覆蓋物數(shù)量有 可能發(fā)生變化,所W需要更新,即觸發(fā)本發(fā)明中定義的監(jiān)聽事件一一地圖縮放級別改變事 件。W上兩種情況,都有一個延遲時間控制,當(dāng)前后事件觸發(fā)請求過于頻繁時,只觸發(fā)后者, 前者不作處理,降低地圖操作次數(shù),提高效率,給予用戶良好體驗效果。
[0114] 具體如下;
[0115] 步驟1,當(dāng)用戶拖動地圖使地圖移動距離大于當(dāng)前視圖范圍的八分之一時,如圖7 所示(此運算的單位是像素),將觸發(fā)本發(fā)明中監(jiān)聽的地圖移動事件。當(dāng)用戶放大縮小地圖 使地圖級別改變時,將觸發(fā)本發(fā)明中監(jiān)聽的地圖縮放級別改變事件。W上兩個事件,都設(shè)置 了延遲觸發(fā)操作,當(dāng)前后事件觸發(fā)請求過于頻繁時,只觸發(fā)后者,前者不作處理,降低地圖 操作次數(shù),提高效率。
[0116] 步驟2,擅染器管理單元監(jiān)聽到觸發(fā)事件,將執(zhí)行上種情況的步驟3操作。
[0117] 步驟3,更新視圖調(diào)用。找到合適的擅染器后,首先取到上一擅染器圖層管理中保 存到本地的覆蓋物信息(此信息是當(dāng)前覆蓋物最新信息集合)。然后查看是否是相同擅染 器,若擅染器不同,則銷毀上一圖層,執(zhí)行步驟4操作。若擅染器相同,則直接執(zhí)行步驟4操 作。
[011引步驟4,調(diào)用圖層的視圖更新操作。
[0119] 步驟5,遍歷覆蓋物信息并過濾。圖層對象類遍歷接收到的覆蓋物信息,將最新視 圖范圍內(nèi)的覆蓋物和上一視圖范圍已加載覆蓋物作交集處理,處在交集范圍內(nèi)的則不做任 何處理,然后加載擅染位置在最新視圖內(nèi)的覆蓋物,并將其信息添加到本地存儲對象中,刪 除在變化前視圖內(nèi)而不在最新視圖范圍內(nèi)的覆蓋物,并將其信息從本地存儲對象中去除。 如表1所示,列舉的是上一視圖的覆蓋物信息,如表2所示,列舉的是當(dāng)前視圖內(nèi)覆蓋物信 息,如表3所示,是合并處理后最終擅染結(jié)果。表1中的markerl和marker4存在于上一視 圖,而不在當(dāng)前視圖范圍內(nèi),所W要將它們從地圖上銷毀,防止地圖重繪時做無用功,降低 地圖負載。表2中的markerl和marked是變動后視圖新增的覆蓋物點,所W要將其初始 化并加到地圖圖層上。表1中的markers和表2中的markerl,表1中的markers和表2中 的marked相同,故不需做處理,減少工作量。
[0120] 表1上一視圖覆蓋物信息
[0121]
【權(quán)利要求】
1. 一種地圖覆蓋物區(qū)域渲染系統(tǒng),包括地圖,其特征在于,還包括渲染器管理單元、渲 染器、覆蓋物圖層實例管理單元;所述渲染器分別與所述渲染器管理單元和所述覆蓋物圖 層實例管理單元相連接,所述覆蓋物圖層實例管理單元還與所述地圖相連接; 所述渲染器管理單元用于對所述渲染器進行管理,負責(zé)各渲染器調(diào)配; 所述渲染器用于對圖層和/或覆蓋物進行渲染; 所述覆蓋物圖層實例管理單元用于向地圖上添加或刪除所述覆蓋物,更新覆蓋物信息 與位置,對覆蓋物進行本地存儲與管理。
2. 如權(quán)利要求1所述的地圖覆蓋物區(qū)域渲染系統(tǒng),其特征在于,所述地圖覆蓋物區(qū)域 渲染系統(tǒng)還包括通信模塊,當(dāng)渲染事件由定時位置信息推送引發(fā)的涂層信息變更時,觸發(fā) 所述通信模塊;所述通信模塊接收到后臺推送過來的信息后,對其進行相應(yīng)的處理轉(zhuǎn)換,將 信息保存到本地存儲中。
3. 如權(quán)利要求1所述的地圖覆蓋物區(qū)域渲染系統(tǒng),其特征在于,所述覆蓋物是添加到 地圖中內(nèi)容的統(tǒng)稱;包括矢量圖形元素、文字標(biāo)注、圖片、信息窗口。
4. 一種渲染器管理單元,包括:查找模塊和切換模塊, 所述查找模塊用于尋找合適的渲染器; 所述切換模塊用于切換渲染器和圖層。
5. -種渲染器,包括轉(zhuǎn)接模塊和渲染模塊, 所述轉(zhuǎn)接模塊,用于圖層和不同地圖API適配轉(zhuǎn)換工作; 所述渲染模塊,用于對圖層及圖層上覆蓋物進行渲染。
6. -種覆蓋物圖層實例管理單元,用于對覆蓋物進行本地存儲和管理,包括遍歷模 塊、添加模塊、更新模塊和銷毀模塊,所述遍歷模塊分別與添加模塊、更新模塊和銷毀模塊 相連接; 所述遍歷模塊,用于遍歷所述覆蓋物信息; 所述添加模塊,將所述覆蓋物添加到地圖中; 所述更新模塊,更新所述覆蓋物的相關(guān)信息和所述覆蓋物的可視化圖像; 所述銷毀模塊,用于銷毀所述覆蓋物所述覆蓋物的相關(guān)信息和所述覆蓋物的可視化圖 像。
7. -種地圖覆蓋物區(qū)域渲染方法,包括: 渲染器管理單元接收到通信模塊推送的消息后和/或監(jiān)聽地圖事件接收到事件觸發(fā) 后,通過對比推送消息或事件和渲染器的方法名,如果相同,則選用所述渲染器,如不同則 切換下一個渲染器進行對比,直至找到合適的渲染器; 找到所述合適的渲染器后,先判斷其與上次渲染所用渲染器是否相同,如果相同則不 對圖層進行處理,如果不同則銷毀當(dāng)前圖層,添加新圖層。
8. -種地圖覆蓋物區(qū)域渲染方法,包括: 被渲染器管理單元選中的渲染器,顯示其相對應(yīng)的圖層的展示方法,將接收自所述渲 染器管理單元的參數(shù)傳送給覆蓋物圖層實例管理單元。
9. 一種地圖覆蓋物區(qū)域渲染方法,包括: 覆蓋物圖層實例管理單元遍歷覆蓋物相關(guān)信息,對每個所述覆蓋物的相關(guān)信息操作如 下, 判斷是即時訂閱產(chǎn)生的響應(yīng)還是定時訂閱產(chǎn)生的響應(yīng); 如果是所述即時訂閱,則判斷是否已被渲染, 如果未被渲染,則先初始化所述覆蓋物、將所述覆蓋物信息id保存到本地存儲數(shù)組 中、將所述覆蓋物信息id和所述覆蓋物保存到本地存儲對象中,將所述覆蓋物保存到當(dāng)前 視圖覆蓋物數(shù)組中, 如果已被渲染,則更改所述覆蓋物的位置和相關(guān)信息,更新所述覆蓋物在地圖上的可 視化圖像, 如果是所述定時訂閱產(chǎn)生的響應(yīng),則判斷覆蓋物是否已被渲染, 如果未被渲染,初始化所述覆蓋物,將所述覆蓋物信息id保存到本地存儲數(shù)組中,將 所述覆蓋物信息id和所述覆蓋物保存到本地存儲對象中,再判斷所述覆蓋物是否在當(dāng)前 視圖的擴大圖中 如果在,則將所述覆蓋物保存到當(dāng)前視圖覆蓋物數(shù)組中, 如果不在,則不進行任何操作; 如果已被渲染,-則判斷是否在當(dāng)前視圖的擴大圖中, 如果在所述擴大圖中,則更改所述覆蓋物的位置和相關(guān)信息,更新所述覆蓋物在地圖 上的可視化圖像,并將所述覆蓋物保存到當(dāng)前視圖覆蓋物數(shù)組中, 如果不在所述擴大圖中,則從當(dāng)前視圖上中銷毀此覆蓋物,并將其從當(dāng)前視圖對象和 數(shù)組中刪除; 遍歷所有所述覆蓋物信息后,批量添加所述當(dāng)前視圖覆蓋物數(shù)組中的覆蓋物到地圖 上,再一次遍歷所述當(dāng)前視圖覆蓋物數(shù)組,對覆蓋物相關(guān)信息進行綁定。
10.如權(quán)利要求9所述的一種地圖覆蓋物區(qū)域渲染方法,其特征在于,將所述覆蓋物信 息id和所述覆蓋物保存到本地存儲對象中的保存形式為鍵值對。
【文檔編號】G06F17/30GK104504106SQ201410842652
【公開日】2015年4月8日 申請日期:2014年12月30日 優(yōu)先權(quán)日:2014年12月4日
【發(fā)明者】牛昆亮, 曹雪峰, 孫海濤, 武海斌, 沈煜, 馮振川 申請人:中移全通系統(tǒng)集成有限公司