一種地圖加載性能優(yōu)化方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種地圖加載性能優(yōu)化的方法及裝置。該方法包括一種地圖加載性能優(yōu)化的方法,包括:判斷當(dāng)前屏幕顯示地圖狀態(tài)的改變;如果地圖狀態(tài)改變,則啟動地圖數(shù)據(jù)加載;以及在地圖數(shù)據(jù)加載時優(yōu)先從離線包緩存中獲取需要加載的地圖數(shù)據(jù),其中所述離線包緩存中存儲與當(dāng)前屏幕顯示的地圖相關(guān)的部分離線包數(shù)據(jù)。本發(fā)明利用離線包數(shù)據(jù)的連續(xù)性,同一級別地圖上鄰近的數(shù)據(jù)存儲位置也在同一區(qū)域,每次查找離線包的時候我們可以多讀取當(dāng)前位置的前后各500k-2M字節(jié)內(nèi)容到離線包緩存,以便下次查找相鄰數(shù)據(jù)時直接從內(nèi)存中讀取,減少數(shù)據(jù)輸入輸出次數(shù),提升數(shù)據(jù)讀取性能。
【專利說明】一種地圖加載性能優(yōu)化方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電子地圖領(lǐng)域,尤其涉及地圖加載性能的優(yōu)化方法和裝置。
【背景技術(shù)】
[0002]電子地圖,也稱數(shù)字地圖,是利用計算機技術(shù),以數(shù)字方式存儲和搜索的地圖。利用計算機的數(shù)據(jù)處理能力,電子地圖可以實現(xiàn)更為快速的位置信息搜索,方便用戶使用。
[0003]數(shù)據(jù)組織是電子地圖的核心之一。合理的數(shù)據(jù)組織能夠使導(dǎo)航電子地圖數(shù)據(jù)全面,關(guān)系明確,數(shù)據(jù)冗余量小。以合理的電子地圖數(shù)據(jù)組織為基礎(chǔ)編寫軟件,速度快、精度高,比較容易開發(fā)出人性化的作品。導(dǎo)航電子地圖的實時性等特點要求其數(shù)據(jù)組織的主要特點就是:簡單、拓?fù)潢P(guān)系明確。
[0004]現(xiàn)有地圖數(shù)據(jù)加載技術(shù)具有一些缺點,圖1示出了根據(jù)現(xiàn)有技術(shù)的地圖加載方法的示意性框圖?,F(xiàn)有的地圖加載方法通常包括如下幾個步驟:步驟Si,判斷客戶端當(dāng)前顯示的地圖狀態(tài)是否改變。例如,用戶在觸摸屏上進(jìn)行地圖的放大、縮小和平移等操作都屬于地圖狀態(tài)的改變,可能需要加載新的地圖數(shù)據(jù)以生成改變后的地圖予以展現(xiàn)。例如在導(dǎo)航過程中,隨著用戶終端的移動,定位點的變化,地圖也隨著改變。如果這時需要加載新的數(shù)據(jù)則進(jìn)入步驟S2,啟動數(shù)據(jù)加載線程。
[0005]在步驟S3中,在地圖的加載過程中,通常是基于當(dāng)前瀏覽地圖的區(qū)域或者用戶當(dāng)前定位的區(qū)域以及地圖顯示的比例尺,從本地緩存、離線包或者服務(wù)器檢索并獲取地圖數(shù)據(jù),再根據(jù)獲取到的地圖數(shù)據(jù)繪制本次加載的地圖。本地緩存、離線包以及服務(wù)器作為地圖數(shù)據(jù)的三個來源是按照上述次序的優(yōu)先級依次進(jìn)行調(diào)取的。例如,優(yōu)先從本地緩存中獲取地圖數(shù)據(jù)。如果本地緩存中沒有地圖數(shù)據(jù)則從已經(jīng)下載并存儲在本地存儲器中的離線包中獲取地圖數(shù)據(jù)。具體來說,需要對離線包進(jìn)行解壓縮,并檢索出所需的地圖數(shù)據(jù)。如果沒有預(yù)先下載的離線包,則需要通過網(wǎng)絡(luò)訪問服務(wù)器以獲得未下載的離線包的數(shù)據(jù)。在有離線包并且需要從離線包獲取地圖數(shù)據(jù)的情況下,在同一個城市瀏覽地圖,有90%概率上會命中同一個的離線包的數(shù)據(jù),而傳統(tǒng)的地圖數(shù)據(jù)加載方法每次從離線包查找數(shù)據(jù)時都是重新打開離線包文件,建立索引查找,這樣導(dǎo)致數(shù)據(jù)輸入輸出較頻繁。所以有必要提高一下地圖加載性能。
[0006]在加載地圖數(shù)據(jù)之后執(zhí)行后續(xù)的數(shù)據(jù)處理步驟,例如包括步驟S4,組織openGL待渲染數(shù)據(jù);步驟S5,對標(biāo)注的位置和方向進(jìn)行碰撞計算,確定可以顯示的標(biāo)注;步驟S6,利用各種紋理渲染地圖并更新顯示出來。
【發(fā)明內(nèi)容】
[0007]有鑒于此,本發(fā)明的一個目的是提供一種地圖加載性能優(yōu)化方法和裝置。
[0008]為達(dá)到上述目的,本發(fā)明實施例提供了一種地圖加載性能優(yōu)化的方法,包括:
[0009]判斷當(dāng)前屏幕顯示地圖狀態(tài)的改變;
[0010]如果地圖狀態(tài)改變,則啟動地圖數(shù)據(jù)加載;以及
[0011]在地圖數(shù)據(jù)加載時優(yōu)先從離線包緩存中獲取需要加載的地圖數(shù)據(jù),其中所述離線包緩存中存儲與當(dāng)前屏幕顯示的地圖相關(guān)的部分離線包數(shù)據(jù)。其中需要加載當(dāng)前屏幕顯示地圖相關(guān)的離線包時,基于本次加載的當(dāng)前屏幕顯示所需的地圖數(shù)據(jù),額外將屏幕顯示所需地圖數(shù)據(jù)附近的地圖數(shù)據(jù)緩存到離線包緩存中。所述緩存到離線包緩存的地圖數(shù)據(jù)是在當(dāng)前屏幕顯示地圖相關(guān)的選中離線包中,在當(dāng)前顯示所需的地圖數(shù)據(jù)之前和之后大小在500K-2M字節(jié)范圍內(nèi)的數(shù)據(jù)段。在加載當(dāng)前顯示地圖數(shù)據(jù)的同時,額外將當(dāng)前顯示地圖周圍未顯示的多個屏幕大小的地圖數(shù)據(jù)到離線包緩存中。需要緩存到離線包緩存的地圖數(shù)據(jù)包括當(dāng)前屏幕顯示地圖周邊的8個屏的地圖數(shù)據(jù)。當(dāng)在離線包緩存中加載不到所需的數(shù)據(jù)時,重新從離線包中獲取當(dāng)前屏幕顯示所需的地圖數(shù)據(jù),并且同時更新離線包緩存,將當(dāng)前屏幕顯示所需的地圖數(shù)據(jù)周圍的未顯示地圖數(shù)據(jù)重新加載到離線包緩存中。在更新離線包緩存時,額外讀取當(dāng)前屏幕顯示地圖對應(yīng)離線包中數(shù)據(jù)位置的前后各500k_2M字節(jié)的數(shù)據(jù)段到內(nèi)存緩存。在更新離線包緩時,判斷當(dāng)前顯示屏幕的數(shù)據(jù)量,并基于判斷結(jié)果確定需要緩存到離線包緩存中的數(shù)據(jù)量。基于用戶對屏幕顯示地圖的歷史操作習(xí)慣,預(yù)測需要預(yù)加載離線包緩存的數(shù)據(jù)量和內(nèi)容。通過屏幕顯示地圖的狀態(tài)來預(yù)測需要預(yù)加載的地圖數(shù)據(jù)。
[0012]本發(fā)明還提供一種地圖加載性能優(yōu)化的裝置,包括:
[0013]用于存儲與當(dāng)前屏幕顯示的地圖相關(guān)的部分離線包數(shù)據(jù)的離線包緩存;
[0014]用于在地圖狀態(tài)改變時進(jìn)行地圖數(shù)據(jù)加載的單元;
[0015]用于更新離線包緩存的單元;以及
[0016]其中,所述用于地圖數(shù)據(jù)加載的單元在地圖數(shù)據(jù)加載時優(yōu)先從離線包緩存中獲取需要加載的地圖數(shù)據(jù)。
[0017]由于離線包數(shù)據(jù)的連續(xù)性,同一級別地圖上鄰近的數(shù)據(jù)存儲位置也在同一區(qū)域,每次查找離線包的時候我們可以多讀取當(dāng)前位置的前后各IM內(nèi)容到內(nèi)存緩存,以便下次查找相鄰數(shù)據(jù)時直接從內(nèi)存中讀取,減少數(shù)據(jù)輸入輸出次數(shù),提升數(shù)據(jù)讀取性能。
【專利附圖】
【附圖說明】
[0018]通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細(xì)描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
[0019]圖1示出了根據(jù)現(xiàn)有技術(shù)的地圖加載方法的示意性框圖;
[0020]圖2示出了根據(jù)本發(fā)明一個實施例的地圖加載性能優(yōu)化方法的示意性框圖;
[0021]圖3示出了根據(jù)本發(fā)明另一個實施例的地圖加載性能優(yōu)化方法的裝置的框圖。
[0022]附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。
【具體實施方式】
[0023]下面結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)描述。
[0024]在以下描述中闡述了具體細(xì)節(jié)以便于充分理解本發(fā)明。但是本發(fā)明能夠以多種不同于在此描述的其它方式來實施,本領(lǐng)域技術(shù)人員可以在不違背本發(fā)明內(nèi)涵的情況下做類似推廣。因此本發(fā)明不受下面公開的【具體實施方式】的限制。
[0025]圖2示出了根據(jù)本發(fā)明一個實施例的地圖加載性能優(yōu)化方法的示意性框圖。其中本發(fā)明的方法目的在于提升數(shù)據(jù)加載性能。
[0026]所述地圖加載性能優(yōu)化方法包括:
[0027]步驟SI,判斷地圖狀態(tài)的改變;
[0028]在地圖的使用過程中,經(jīng)常會對地圖進(jìn)行一系列的操作,例如,拖拽地圖以顯示不同的區(qū)域,對地圖進(jìn)行縮放等。每次對地圖進(jìn)行操作后,顯示的地圖不盡相同,每操作一次地圖都要對地圖進(jìn)行一次刷新顯示,因此每次顯示的新的地圖中的地圖數(shù)據(jù)也會發(fā)生變化。
[0029]步驟S2,啟動數(shù)據(jù)加載線程。如果需要加載新的地圖數(shù)據(jù)來更新當(dāng)前顯示的地圖時啟動數(shù)據(jù)加載線程。
[0030]步驟S33,在地圖的加載過程中,基于當(dāng)前瀏覽地圖的區(qū)域或者用戶當(dāng)前定位的區(qū)域以及地圖顯示的比例尺,從本地緩存、離線包或者服務(wù)器檢索并獲取地圖數(shù)據(jù),再根據(jù)獲取到的地圖數(shù)據(jù)繪制本次加載的地圖。本地緩存、離線包以及服務(wù)器作為地圖數(shù)據(jù)的三個來源是按照上述次序的優(yōu)先級依次進(jìn)行調(diào)取的。例如,優(yōu)先從本地緩存中獲取地圖數(shù)據(jù)。如果本地緩存中沒有地圖數(shù)據(jù)則從已經(jīng)下載并存儲在本地存儲器中的離線包中獲取地圖數(shù)據(jù)。具體來說,需要對離線包進(jìn)行解壓縮,并檢索出所需的地圖數(shù)據(jù)。如果沒有預(yù)先下載的離線包,則需要通過網(wǎng)絡(luò)訪問服務(wù)器以獲得未下載的離線包的數(shù)據(jù)。在有離線包并且需要從離線包獲取地圖數(shù)據(jù)的情況下,由于通常的地圖平移放大縮小操作,有90%概率上會命中同一個的離線包的數(shù)據(jù),而傳統(tǒng)的地圖數(shù)據(jù)加載方法每次從離線包查找數(shù)據(jù)時都是重新打開離線包文件,建立索引查找,這樣導(dǎo)致數(shù)據(jù)輸入輸出較頻繁。
[0031]為了減少對同一離線包的解壓縮和檢索操作。本發(fā)明在加載當(dāng)前屏幕顯示地圖相關(guān)的離線包時,基于本次加載的當(dāng)前屏幕顯示所需的地圖數(shù)據(jù),多讀取屏幕顯示所需地圖數(shù)據(jù)附近的地圖數(shù)據(jù)至離線包緩存中,待下次需要從離線數(shù)據(jù)包中加載數(shù)據(jù)時,優(yōu)先從離線包緩存中進(jìn)行加載,這樣就不需要對同一離線包進(jìn)行反復(fù)的檢索和解壓縮操作。
[0032]所述添加至離線包緩存的地圖數(shù)據(jù)是在選中的離線包中當(dāng)前顯示所需的地圖數(shù)據(jù)之前和之后大小在500K-2M字節(jié)范圍內(nèi)的數(shù)據(jù)段。
[0033]在另一個實施例中,也可以在加載當(dāng)前顯示地圖數(shù)據(jù)的同時,額外將當(dāng)前顯示地圖周圍未顯示的多個屏幕大小的地圖數(shù)據(jù)緩存到離線包緩存中,需要緩存到離線包緩存的地圖數(shù)據(jù)例如包括當(dāng)前屏幕顯示地圖周邊的8個屏的地圖數(shù)據(jù),分別為上、中、下、左上、左下、右上、右下的8屏地圖數(shù)據(jù)。
[0034]例如:在地圖上搜索“北京大學(xué)”和顯示“北京大學(xué)”周邊的地圖時,離線包里自動將周邊的“清華大學(xué)”,“中關(guān)村”等等8個方位的大小在500K-2M字節(jié)的未顯示的外圍地圖數(shù)據(jù)存儲在離線包緩存中。待下次移動當(dāng)前顯示的地圖到“清華大學(xué)”時,便可很快地優(yōu)先從離線包緩存中獲取。
[0035]應(yīng)當(dāng)注意,上述舉例僅是為了更好地說明本發(fā)明的技術(shù)方案,而非對本發(fā)明的限制。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,任何用戶在使用與本發(fā)明功能相關(guān)的應(yīng)用時對于離線包中的緩存信息的限制,均包含在本發(fā)明離線包緩存的范圍內(nèi)。
[0036]由于離線包緩存的存儲空間可以是預(yù)先固定分配的內(nèi)存空間,當(dāng)在離線包緩存中加載不到所需的數(shù)據(jù)時,重新從離線包中獲取當(dāng)前屏幕顯示所需的地圖數(shù)據(jù),并且同時更新離線包緩存,將當(dāng)前屏幕顯示所需的地圖數(shù)據(jù)周圍的未顯示地圖數(shù)據(jù)重新加載到離線包緩存中。
[0037]具體的,更新離線包緩存之前還包括:
[0038]基于所述本次加載的當(dāng)前屏幕、所述緩存中已存儲的地圖數(shù)據(jù)的存儲時間及所述緩存的容量,刪除所述離線緩存中已存儲的地圖數(shù)據(jù)的存儲時間超過預(yù)設(shè)時間的地圖數(shù)據(jù)。所述預(yù)設(shè)時間通常為5-10分鐘,即刪除離線包緩存中存儲時間超過該時間的地圖數(shù)據(jù)。
[0039]其中,所述加載該匹配的地圖數(shù)據(jù)包括:
[0040]接著,步驟S4,生成地圖。
[0041]應(yīng)當(dāng)注意,上述舉例僅是為了更好地說明本發(fā)明的技術(shù)方案,而非對本發(fā)明的限制。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,任何用戶在使用與本發(fā)明功能相關(guān)的應(yīng)用時對于使用離線包中的緩存信息,均包含在本發(fā)明離線包緩存的范圍內(nèi)。
[0042]在本發(fā)明的一個實施例中,利用離線包數(shù)據(jù)的連續(xù)性,同一級別地圖上鄰近的數(shù)據(jù)存儲位置也在同一區(qū)域,每次更新離線包緩存的時候,可以額外讀取當(dāng)前屏幕顯示地圖對應(yīng)離線包中數(shù)據(jù)位置的前后各500k-2M字節(jié),優(yōu)選為IM字節(jié),的數(shù)據(jù)段到內(nèi)存緩存,以便下次查找相鄰數(shù)據(jù)時直接從內(nèi)存中讀取,減少數(shù)據(jù)輸入輸出次數(shù),提升數(shù)據(jù)讀取性能。
[0043]在上一實施例中,所采用的辦法是在有離線包的情況下,避免了每次查找離線包,通過多讀取若干屏幕的數(shù)據(jù)內(nèi)容到離線包緩存,以便下次查找相鄰數(shù)據(jù)時直接從內(nèi)存中讀取,減少數(shù)據(jù)輸入輸出次數(shù),提升數(shù)據(jù)讀取性能。而在本實施例中,減少數(shù)據(jù)輸入輸出次數(shù),提升數(shù)據(jù)讀取性能。具體的,根據(jù)當(dāng)前的地圖數(shù)據(jù),判斷當(dāng)前屏幕顯示地圖的數(shù)據(jù)量,確定預(yù)加載的周邊未顯示地圖的數(shù)據(jù)量。
[0044]作為優(yōu)選方案之一,參照圖2所示的實施例中的步驟S33還包括一個判斷步驟(未畫出)。
[0045]具體的,步驟S1、S2和S4已在圖2所示的實施例中予以詳述,并以引用的方式包含于此,不再贅述。
[0046]接著,在步驟S33中還包括一個判斷步驟,用于判斷當(dāng)前顯示屏幕的數(shù)據(jù)量,并基于判斷結(jié)果確定需要緩存到離線包緩存中的數(shù)據(jù)量。
[0047]例如:用戶搜索市中心的地理位置,由于市中心建筑比較多,信息量大,則在離線包緩存中將預(yù)加載2M字節(jié)左右的地圖數(shù)據(jù)。而如果用戶搜索郊區(qū)的地理位置,則在離線包緩存中將預(yù)加載幾百K左右的地圖數(shù)據(jù)。
[0048]上述舉例僅為更好地說明本發(fā)明的技術(shù)方案,而非對本發(fā)明的限制,本領(lǐng)域技術(shù)人員應(yīng)該理解,任何基于當(dāng)前顯示屏幕的數(shù)據(jù)量加載周邊屏幕的數(shù)據(jù)量的方法。均應(yīng)包含在本發(fā)明的周邊屏幕的顯示范圍內(nèi)。
[0049]在本發(fā)明的另一個實施例中,通過統(tǒng)計用戶對屏幕顯示地圖的歷史操作習(xí)慣,例如用戶對屏幕顯示地圖進(jìn)行平移的頻率和速度、縮小放大地圖的頻率和速度預(yù)測需要預(yù)加載離線包緩存的數(shù)據(jù)量和內(nèi)容。例如,如果用戶習(xí)慣于快速平移瀏覽地圖,則需要加大預(yù)加載離線包緩存的數(shù)據(jù)量。如果用戶習(xí)慣于用放大縮小地圖的方式查看細(xì)節(jié),則需要預(yù)加載當(dāng)前屏幕顯示地圖比例尺附近的其他比例的地圖數(shù)據(jù)。例如當(dāng)前顯示比例尺為500(米):1,則在預(yù)加載離線包緩存時可以同時加載當(dāng)前位置200(米):I和1(公里):I比例尺的地圖數(shù)據(jù)。
[0050]在本發(fā)明的另一個實施例中,還可以通過屏幕顯示地圖的狀態(tài)來預(yù)測需要預(yù)加載的地圖數(shù)據(jù)。例如當(dāng)前顯示的地圖是導(dǎo)航狀態(tài),則根據(jù)行駛速度、方向結(jié)合規(guī)劃的路線可以預(yù)測將用到的地圖數(shù)據(jù),可以在更新離線包緩存時預(yù)先加載將經(jīng)過的路線方向上的地圖數(shù)據(jù)。
[0051]圖3為本公開實施例提供的一種地圖加載性能優(yōu)化的裝置的結(jié)構(gòu)示意圖。參見圖3,包括:
[0052]離線包緩存201,用于存儲預(yù)先加載的離線包地圖數(shù)據(jù);
[0053]更新單元202,用于根據(jù)當(dāng)前顯示的地圖數(shù)據(jù)和所述離線包緩存中已存儲的地圖數(shù)據(jù),更新所述離線包緩存。
[0054]加載單元203,用以在每次加載地圖時,基于本次加載的地圖中出現(xiàn)的地圖數(shù)據(jù)優(yōu)先在離線包緩存201中已存儲的地圖數(shù)據(jù)中查找相匹配的地圖數(shù)據(jù),并加載該匹配的地圖數(shù)據(jù),如果在離線包緩存201找不到需要的地圖數(shù)據(jù),則從離線包進(jìn)行解包和查詢或者在線請求地圖數(shù)據(jù)。并且指示更新單元202更新離線包緩存201。
[0055]所述加載單元203在地圖的加載過程中,基于當(dāng)前瀏覽地圖的區(qū)域或者用戶當(dāng)前定位的區(qū)域以及地圖顯示的比例尺,從本地緩存、離線包或者服務(wù)器檢索并獲取地圖數(shù)據(jù),再根據(jù)獲取到的地圖數(shù)據(jù)繪制本次加載的地圖。本地緩存、離線包以及服務(wù)器作為地圖數(shù)據(jù)的三個來源是按照上述次序的優(yōu)先級依次進(jìn)行調(diào)取的。例如,優(yōu)先從本地緩存中獲取地圖數(shù)據(jù)。如果本地緩存中沒有地圖數(shù)據(jù)則從已經(jīng)下載并存儲在本地存儲器中的離線包中獲取地圖數(shù)據(jù)。具體來說,需要對離線包進(jìn)行解壓縮,并檢索出所需的地圖數(shù)據(jù)。如果沒有預(yù)先下載的離線包,則需要通過網(wǎng)絡(luò)訪問服務(wù)器以獲得未下載的離線包的數(shù)據(jù)。在有離線包并且需要從離線包獲取地圖數(shù)據(jù)的情況下,由于通常的地圖平移放大縮小操作,有90%概率上會命中同一個的離線包的數(shù)據(jù),而傳統(tǒng)的地圖數(shù)據(jù)加載方法每次從離線包查找數(shù)據(jù)時都是重新打開離線包文件,建立索引查找,這樣導(dǎo)致數(shù)據(jù)輸入輸出較頻繁。
[0056]為了減少對同一離線包的解壓縮和檢索操作。本發(fā)明的加載單元203在加載當(dāng)前屏幕的離線包時,基于本次加載的當(dāng)前屏幕顯示所需的地圖數(shù)據(jù),多讀取屏幕顯示所需地圖數(shù)據(jù)附近的地圖數(shù)據(jù),由更新單元202更新至離線包緩存201中,待下次需要從離線數(shù)據(jù)包中加載數(shù)據(jù)時,優(yōu)先從離線包緩存201中進(jìn)行加載,這樣就不需要對同一離線包進(jìn)行反復(fù)的檢索和解壓縮操作。
[0057]所述添加至離線包緩存201的地圖數(shù)據(jù)是在選中的離線包中當(dāng)前顯示所需的地圖數(shù)據(jù)之前和之后大小在500K-2M字節(jié)范圍內(nèi)的數(shù)據(jù)段。
[0058]在另一個實施例中,也可以在加載當(dāng)前顯示地圖數(shù)據(jù)的同時,多加載當(dāng)前顯示地圖周圍未顯示的多個屏幕大小的地圖數(shù)據(jù)到離線包緩存201中,需要緩存到離線包緩存的地圖數(shù)據(jù)例如包括當(dāng)前屏幕顯示地圖周邊的8個屏的地圖數(shù)據(jù),分別為上、中、下、左上、左下、右上、右下的8屏地圖數(shù)據(jù)。
[0059]例如:在地圖上搜索“北京大學(xué)”和顯示“北京大學(xué)”周邊的地圖時,離線包里自動將周邊的“清華大學(xué)”,“中關(guān)村”等等8個方位的大小在500K-2M字節(jié)的未顯示的外圍地圖數(shù)據(jù)存儲在離線包緩存201中。待下次移動當(dāng)前顯示的地圖到“清華大學(xué)”時,便可很快地優(yōu)先從離線包緩存中獲取。
[0060]應(yīng)當(dāng)注意,上述舉例僅是為了更好地說明本發(fā)明的技術(shù)方案,而非對本發(fā)明的限制。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,任何用戶在使用與本發(fā)明功能相關(guān)的應(yīng)用時對于離線包中的緩存信息的限制,均包含在本發(fā)明離線包緩存的范圍內(nèi)。
[0061]由于離線包緩存的存儲空間可以是預(yù)先固定分配的內(nèi)存空間,當(dāng)在離線包緩存中加載不到所需的數(shù)據(jù)時,更新單元202重新從離線包中獲取當(dāng)前屏幕顯示所需的地圖數(shù)據(jù),并且同時更新離線包緩存,將當(dāng)前屏幕顯示所需的地圖數(shù)據(jù)周圍的未顯示地圖數(shù)據(jù)重新加載到離線包緩存201中。
[0062]具體的,所述更新單元202更新離線包緩存201之前還包括:
[0063]基于所述本次加載的當(dāng)前屏幕、所述緩存中已存儲的地圖數(shù)據(jù)的存儲時間及所述緩存的容量,刪除所述離線緩存中已存儲的地圖數(shù)據(jù)的存儲時間超過預(yù)設(shè)時間的地圖數(shù)據(jù)。所述預(yù)設(shè)時間通常為5-10分鐘,即刪除離線包緩存中存儲時間超過該時間的地圖數(shù)據(jù)。
[0064]在本發(fā)明的一個實施例中,利用離線包數(shù)據(jù)的連續(xù)性,同一級別地圖上鄰近的數(shù)據(jù)存儲位置也在同一區(qū)域,每次查找離線包的時候我們可以多讀取當(dāng)前位置的前后各500k-2M字節(jié),優(yōu)選為IM字節(jié),的內(nèi)容到內(nèi)存緩存,以便下次查找相鄰數(shù)據(jù)時直接從內(nèi)存中讀取,減少數(shù)據(jù)輸入輸出次數(shù),提升數(shù)據(jù)讀取性能。
[0065]在上一實施例中,是在有離線包的情況下,避免了每次查找離線包,通過多讀取若干屏幕的數(shù)據(jù)內(nèi)容到離線包緩存,以便下次查找相鄰數(shù)據(jù)時直接從內(nèi)存中讀取,減少數(shù)據(jù)輸入輸出次數(shù),提升數(shù)據(jù)讀取性能。而在本實施例中,減少數(shù)據(jù)輸入輸出次數(shù),提升數(shù)據(jù)讀取性能。具體的,根據(jù)當(dāng)前的地圖數(shù)據(jù),判斷當(dāng)前屏幕顯示地圖的數(shù)據(jù)量,確定預(yù)加載的周邊未顯示地圖的數(shù)據(jù)量。
[0066]作為優(yōu)選方案之一,參照圖3所示的實施例中的更新單元202還包括一個判斷單元(未示出),用于判斷當(dāng)前顯示屏幕的數(shù)據(jù)量加載周邊屏幕的數(shù)據(jù)量。
[0067]例如:用戶搜索市中心的地理位置,由于市中心建筑比較多,信息量大,則在離線包緩存中將預(yù)加載2M字節(jié)左右的地圖數(shù)據(jù)。而如果用戶搜索郊區(qū)的地理位置,則在離線包緩存中將預(yù)加載幾百K左右的地圖數(shù)據(jù)。
[0068]上述舉例僅為更好地說明本發(fā)明的技術(shù)方案,而非對本發(fā)明的限制,本領(lǐng)域技術(shù)人員應(yīng)該理解,任何基于當(dāng)前顯示屏幕的數(shù)據(jù)量加載周邊屏幕的數(shù)據(jù)量的方法。均應(yīng)包含在本發(fā)明的周邊屏幕的顯示范圍內(nèi)。
[0069]在本發(fā)明的另一個實施例中,通過統(tǒng)計用戶的歷史操作習(xí)慣,例如用戶對屏幕顯示地圖進(jìn)行平移的頻率和速度、縮小放大地圖的頻率和速度預(yù)測需要預(yù)加載離線包緩存的數(shù)據(jù)量和內(nèi)容。例如,如果用戶習(xí)慣于快速平移瀏覽地圖,則需要加大預(yù)加載離線包緩存的數(shù)據(jù)量。如果用戶習(xí)慣于用放大縮小地圖的方式查看細(xì)節(jié),則需要預(yù)加載當(dāng)前屏幕顯示地圖比例尺附近的其他比例的地圖數(shù)據(jù)。例如當(dāng)前顯示比例尺為500(米):1,則在預(yù)加載離線包緩存時可以同時加載當(dāng)前位置200(米):I和1(公里):I比例尺的地圖數(shù)據(jù)。
[0070]在本發(fā)明的另一個實施例中,還可以通過屏幕顯示地圖的狀態(tài)來預(yù)測需要預(yù)加載的地圖數(shù)據(jù)。例如當(dāng)前顯示的地圖是導(dǎo)航狀態(tài),則根據(jù)行駛速度、方向結(jié)合規(guī)劃的路線可以預(yù)測將用到的地圖數(shù)據(jù),可以在更新離線包緩存201時預(yù)先加載將經(jīng)過的路線方向上的地圖數(shù)據(jù)。
[0071]上述舉例僅為更好地說明本發(fā)明的技術(shù)方案,而非對本發(fā)明的限制,本領(lǐng)域技術(shù)人員應(yīng)該理解,任何基于當(dāng)前屏幕顯示地圖的數(shù)據(jù)量加載周邊未顯示地圖的地圖數(shù)據(jù)到離線包緩存201的方案。均應(yīng)包含在本發(fā)明的范圍內(nèi)。
[0072]對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
【權(quán)利要求】
1.一種地圖加載性能優(yōu)化的方法,包括: 判斷當(dāng)前屏幕顯示地圖狀態(tài)的改變; 如果地圖狀態(tài)改變,則啟動地圖數(shù)據(jù)加載;以及 在地圖數(shù)據(jù)加載時優(yōu)先從離線包緩存中獲取需要加載的地圖數(shù)據(jù),其中所述離線包緩存中存儲與當(dāng)前屏幕顯示的地圖相關(guān)的部分離線包數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其中需要加載當(dāng)前屏幕顯示地圖相關(guān)的離線包時,基于本次加載的當(dāng)前屏幕顯示所需的地圖數(shù)據(jù),額外將屏幕顯示所需地圖數(shù)據(jù)附近的地圖數(shù)據(jù)緩存到離線包緩存中。
3.根據(jù)權(quán)利要求2所述的方法,其中所述緩存到離線包緩存的地圖數(shù)據(jù)是在當(dāng)前屏幕顯示地圖相關(guān)的選中離線包中,在當(dāng)前顯示所需的地圖數(shù)據(jù)之前和之后大小在500K-2M字節(jié)范圍內(nèi)的數(shù)據(jù)段。
4.根據(jù)權(quán)利要求2所述的方法,其中在加載當(dāng)前顯示地圖數(shù)據(jù)的同時,額外將當(dāng)前顯示地圖周圍未顯示的多個屏幕大小的地圖數(shù)據(jù)到離線包緩存中。
5.根據(jù)權(quán)利要求2所述的方法,其中需要緩存到離線包緩存的地圖數(shù)據(jù)包括當(dāng)前屏幕顯示地圖周邊的8個屏的地圖數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的方法,其中當(dāng)在離線包緩存中加載不到所需的數(shù)據(jù)時,重新從離線包中獲取當(dāng)前屏幕顯示所需的地圖數(shù)據(jù),并且同時更新離線包緩存,將當(dāng)前屏幕顯示所需的地圖數(shù)據(jù)周圍的未顯示地圖數(shù)據(jù)重新加載到離線包緩存中。
7.根據(jù)權(quán)利要求6所述的方法,其中在更新離線包緩存時,額外讀取當(dāng)前屏幕顯示地圖對應(yīng)離線包中數(shù)據(jù)位置的前后各500k-2M字節(jié)的數(shù)據(jù)段到內(nèi)存緩存。
8.根據(jù)權(quán)利要求6所述的方法,其中在更新離線包緩時,判斷當(dāng)前顯示屏幕的數(shù)據(jù)量,并基于判斷結(jié)果確定需要緩存到離線包緩存中的數(shù)據(jù)量。
9.根據(jù)權(quán)利要求6所述的方法,其中還包括基于用戶對屏幕顯示地圖的歷史操作習(xí)慣,預(yù)測需要預(yù)加載離線包緩存的數(shù)據(jù)量和內(nèi)容。
10.根據(jù)權(quán)利要求6所述的方法,其中通過屏幕顯示地圖的狀態(tài)來預(yù)測需要預(yù)加載的地圖數(shù)據(jù)。
11.一種地圖加載性能優(yōu)化的裝置,包括: 用于存儲與當(dāng)前屏幕顯示的地圖相關(guān)的部分離線包數(shù)據(jù)的離線包緩存; 用于在地圖狀態(tài)改變時進(jìn)行地圖數(shù)據(jù)加載的單元; 用于更新離線包緩存的單元;以及 其中,所述用于地圖數(shù)據(jù)加載的單元在地圖數(shù)據(jù)加載時優(yōu)先從離線包緩存中獲取需要加載的地圖數(shù)據(jù)。
12.根據(jù)權(quán)利要求1所述的裝置,其中所述用于更新離線包緩存的單元在需要加載當(dāng)前屏幕顯示地圖相關(guān)的離線包時,基于本次加載的當(dāng)前屏幕顯示所需的地圖數(shù)據(jù),額外將屏幕顯示所需地圖數(shù)據(jù)附近的地圖數(shù)據(jù)緩存到離線包緩存中。
13.根據(jù)權(quán)利要求12所述的裝置,其中所述緩存到離線包緩存的地圖數(shù)據(jù)是在當(dāng)前屏幕顯示地圖相關(guān)的選中離線包中,在當(dāng)前顯示所需的地圖數(shù)據(jù)之前和之后大小在500K-2M字節(jié)范圍內(nèi)的數(shù)據(jù)段。
14.根據(jù)權(quán)利要求12所述的裝置,其中在加載當(dāng)前顯示地圖數(shù)據(jù)的同時,所述用于更新離線包緩存的單元額外將當(dāng)前顯示地圖周圍未顯示的多個屏幕大小的地圖數(shù)據(jù)到離線包緩存中。
15.根據(jù)權(quán)利要求12所述的裝置,其中需要緩存到離線包緩存的地圖數(shù)據(jù)包括當(dāng)前屏幕顯示地圖周邊的8個屏的地圖數(shù)據(jù)。
16.根據(jù)權(quán)利要求11所述的裝置,其中用于地圖數(shù)據(jù)加載的單元在離線包緩存中加載不到所需的數(shù)據(jù)時,重新從離線包中獲取當(dāng)前屏幕顯示所需的地圖數(shù)據(jù),并且所述用于更新離線包緩存的單元同時更新離線包緩存,將當(dāng)前屏幕顯示所需的地圖數(shù)據(jù)周圍的未顯示地圖數(shù)據(jù)重新加載到離線包緩存中。
17.根據(jù)權(quán)利要求16所述的裝置,其中所述用于更新離線包緩存的單元額外讀取當(dāng)前屏幕顯示地圖對應(yīng)離線包中數(shù)據(jù)位置的前后各500k-2M字節(jié)的數(shù)據(jù)段到內(nèi)存緩存。
18.根據(jù)權(quán)利要求16所述的裝置,其中所述用于更新離線包緩存的單元判斷當(dāng)前顯示屏幕的數(shù)據(jù)量,并基于判斷結(jié)果確定需要緩存到離線包緩存中的數(shù)據(jù)量。
19.根據(jù)權(quán)利要求16所述的裝置,其中所述用于更新離線包緩存的單元基于用戶對屏幕顯示地圖的歷史操作習(xí)慣,預(yù)測需要預(yù)加載離線包緩存的數(shù)據(jù)量和內(nèi)容。
20.根據(jù)權(quán)利要求16所述的裝置,其中用于更新離線包緩存的單元通過屏幕顯示地圖的狀態(tài)來預(yù)測需要預(yù)加載的地圖數(shù)據(jù)。
【文檔編號】G06F17/30GK104252371SQ201410449693
【公開日】2014年12月31日 申請日期:2014年9月4日 優(yōu)先權(quán)日:2014年9月4日
【發(fā)明者】劉振桂, 陳雪, 陽慧蓉, 彭海波 申請人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司