技術(shù)領(lǐng)域
本發(fā)明涉及電子地圖技術(shù)領(lǐng)域,具體涉及一種控制電子地圖縮放的裝置和控制電子地圖縮放的方法。
背景技術(shù):
目前電子地圖客戶端,在根據(jù)使用者的縮小地圖的指令縮小地圖(參閱百度地圖、騰訊地圖等電子地圖網(wǎng)絡(luò)客戶端,點擊縮小按鈕即“-”按鈕,可知電子地圖技術(shù)領(lǐng)域中縮小地圖表示在相同的電子地圖顯示范圍內(nèi)顯示的地圖范圍大,地理細節(jié)更粗略)時,需要加載與當前顯示級別不同的較高級別的瓦片,由于需要向服務(wù)器請求瓦片以及對瓦片進行圖像渲染等處理,所以在縮小電子地圖時,因為需要較多的時間所以不能及時顯示一些瓦片,電子地圖窗口中會存在空白;網(wǎng)絡(luò)性能不佳時,電子地圖的空白更明顯。而且在電子地圖級別之間的切換非常明顯。
技術(shù)實現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種控制電子地圖縮放的裝置和相應(yīng)的控制電子地圖縮放的方法。
依據(jù)本發(fā)明的一個方面,提供了一種控制電子地圖縮放的裝置,該裝置包括:
目標瓦片運算單元,適于在接收到縮小地圖的指令時,確定縮小到的目標顯示級別,查找出目標顯示級別中需顯示的多個目標瓦片;其中,目標顯示級別比當前顯示級別高;第一加載單元,適于按照當前顯示級別和目標顯示級別之間的級別差加載并縮小顯示當前顯示的瓦片;預(yù)加載瓦片運算單元,適于選擇預(yù)加載顯示級別,查找出預(yù)加載顯示級別中邊緣區(qū)域需加載的預(yù)加載瓦片;第二加載單元,適于按照優(yōu)先順序獲取預(yù)加載瓦片和目標瓦片,按照預(yù)加載顯示級別和目標顯示級別之間的級別差加載并放大顯示預(yù)加載瓦片;當獲取到目標瓦片后,加載并顯示所述目標瓦片以替換對應(yīng)位置的縮小的當前顯示的瓦片和放大的預(yù)加載瓦片。
可選地,所述預(yù)加載瓦片運算單元,適于選擇比目標顯示級別高的預(yù)加載顯示級別,所述預(yù)加載瓦片所表示的地圖范圍包括除了當前顯示的瓦片所表示的地圖范圍之外由所述多個目標瓦片所表示的地圖范圍,且各預(yù)加載瓦片所對應(yīng)的地理面積為各目標瓦片所對應(yīng)的地理面積的n倍,n=4k,k為自然數(shù),表示預(yù)加載顯示級別和目標顯示級別之間的級別差。
可選地,所述第一加載單元,適于將當前顯示的瓦片的橫向?qū)挾群涂v向高度均縮小為1/p顯示,其中,p=2q,q為自然數(shù),表示目標顯示級別和當前顯示級別之間的級別差;所述第二加載單元,適于將各個預(yù)加載瓦片的橫向?qū)挾群涂v向高度均放大m倍顯示,其中,m=2k,k為自然數(shù),表示預(yù)加載顯示級別和目標顯示級別之間的級別差。
可選地,該裝置還包括:緩存單元,適于設(shè)置本地緩存,以及將已顯示的瓦片保存在本地緩存中。
可選地,在所述緩存單元將已顯示的瓦片保存在本地緩存中時,若本地緩存的容量不足,則所述緩存單元從本地緩存中移除最近最少使用的瓦片。
可選地,所述第二加載單元,適于判斷所述預(yù)加載瓦片和目標瓦片是否在本地緩存中,若判斷為是,則從本地緩存中讀取預(yù)加載瓦片和目標瓦片,若判斷為否,則從服務(wù)器下載預(yù)加載瓦片和目標瓦片。
可選地,所述第二加載單元,在加載目標瓦片的同時,增加縮小的當前顯示的瓦片和放大的預(yù)加載瓦片的透明度;當加載目標瓦片的操作完成時,移除縮小的當前顯示的瓦片和放大的預(yù)加載瓦片以及顯示目標瓦片。
可選地,所述目標瓦片運算單元,適于根據(jù)地圖可視區(qū)域的縮小中心點的地理位置坐標及地圖的目標顯示級別,換算得到縮小中心點的像素坐標;根據(jù)地圖的目標顯示級別,得到需顯示的單個目標瓦片的像素尺寸;根據(jù)地圖可視區(qū)域的像素尺寸和縮小中心點的像素坐標,得到地圖可視區(qū)域的兩個相對的頂點的像素坐標;根據(jù)地圖可視區(qū)域的兩個相對的頂點的像素坐標和需顯示的單個目標瓦片的像素尺寸得到可視區(qū)域內(nèi)的目標瓦片。
根據(jù)本發(fā)明的另一方面,提供了一種控制電子地圖縮放的方法,其中,該方法包括:在接收到縮小地圖的指令時,確定縮小到的目標顯示級別,查找出目標顯示級別中需顯示的多個目標瓦片;其中,目標顯示級別比當前顯示級別高;按照當前顯示級別和目標顯示級別之間的級別差加載并縮小顯示當前顯示的瓦片;選擇預(yù)加載顯示級別,查找出預(yù)加載顯示級別中邊緣區(qū)域需加載的預(yù)加載瓦片;按照優(yōu)先順序獲取預(yù)加載瓦片和目標瓦片,按照預(yù)加載顯示級別和目標顯示級別之間的級別差加載并放大顯示預(yù)加載瓦片;當獲取到目標瓦片后,加載并顯示所述目標瓦片以替換對應(yīng)位置的縮小的當前顯示的瓦片和放大的預(yù)加載瓦片。
可選地,所述預(yù)加載顯示級別比目標顯示級別高,所述預(yù)加載瓦片所表示的地圖范圍包括除了當前顯示的瓦片所表示的地圖范圍之外由所述多個目標瓦片所表示的地圖范圍,且各預(yù)加載瓦片所對應(yīng)的地理面積為各目標瓦片所對應(yīng)的地理面積的n倍,n=4k,k為自然數(shù),表示預(yù)加載顯示級別和目標顯示級別之間的級別差。
可選地,所述按照當前顯示級別和目標顯示級別之間的級別差加載并縮小顯示當前顯示的瓦片,包括:將當前顯示的瓦片的橫向?qū)挾群涂v向高度均縮小為1/p顯示,其中,p=2q,q為自然數(shù),表示目標顯示級別和當前顯示級別之間的級別差;所述按照預(yù)加載顯示級別和目標顯示級別之間的級別差加載并放大顯示預(yù)加載瓦片,包括:將各個預(yù)加載瓦片的橫向?qū)挾群涂v向高度均放大m倍顯示,其中,m=2k,k為自然數(shù),表示預(yù)加載顯示級別和目標顯示級別之間的級別差。
可選地,該方法還包括:設(shè)置本地緩存;將已顯示的瓦片保存在本地緩存中。
可選地,該方法還包括:在將已顯示的瓦片保存在本地緩存中時,若本地緩存的容量不足,則從本地緩存中移除最近最少使用的瓦片。
可選地,所述按照優(yōu)先順序獲取預(yù)加載瓦片和目標瓦片具體包括:判斷所述預(yù)加載瓦片和目標瓦片是否在本地緩存中,若判斷為是,則從本地緩存中讀取預(yù)加載瓦片和目標瓦片,若判斷為否,則從服務(wù)器下載預(yù)加載瓦片和目標瓦片。
可選地,所述加載并顯示所述目標瓦片以替換對應(yīng)位置的縮小的當前顯示的瓦片和放大的預(yù)加載瓦片,具體包括:在加載目標瓦片的同時,增加縮小的當前顯示的瓦片和放大的預(yù)加載瓦片的透明度;當加載目標瓦片的操作完成時,移除縮小的當前顯示的瓦片和放大的預(yù)加載瓦片以及顯示目標瓦片。
可選地,所述查找出目標顯示級別中需顯示的多個目標瓦片,包括:根據(jù)地圖可視區(qū)域的縮小中心點的地理位置坐標及地圖的目標顯示級別,換算得到縮小中心點的像素坐標;根據(jù)地圖的目標顯示級別,得到需顯示的單個目標瓦片的像素尺寸;根據(jù)地圖可視區(qū)域的像素尺寸和縮小中心點的像素坐標,得到地圖可視區(qū)域的兩個相對的頂點的像素坐標;根據(jù)地圖可視區(qū)域的兩個相對的頂點的像素坐標和需顯示的單個目標瓦片的像素尺寸得到可視區(qū)域內(nèi)的目標瓦片。
根據(jù)本發(fā)明的控制電子地圖縮放的裝置和控制電子地圖縮放的方法可以通過選擇預(yù)加載顯示級別和加載并放大顯示預(yù)加載瓦片,快速地顯示模糊的預(yù)加載瓦片,以及加載并縮小顯示當前顯示的瓦片,由此解決了現(xiàn)有技術(shù)在縮小電子地圖時,因為需要較多的時間所以不能及時顯示一些瓦片,電子地圖窗口中會存在較多空白的問題,達到降低縮小電子地圖時電子地圖窗口中存在空白的概率的效果。通過將預(yù)加載瓦片加載并放大顯示模糊的預(yù)加載瓦片,以及在獲取到目標瓦片后,加載并顯示目標瓦片以替換對應(yīng)位置的縮小的當前顯示的瓦片和放大的預(yù)加載瓦片,使地圖級別之間的切換不明顯。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明一個實施例的控制電子地圖縮放的方法的流程圖;
圖2示出了如圖1所示的步驟S100的詳細的流程圖;
圖3示出了如圖1所示的步驟S500的詳細的流程圖;
圖4示出了根據(jù)本發(fā)明第一實施例的控制電子地圖縮放的裝置的框圖;
圖5示出了根據(jù)本發(fā)明第二實施例的控制電子地圖縮放的裝置的框圖;以及
圖6示出了根據(jù)本發(fā)明而實現(xiàn)的電子地圖客戶端的示意圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
本發(fā)明的技術(shù)構(gòu)思主要在于,在接收到縮小地圖的指令時,確定目標顯示級別和預(yù)加載顯示級別,查找出需顯示的目標瓦片以及預(yù)加載顯示級別中邊緣區(qū)域(當前顯示的瓦片周邊新增的地圖范圍)需加載的預(yù)加載瓦片。由于預(yù)加載瓦片的數(shù)目比相應(yīng)的目標瓦片的數(shù)目少(例如一張預(yù)加載瓦片所表示的地圖范圍相當于較低級別的四張或十六張或更多張目標瓦片所表示的地圖范圍),所以由服務(wù)器下載預(yù)加載瓦片和加載預(yù)加載瓦片所需要的時間比使用現(xiàn)有技術(shù)由服務(wù)器下載目標瓦片和加載目標瓦片所需要的時間短,通過將預(yù)加載瓦片加載并放大顯示模糊的預(yù)加載瓦片,以及在獲取到目標瓦片后,加載并顯示目標瓦片以替換對應(yīng)位置的放大預(yù)加載瓦片,降低縮小地圖時電子地圖窗口存在空白的概率。通過將預(yù)加載瓦片加載并放大顯示模糊的預(yù)加載瓦片、加載并縮小顯示當前顯示的瓦片,以及在獲取到目標瓦片后,加載并顯示目標瓦片以替換對應(yīng)位置的縮小的當前顯示的瓦片和放大的預(yù)加載瓦片,電子地圖表現(xiàn)為由模糊到清楚的顯示過程,使地圖級別之間的切換不明顯。
需要說明的是,電子地圖瓦片,即柵格地圖中的圖片,這些圖片按一定規(guī)則,拼接成一個完整的電子地圖,將電子地圖縮小,會顯示較高級別的瓦片,本領(lǐng)域中較高級別的單個瓦片所表示的地圖范圍比較低級別的單個瓦片所表示的地圖范圍大,例如,相鄰級別中較高級別的一張瓦片相當于較低級別四張瓦片所表示的地圖范圍,級別差為二的兩個級別中,較高級別的一張瓦片相當于較低級別十六張瓦片所表示的地圖范圍。
圖1示出了根據(jù)本發(fā)明一個實施例的控制電子地圖縮放的方法的流程圖。該方法包括如下步驟S100至步驟S400:
S100、在接收到縮小地圖的指令時,確定縮小到的目標顯示級別,查找出目標顯示級別中需顯示的多個目標瓦片;其中,目標顯示級別比當前顯示級別高。其中,本領(lǐng)域技術(shù)人員能夠了解的是,目標顯示級別是根據(jù)使用者輸入的縮小地圖的指令而定的,換言之,目標顯示級別是操作完成之后電子地圖的顯示級別。本領(lǐng)域中將地圖縮小,會顯示較高級別的瓦片,較高級別的瓦片所表示的地圖范圍比較低級別瓦片所表示的地圖范圍大,因此目標顯示級別比當前的顯示級別高。查找目標瓦片的方法,可以是參照如圖2所示的方法,根據(jù)地圖可視區(qū)域的中心點的地理位置坐標及目標顯示級別計算目標瓦片。顯示所述目標瓦片能夠得到清晰的縮小后的電子地圖。
S200、按照當前顯示級別和目標顯示級別之間的級別差加載并縮小顯示當前顯示的瓦片。
具體地,按照當前顯示級別和目標顯示級別之間的級別差加載并縮小顯示當前顯示的瓦片,包括:將當前顯示的瓦片的橫向?qū)挾群涂v向高度均縮小為1/p顯示,其中,p=2q,q為自然數(shù),表示目標顯示級別和當前顯示級別之間的級別差。若目標顯示級別和當前顯示級別之間的級別差為1,則將當前顯示的瓦片的橫向?qū)挾群涂v向高度均縮小為1/2顯示;若目標顯示級別和當前顯示級別之間的級別差為2,則將當前顯示的瓦片的橫向?qū)挾群涂v向高度均縮小為1/4顯示,依此類推。
本實施例中,通過將當前顯示的瓦片縮小顯示,能夠快速地將縮小后的地圖的一部分區(qū)域快速地模糊顯示,周邊的地圖范圍通過下述的步驟S300和S400快速地以較低的清晰度進行顯示。
S300、選擇預(yù)加載顯示級別,查找出預(yù)加載顯示級別中邊緣區(qū)域需加載的預(yù)加載瓦片。
本實施例中,預(yù)加載顯示級別比目標顯示級別高,預(yù)加載瓦片所表示的地圖范圍包括除了當前顯示的瓦片所表示的地圖范圍之外由所述多個目標瓦片所表示的地圖范圍,即縮小后需要在顯示區(qū)域顯示的完整地圖范圍除去步驟S200中縮小的當前顯示瓦片所表示的地圖范圍,也就是上述的“邊緣區(qū)域”,且各預(yù)加載瓦片所對應(yīng)的地理面積為各目標瓦片所對應(yīng)的地理面積的n倍,n=4k,k為自然數(shù),表示預(yù)加載顯示級別和目標顯示級別之間的級別差。
較佳地,本實施例中,為了更詳細全面地展現(xiàn)地圖上的信息,電子地圖的保存采用分級瓦片機制,將地圖分為多個層級來保存,每個層級下存放相應(yīng)的柵格地圖瓦片,以兩相鄰顯示級別下的瓦片為例,顯示級別低的一顯示級別下的四個相鄰?fù)咂?即2×2的呈“田”字形的四個相鄰?fù)咂?對應(yīng)于顯示級別高的一顯示級別下的一個瓦片;以級別差為二的兩層瓦片為例,顯示級別低的一顯示級別下的十六個相鄰?fù)咂?即4×4的十六個相鄰?fù)咂?對應(yīng)于顯示級別高的一顯示級別下的一個瓦片。本實施例中,查找預(yù)加載瓦片的方法,可以是參照如圖2所示的方法,根據(jù)地圖可視區(qū)域的縮小中心點的地理位置坐標及預(yù)加載顯示級別計算預(yù)加載瓦片,也可以是利用與目標瓦片的對應(yīng)關(guān)系根據(jù)目標瓦片的編號通過除法取整運算得到預(yù)加載瓦片的編號。本實施例中,由于每個預(yù)加載瓦片對應(yīng)多個目標瓦片,所以所述預(yù)加載瓦片所表示的地圖范圍可能大于所述多個目標瓦片所表示的地圖范圍。
S400、按照優(yōu)先順序獲取預(yù)加載瓦片和目標瓦片,按照預(yù)加載顯示級別和目標顯示級別之間的級別差加載并放大顯示預(yù)加載瓦片。通過首先顯示模糊的放大預(yù)加載瓦片,加載速度快,減小了在電子地圖上顯示空白瓦片的概率。
本實施例中,按照預(yù)加載顯示級別和目標顯示級別之間的級別差加載并放大顯示預(yù)加載瓦片,包括:將各個預(yù)加載瓦片的橫向?qū)挾群涂v向高度均放大m倍顯示,其中,m=2k,k為自然數(shù),表示預(yù)加載顯示級別和目標顯示級別之間的級別差。即,如果預(yù)加載顯示級別和目標顯示級別之間的級別差為1則將各個預(yù)加載瓦片的橫向?qū)挾群涂v向高度均放大為2倍進行顯示;如果預(yù)加載顯示級別和目標顯示級別之間的級別差為2則將各個預(yù)加載瓦片的橫向?qū)挾群涂v向高度均放大為4倍進行顯示。
S500、當獲取到目標瓦片后,加載并顯示所述目標瓦片以替換對應(yīng)位置的縮小的當前顯示的瓦片和放大的預(yù)加載瓦片。通過使用清晰的目標瓦片替換對應(yīng)位置的縮小的當前顯示的瓦片和放大的預(yù)加載瓦片,實現(xiàn)清晰顯示地圖以及地圖顯示由模糊到清晰的顯示效果。
綜合上述步驟S100、S200、S300、S400和S500,本實施例通過加載并縮小顯示當前顯示的瓦片、選擇預(yù)加載顯示級別和加載并放大顯示預(yù)加載瓦片,快速地顯示模糊的清晰度較低的預(yù)加載瓦片,降低了電子地圖顯示空白瓦片的概率。
本實施例中通過執(zhí)行步驟S300和步驟S400,能夠選擇一個比目標顯示級別高的預(yù)加載顯示級別以及顯示該預(yù)加載顯示級別中的放大預(yù)加載瓦片。通過重復(fù)地執(zhí)行步驟S300和步驟S400,也能夠選擇多個比目標顯示級別高的預(yù)加載顯示級別以及顯示多個預(yù)加載顯示級別中的放大預(yù)加載瓦片,具體實施中,可以先顯示級別較高的預(yù)加載顯示級別中的放大預(yù)加載瓦片,再顯示級別較低的預(yù)加載顯示級別中的放大預(yù)加載瓦片,同樣實現(xiàn)地圖顯示由模糊到清晰的顯示效果。另外,本領(lǐng)域技術(shù)人員應(yīng)了解,預(yù)加載顯示級別也可以是當前顯示級別。
進一步地,該方法還包括:設(shè)置本地緩存;將已顯示的瓦片保存在本地緩存中。更具體地,本實施例通過創(chuàng)建本地緩存,控制瓦片的請求頻度??s小地圖時,能夠優(yōu)先顯示已經(jīng)緩存過的瓦片,減少用戶看到空白的概率,并且利用緩存可以提高加載速度,在服務(wù)器端沒有加緩存頭的情況下,也能避免重復(fù)請求瓦片。則本實施例的該方法還包括:在將已顯示的瓦片保存在本地緩存中時,若本地緩存的容量不足,則從本地緩存中移除最近最少使用的瓦片。換言之,緩存的實現(xiàn)采用LRU(Least Recently Used,最近最少使用)策略,緩存中的瓦片超過緩存設(shè)定的容量時,會優(yōu)先淘汰最近最少使用的瓦片。
較佳地,上述步驟S300中的選擇預(yù)加載顯示級別的方法,是選擇比目標顯示級別高的數(shù)個級別,從所述各級別中選擇預(yù)加載顯示級別,具體是判斷所述各個級別中的預(yù)加載瓦片在緩存中或需要由服務(wù)器下載,選擇需要由服務(wù)器下載的瓦片數(shù)目最小的級別為預(yù)加載顯示級別從而加快從服務(wù)器下載預(yù)加載瓦片的速度,進一步地如果需要由服務(wù)器下載的瓦片數(shù)目相同,則優(yōu)先選擇等級較高的級別為預(yù)加載顯示級別從而減少需處理的預(yù)加載瓦片的數(shù)目以進一步地加快處理速度。
本實施例中,上述步驟S400的按照優(yōu)先順序獲取預(yù)加載瓦片和目標瓦片具體包括:判斷預(yù)加載瓦片和目標瓦片是否在本地緩存中,若判斷為是,則從本地緩存中讀取預(yù)加載瓦片和目標瓦片,若判斷為否,則從服務(wù)器下載預(yù)加載瓦片和目標瓦片。通過優(yōu)先獲取緩存中的瓦片,能夠提高加載速度。
圖2示出了如圖1所示的步驟S100的詳細的流程圖。步驟S100的查找出目標顯示級別中需顯示的多個目標瓦片,具體包括以下步驟:
S110、根據(jù)地圖可視區(qū)域的縮小中心點的地理位置坐標及地圖的目標顯示級別,換算得到縮小中心點的像素坐標。
根據(jù)投影原理,放大前后的兩地圖中有重疊的點表示相同的地理位置,所述縮小中心點為地圖縮小時所表示的地理位置不變的點。本實施例中的縮小中心點,在接收到使用者通過鼠標滾輪輸入的縮小地圖指令時能夠是鼠標的位置,或者在接收到使用者通過頁面按鈕(如“-”號按鈕)輸入的縮小地圖指令時能夠是地圖的中心。根據(jù)縮小中心點的地理位置坐標(即經(jīng)緯度坐標)及目標顯示級別,能夠得到縮小中心點的像素坐標(例如,X-Y坐標)。
S120、根據(jù)地圖的目標顯示級別,得到需顯示的單個目標瓦片的像素尺寸。
由上所述可知,本實施例電子地圖的保存采用分級瓦片機制,根據(jù)目標顯示級別,能夠得到單個目標瓦片的像素尺寸。
S130、根據(jù)地圖可視區(qū)域的像素尺寸和縮小中心點的像素坐標,得到地圖可視區(qū)域的兩個相對的頂點的像素坐標。
本實施例中,縮小中心點和地圖可視區(qū)域的頂點的位置關(guān)系是可知的,根據(jù)目標顯示級別,能夠得到地圖縮小后可視區(qū)域的像素尺寸,因此可以得到地圖縮小后可視區(qū)域的兩個相對的頂點的像素坐標。
所述地圖可視區(qū)域的兩個相對的頂點,能夠是左上頂點和右下頂點,或是右上頂點和左下頂點,通過相對兩個頂點就能夠確定地圖縮小后可視區(qū)域的范圍。
S140、根據(jù)地圖可視區(qū)域的兩個相對的頂點的像素坐標和需顯示的單個目標瓦片的像素尺寸得到可視區(qū)域內(nèi)的目標瓦片。
步驟S140具體包括:得到兩個相對的頂點所在的目標瓦片的橫向索引編號和縱向索引編號;選取橫向索引編號位于兩個相對的頂點所在的目標瓦片的橫向索引編號之間且縱向索引編號位于兩個相對的頂點所在的目標瓦片的縱向索引編號之間的目標瓦片,即得到地圖可視區(qū)域內(nèi)的目標瓦片。其中,所述得到兩個相對的頂點所在的目標瓦片的橫向索引編號和縱向索引編號,具體包括:對所述頂點分別利用頂點的像素坐標減去地圖的原點的像素坐標得到橫坐標的差值和縱坐標的差值,利用橫坐標的差值除以單個目標瓦片的寬度得到橫向索引編號,利用縱坐標的差值除以單個目標瓦片的高度得到縱向索引編號。
圖3示出了如圖1所示的步驟S500的詳細的流程圖。步驟S500的加載并顯示目標瓦片以替換對應(yīng)位置的放大的預(yù)加載瓦片,具體包括以下步驟:
S510、在加載目標瓦片的同時,增加縮小的當前顯示的瓦片和放大的預(yù)加載瓦片的透明度。換言之,在加載目標瓦片時,將縮小的當前顯示的瓦片和放大的預(yù)加載瓦片逐漸變得透明。
S520、當加載目標瓦片的操作完成時,移除縮小的當前顯示的瓦片和放大的預(yù)加載瓦片以及顯示目標瓦片。具體地,對應(yīng)于一個縮小的當前顯示的瓦片或一個放大的預(yù)加載瓦片的數(shù)個目標瓦片加載完成時,移除該縮小的當前顯示的瓦片或放大的預(yù)加載瓦片,顯示加載完成的數(shù)個目標瓦片,使電子地圖更清晰。
本實施例中,根據(jù)不同瀏覽器版本,提供不同的渲染機制,提高渲染瓦片性能,以保證步驟S400中的加載并放大顯示預(yù)加載瓦片操作和步驟S500中的加載并顯示目標瓦片操作的流暢性。例如,針對支持webgl接口的瀏覽器,提供WebglRenderer渲染機制;針對支持HTML5標簽Canvas的瀏覽器,提供CanvasRenderer渲染機制;針對支持CSS3的瀏覽器,提供CSSRenderer渲染機制;針對IE6、IE7、IE8等低版本瀏覽器,提供FlashRendere渲染機制;針對所有瀏覽器,提供DivRenderer渲染機制。
圖4示出了根據(jù)本發(fā)明第一實施例的控制電子地圖縮放的裝置的框圖。該裝置包括目標瓦片運算單元100、預(yù)加載瓦片運算單元200、第二加載單元300和第一加載單元400。
目標瓦片運算單元100,適于在接收到縮小地圖的指令時,確定縮小到的目標顯示級別,查找出目標顯示級別中需顯示的多個目標瓦片;其中,目標顯示級別比當前顯示級別高。其中,本領(lǐng)域技術(shù)人員能夠了解的是,目標顯示級別是根據(jù)使用者輸入的縮小地圖的指令而定的,換言之,目標顯示級別是操作完成之后電子地圖的顯示級別。具體地,本技術(shù)領(lǐng)域中將地圖縮小,會顯示較高級別的瓦片,較高級別的瓦片所表示的地圖范圍比較低級別瓦片所表示的地圖范圍大,因此目標顯示級別比當前的顯示級別高。查找目標瓦片的方法,可以是參照如圖2所示的方法,根據(jù)地圖可視區(qū)域的中心點的地理位置坐標及目標顯示級別計算目標瓦片。顯示所述目標瓦片能夠得到清晰的縮小后的電子地圖。
第一加載單元400,適于按照當前顯示級別和目標顯示級別之間的級別差加載并縮小顯示當前顯示的瓦片。具體地,第一加載單元400按照當前顯示級別和目標顯示級別之間的級別差加載并縮小顯示當前顯示的瓦片包括將當前顯示的瓦片的橫向?qū)挾群涂v向高度均縮小為1/p顯示,其中,p=2q,q為自然數(shù),表示目標顯示級別和當前顯示級別之間的級別差。若目標顯示級別和當前顯示級別之間的級別差為1,則將當前顯示的瓦片的橫向?qū)挾群涂v向高度均縮小為1/2顯示;若目標顯示級別和當前顯示級別之間的級別差為2,則將當前顯示的瓦片的橫向?qū)挾群涂v向高度均縮小為1/4顯示,依此類推。本實施例中,通過將當前顯示的瓦片縮小顯示,能夠快速地將縮小后的地圖的一部分區(qū)域快速地模糊顯示,周邊的地圖范圍通過下述的預(yù)加載瓦片運算單元200和第二加載單元300快速地以較低的清晰度進行顯示。
預(yù)加載瓦片運算單元200,適于選擇預(yù)加載顯示級別,查找出預(yù)加載顯示級別中邊緣區(qū)域需加載的預(yù)加載瓦片。本實施例中,預(yù)加載瓦片運算單元200,適于選擇比目標顯示級別高的預(yù)加載顯示級別,預(yù)加載瓦片所表示的地圖范圍包括除了當前顯示的瓦片所表示的地圖范圍之外由所述多個目標瓦片所表示的地圖范圍,即縮小后需要在顯示區(qū)域顯示的完整地圖范圍除去步驟S200中縮小的當前顯示瓦片所表示的地圖范圍,也就是上述的“邊緣區(qū)域”,且各預(yù)加載瓦片所對應(yīng)的地理面積為各目標瓦片所對應(yīng)的地理面積的n倍,n=4k,k為自然數(shù),表示預(yù)加載顯示級別和目標顯示級別之間的級別差。
第二加載單元300,適于按照優(yōu)先順序獲取預(yù)加載瓦片和目標瓦片,按照預(yù)加載顯示級別和目標顯示級別之間的級別差加載并放大顯示預(yù)加載瓦片;當獲取到目標瓦片后,加載并顯示所述目標瓦片以替換對應(yīng)位置的縮小的當前顯示的瓦片和放大的預(yù)加載瓦片。通過首先顯示模糊的放大預(yù)加載瓦片,加載速度快,減小了在電子地圖上顯示空白瓦片的概率。通過使用清晰的目標瓦片替換對應(yīng)位置的縮小的當前顯示的瓦片和放大的預(yù)加載瓦片,實現(xiàn)清晰顯示地圖以及地圖顯示由模糊到清晰的顯示效果。
本實施例中,第二加載單元300,適于將各個預(yù)加載瓦片的橫向?qū)挾群涂v向高度均放大m倍顯示,其中,m=2k,k為自然數(shù),表示預(yù)加載顯示級別和目標顯示級別之間的級別差。即,如果預(yù)加載顯示級別和目標顯示級別之間的級別差為1則將各個預(yù)加載瓦片的橫向?qū)挾群涂v向高度均放大為2倍進行顯示;如果預(yù)加載顯示級別和目標顯示級別之間的級別差為2則將各個預(yù)加載瓦片的橫向?qū)挾群涂v向高度均放大為4倍進行顯示。
本實施例中,第二加載單元300,在加載目標瓦片的同時,增加縮小的當前顯示的瓦片和放大的預(yù)加載瓦片的透明度,換言之,第二加載單元300在加載目標瓦片時,將縮小的當前顯示的瓦片和放大的預(yù)加載瓦片逐漸變得透明。進一步地,當加載目標瓦片的操作完成時,第二加載單元300移除縮小的當前顯示的瓦片和放大的預(yù)加載瓦片以及顯示目標瓦片。具體地,對應(yīng)于一個縮小的當前顯示的瓦片或一個放大的預(yù)加載瓦片的數(shù)個目標瓦片加載完成時,第二加載單元300移除該縮小的當前顯示的瓦片或放大的預(yù)加載瓦片,顯示加載完成的數(shù)個目標瓦片,使電子地圖更清晰。
本實施例中,目標瓦片運算單元100,適于根據(jù)地圖可視區(qū)域的縮小中心點的地理位置坐標及地圖的目標顯示級別,換算得到縮小中心點的像素坐標;根據(jù)地圖的目標顯示級別,得到需顯示的單個目標瓦片的像素尺寸;根據(jù)地圖可視區(qū)域的像素尺寸和縮小中心點的像素坐標,得到地圖可視區(qū)域的兩個相對的頂點的像素坐標;根據(jù)地圖可視區(qū)域的兩個相對的頂點的像素坐標和需顯示的單個目標瓦片的像素尺寸得到可視區(qū)域內(nèi)的目標瓦片。
本實施例中,目標瓦片運算單元100根據(jù)地圖可視區(qū)域的兩個相對的頂點的像素坐標和需顯示的單個目標瓦片的像素尺寸得到可視區(qū)域內(nèi)的目標瓦片的方法,具體是通過得到兩個相對的頂點所在的目標瓦片的橫向索引編號和縱向索引編號;以及選取橫向索引編號位于兩個相對的頂點所在的目標瓦片的橫向索引編號之間且縱向索引編號位于兩個相對的頂點所在的目標瓦片的縱向索引編號之間的目標瓦片,從而得到地圖可視區(qū)域內(nèi)的目標瓦片。
其中,目標瓦片運算單元100,通過對所述頂點分別利用頂點的像素坐標減去地圖的原點的像素坐標得到橫坐標的差值和縱坐標的差值,利用橫坐標的差值除以單個目標瓦片的寬度得到橫向索引編號,利用縱坐標的差值除以單個目標瓦片的高度得到縱向索引編號。
圖5示出了根據(jù)本發(fā)明第二實施例的控制電子地圖縮放的裝置的框圖。本實施例中與如圖4所示的第一實施例相似,不同之處在于,該裝置還包括:緩存單元500。
緩存單元500,適于設(shè)置本地緩存,以及將已顯示的瓦片保存在本地緩存中。更具體地,本實施例通過緩存單元500創(chuàng)建本地緩存,控制瓦片的請求頻度??s小地圖時,能夠優(yōu)先顯示已經(jīng)緩存過的瓦片,減少用戶看到空白的概率,并且利用緩存單元500可以提高加載速度,在服務(wù)器端沒有加緩存頭的情況下,也能避免重復(fù)請求瓦片。
進一步地,在緩存單元500將已顯示的瓦片保存在本地緩存中時,若本地緩存的容量不足,則緩存單元500從本地緩存中移除最近最少使用的瓦片。具體地,緩存單元500采用LRU(Least Recently Used,最近最少使用)策略,在緩存中的瓦片超過緩存設(shè)定的容量時,會優(yōu)先淘汰最近最少使用的瓦片。
進一步地,本實施例的第二加載單元300,適于判斷所述預(yù)加載瓦片和目標瓦片是否在本地緩存中,若判斷為是,則從本地緩存中讀取預(yù)加載瓦片和目標瓦片,若判斷為否,則從服務(wù)器下載預(yù)加載瓦片和目標瓦片。通過優(yōu)先獲取緩存中的瓦片,能夠提高加載速度。
圖6示出了根據(jù)本發(fā)明而實現(xiàn)的電子地圖客戶端的示意圖。通過控制電子地圖縮放的裝置和控制電子地圖縮放的方法,電子地圖客戶端在依據(jù)使用者的指示進行縮小操作時,電子地圖窗口存在空白的概率小,且電子地圖表現(xiàn)由模糊到清楚的顯示過程,使地圖級別之間的切換不明顯。
需要說明的是:
在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應(yīng)當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的控制電子地圖縮放的設(shè)備中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。