背景技術(shù):
當(dāng)今可用的許多基于地圖的應(yīng)用設(shè)計(jì)用于各種不同的設(shè)備(例如,臺(tái)式計(jì)算機(jī)、膝上型電腦、平板設(shè)備、智能電話、手持式全球位置系統(tǒng)(gps)接收器等)以及用于各種不同的目的(例如,導(dǎo)航、瀏覽、運(yùn)動(dòng)等)。大多數(shù)這些應(yīng)用基于在地圖中描述街道、公路、興趣點(diǎn)等的相對(duì)位置的地圖數(shù)據(jù)來生成對(duì)地圖的顯示。
此類應(yīng)用中使用的地圖通常是二維(2d)地圖或三維(3d)地圖。然而,大量應(yīng)用使用2d地圖,其部分原因在于對(duì)查看3d地圖的處理密集型需求。出于相同原因,使用3d地圖的應(yīng)用通常緩慢、效率低、無格式和/或簡單,以至于使得應(yīng)用沒用。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的一些實(shí)施例提供用于生成和呈現(xiàn)用于瀏覽和導(dǎo)航的沉浸式和非沉浸式3d地圖展示的新穎方法。在一些實(shí)施例中,沉浸式和非沉浸式3d地圖展示可交替地和/或順序地顯示在設(shè)備(例如,移動(dòng)設(shè)備)上,該設(shè)備具有允許用戶通過屏幕上的觸摸和手勢輸入與展示進(jìn)行交互的觸敏屏幕和多點(diǎn)觸摸界面。在其他實(shí)施例中,在不具有觸敏屏幕的設(shè)備上提供展示。
在以下所描述的一些實(shí)施例中,這些3d展示由集成的地圖繪制應(yīng)用提供,該集成的地圖繪制應(yīng)用提供若干有用的模態(tài),諸如位置瀏覽、地圖搜索、路線識(shí)別和路線導(dǎo)航操作。然而,在其他實(shí)施例中,地圖繪制應(yīng)用并不使用所有這些模態(tài)。例如,在一些實(shí)施例中,地圖繪制應(yīng)用不提供路線導(dǎo)航。
為了顯示沉浸式和非沉浸式3d地圖展示,一些實(shí)施例必須生成各種圖塊以供客戶端設(shè)備渲染來生成道路、建筑物和周圍景色。在一些實(shí)施例中,此類圖塊的實(shí)例包括用于非沉浸式3d展示的道路和建筑物圖塊,以及用于沉浸式3d展示的導(dǎo)航和建筑物圖塊。
在生成這些圖塊之前,服務(wù)器集合必須生成放置在每個(gè)圖塊中的道路、建筑物和其他幾何結(jié)構(gòu)的描述。該任務(wù)涉及多個(gè)子任務(wù),諸如(1)自各種供應(yīng)商接收地圖數(shù)據(jù),(2)處理此類數(shù)據(jù)以產(chǎn)生一維(1d)道路、(3)平滑1d道路圖、(4)定義數(shù)據(jù)以指定接合點(diǎn)、(5)生成2d道路幾何結(jié)構(gòu)和土地覆蓋物、(6)平滑2d道路幾何結(jié)構(gòu)、(7)生成關(guān)于建筑物的數(shù)據(jù)(例如,估計(jì)的高度數(shù)據(jù))、(8)使用此類數(shù)據(jù)來定義建筑物幾何結(jié)構(gòu)、(9)構(gòu)造道路幾何結(jié)構(gòu)細(xì)節(jié)(諸如島嶼、車道標(biāo)記以及道路幾何結(jié)構(gòu)之間的距離和土地覆蓋物),以及(10)識(shí)別幾何結(jié)構(gòu)邊緣節(jié)點(diǎn)特征和傳播此類特征。
一旦在地圖繪制服務(wù)側(cè)上生成圖塊,所述圖塊就由客戶端設(shè)備上的地圖繪制應(yīng)用用于將3d地圖呈現(xiàn)給客戶端設(shè)備的用戶。一些實(shí)施例的地圖繪制應(yīng)用使用各種新穎技術(shù)來在地圖正在被瀏覽時(shí)或者在地圖正在提供導(dǎo)航展示時(shí)呈現(xiàn)地圖的3d展示。例如,地圖繪制應(yīng)用根據(jù)虛擬相機(jī)的有利位置來渲染3d展示,并且使用在某些情形下自動(dòng)移動(dòng)虛擬相機(jī)(即,移動(dòng)視角渲染位置)的各種方法來實(shí)現(xiàn)所需的3d展示。當(dāng)一些實(shí)施例的地圖繪制應(yīng)用在設(shè)備即將沿路線轉(zhuǎn)彎時(shí)將虛擬相機(jī)的位置從移動(dòng)的設(shè)備的當(dāng)前位置后面的視角渲染位置移動(dòng)至當(dāng)前位置的自上而下視圖時(shí),一個(gè)此類實(shí)例發(fā)生。另一個(gè)實(shí)例是提供的放大/縮小動(dòng)畫,所述放大/縮小動(dòng)畫示出場景中的對(duì)象隨著放大操作和縮小操作而變大和收縮。
另外,在一些實(shí)施例中,地圖繪制應(yīng)用提供兩種不同類型的3d展示——沉浸式3d展示和非沉浸式3d展示。在一些實(shí)施例中的沉浸式展示不僅顯示更多幾何結(jié)構(gòu)而且還顯示在非沉浸式展示中顯示的幾何結(jié)構(gòu)的更多細(xì)節(jié)。地圖繪制應(yīng)用還提供非沉浸式展示與沉浸式展示之間的平滑過渡。
為了實(shí)現(xiàn)此類平滑過渡并生成其他新穎的效果,一些實(shí)施例的地圖繪制應(yīng)用使用新穎的圖像處理流水線(pipeline)。此流水線執(zhí)行各種預(yù)加載操作以下載、檢索和/或解壓縮可能為導(dǎo)航展示所需要的地圖圖塊,以為其渲染操作準(zhǔn)備好其渲染流水線,并且準(zhǔn)備復(fù)制流水線以在沉浸式3d展示與非沉浸式3d展示之間平滑地過渡。
上述發(fā)明內(nèi)容旨在用作對(duì)本發(fā)明的一些實(shí)施例的簡單介紹。其并非意味著對(duì)在本文檔中所公開的所有發(fā)明主題進(jìn)行介紹或概述。隨后的具體實(shí)施方式以及在具體實(shí)施方式中所參照的附圖將進(jìn)一步描述發(fā)明內(nèi)容中所述的實(shí)施例以及其他實(shí)施例。因此,為了理解該文檔所描述的所有實(shí)施例,需要全面審閱發(fā)明內(nèi)容、具體實(shí)施方式和附圖。此外,受權(quán)利要求書保護(hù)的題材不被發(fā)明內(nèi)容、具體實(shí)施方式及附圖中的示例性細(xì)節(jié)所限定,而是被所附權(quán)利要求所限定,這是因?yàn)槭軝?quán)利要求書保護(hù)的題材在不脫離本題材的實(shí)質(zhì)的情況下能夠以其他特定形式而體現(xiàn)。
附圖說明
在所附的權(quán)利要求中闡述了本發(fā)明的新穎特征。然而,出于說明的目的,在以下附圖中闡釋了本發(fā)明的若干實(shí)施例。
圖1示出了執(zhí)行本發(fā)明一些實(shí)施例的集成的地圖繪制應(yīng)用的設(shè)備的實(shí)例。
圖2示出了一些實(shí)施例的導(dǎo)航應(yīng)用如何將3d控件提供為進(jìn)入3d導(dǎo)航模式的快速機(jī)制。
圖3呈現(xiàn)了簡化的實(shí)例以示出虛擬相機(jī)的概念。圖4示出了通過收縮和展開手勢進(jìn)行的對(duì)虛擬相機(jī)的距離的調(diào)節(jié)。
圖5示出了角度可通過手勢調(diào)節(jié)的相機(jī)的一個(gè)實(shí)施例。
圖6概念性地示出了一些實(shí)施例的地圖繪制服務(wù)處理。
圖7概念性地示出了用于生成道路圖的一些實(shí)施例的過程。
圖8示出了針對(duì)地圖區(qū)域內(nèi)的道路的一些實(shí)施例的各種數(shù)據(jù)結(jié)構(gòu)。
圖9示出了針對(duì)在接合點(diǎn)處相匯的兩個(gè)路段的修改的實(shí)例。
圖10示出了為用于在接合點(diǎn)處聚集至道路中的候選者的三個(gè)路段的實(shí)例。
圖11示出了第一路段與第二路段和第三路段相交(在平面中)的情形。
圖12示出了相隔距離x、在相反的方向上平行地延伸并且具有相同名稱的兩個(gè)路段。
圖13和圖14示出了具有25mph和60mph的速度限制的類似彎折的道路。
圖15概念性地示出了用于生成將用于在客戶端地圖繪制應(yīng)用上生成道路多邊形的道路幾何結(jié)構(gòu)的一些實(shí)施例的過程。
圖16示出了執(zhí)行以平滑車道擴(kuò)展接合點(diǎn)的操作,其中道路的兩邊中的一者保持為直的(即,是“對(duì)齊的”)。
圖17示出了來自圖16的如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的平滑車道擴(kuò)展的結(jié)果。
圖18示出了執(zhí)行以平滑車道擴(kuò)展接合點(diǎn)的操作,其中道路在兩邊擴(kuò)展。
圖19示出了來自圖18的如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的平滑車道擴(kuò)展的結(jié)果。
圖20示出了當(dāng)路段之間的角度大于第一閾值角度時(shí)執(zhí)行以平滑路段幾何結(jié)構(gòu)之間的拐角的逐漸減小操作。
圖21示出了來自圖20的如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的平滑接合點(diǎn)的結(jié)果。
圖22示出了當(dāng)路段之間的角度小于第一閾值角度且大于第二閾值角度時(shí)執(zhí)行以平滑路段幾何結(jié)構(gòu)之間的拐角的投影操作。
圖23示出了來自圖22的如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的平滑接合點(diǎn)的結(jié)果。
圖24示出了當(dāng)路段之間的角度小于第一閾值角度且大于第二閾值角度時(shí)執(zhí)行以消除路段幾何結(jié)構(gòu)的多余道路的裁剪操作。
圖25示出了執(zhí)行以平滑路段幾何結(jié)構(gòu)之間的拐角的相交操作。
圖26示出了來自圖24和圖25的如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的平滑接合點(diǎn)的結(jié)果。
圖27示出了在一些實(shí)施例中執(zhí)行以平滑在符合高速公路入口匝道的特征的情形下的路段幾何結(jié)構(gòu)之間的拐角的逐漸減小操作。
圖28示出了來自圖27的如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的平滑高速公路合并接合點(diǎn)的結(jié)果。
圖29示出了接合點(diǎn)處的額外幾何結(jié)構(gòu)的生成以便在接合點(diǎn)處創(chuàng)建更逼真的圓拐角。
圖30示出了來自圖29的如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的平滑交叉口的結(jié)果。
圖31示出了在兩條道路重疊時(shí)將所述兩條道路推開。
圖32示出了在路段重疊時(shí)減小兩個(gè)路段的寬度。
圖33和圖34示出了具有兩種不同類型的中央分離帶的雙行車道。
圖35示出了兩條主干線道路的接合點(diǎn)的幾何結(jié)構(gòu)的實(shí)例。
圖36示出了來自圖35的如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的接合點(diǎn)的結(jié)果。
圖37示出了使用頂點(diǎn)注釋來指定立交橋的橋框的實(shí)例,在所述立交橋中,一條道路在另一條道路上方行進(jìn)且這些道路不形成接合點(diǎn)。
圖38示出了圖37的如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的路段的結(jié)果。
圖39示出了使用頂點(diǎn)注釋來將路段幾何結(jié)構(gòu)的邊緣指定為內(nèi)邊緣的實(shí)例,其指示不應(yīng)針對(duì)從所注釋的頂點(diǎn)起的導(dǎo)向邊緣繪制框。
圖40示出了圖39的如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的路段的結(jié)果。
圖41示出了使用頂點(diǎn)注釋來指定路段的隧道的實(shí)例,其指示應(yīng)在路段上繪制隧道。
圖42示出了圖41的如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的路段的結(jié)果。
圖43示出了使用頂點(diǎn)注釋來指定路段的一邊的人行道的實(shí)例。
圖44示出了圖43的如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的路段的結(jié)果。
圖45示出了針對(duì)一些實(shí)施例的單個(gè)頂點(diǎn)使用若干注釋的實(shí)例。
圖46示出了圖45的如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的路段的結(jié)果。
圖47示出了使用頂點(diǎn)注釋數(shù)據(jù)來改變道路幾何結(jié)構(gòu)的道路框的特性的實(shí)例。
圖48示出了圖47的如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的路段的結(jié)果。
圖49概念性地示出了一操作,該操作由一些實(shí)施例的地圖繪制服務(wù)執(zhí)行以為請求設(shè)備生成路線并將路線與導(dǎo)航指令一起提供至請求設(shè)備。
圖50概念性地示出了一過程,該過程由一些實(shí)施例的地圖繪制服務(wù)執(zhí)行以便生成并向用戶傳輸路線和交叉口數(shù)據(jù)。
圖51概念性地示出了一些實(shí)施例的用于確定接合點(diǎn)集合之間的路徑段的過程,所述接合點(diǎn)集合應(yīng)被一起當(dāng)作單個(gè)交叉口。
圖52示出了一些實(shí)施例的接合點(diǎn)的實(shí)例并示出了不需要路徑段以直角相匯或者路徑以直線繼續(xù)穿過接合點(diǎn)。
圖53示出了一些實(shí)施例的包括兩條雙行車道路徑與一條單行道的交叉口。
圖54概念性地示出了一些實(shí)施例的用于將若干接合點(diǎn)一起連結(jié)成單個(gè)交叉口并識(shí)別交叉口的支路的過程。
圖55示出了一些實(shí)施例的在具有兩條路徑的雙行車道與具有兩條路徑的雙行車道之間的共同存在的交叉口。
圖56示出了一些實(shí)施例的交叉口,其中左轉(zhuǎn)通道被定義為獨(dú)立的路徑段。
圖57示出了一些實(shí)施例的交叉口中的岔道。
圖58示出了一些實(shí)施例的具有岔道和左轉(zhuǎn)通道兩者的交叉口。
圖59示出了在一些實(shí)施例中的交叉口中的額外的雙向路徑。
圖60示出了在一些實(shí)施例中將八路徑交叉口減少成四條支路。
圖61示出了在一些實(shí)施例中將一不同的八路徑交叉口減少成五條支路。
圖62概念性地示出了一些實(shí)施例的針對(duì)點(diǎn)型交叉口的數(shù)據(jù)結(jié)構(gòu)的實(shí)例。
圖63概念性地示出了一些實(shí)施例的針對(duì)環(huán)型交叉口的數(shù)據(jù)結(jié)構(gòu)。
圖64概念性地示出了在一些實(shí)施例中將環(huán)型交叉口減少成相交數(shù)據(jù)。
圖65概念性地示出了一些實(shí)施例的用于修改交叉口數(shù)據(jù)以便提供路線的導(dǎo)航信息的過程。
圖66示出了對(duì)穿過交叉口的路線的概念性繪制、交叉口的數(shù)據(jù)結(jié)構(gòu)以及對(duì)數(shù)據(jù)結(jié)構(gòu)的修改以創(chuàng)建用于逐向?qū)Ш街噶畹男聰?shù)據(jù)結(jié)構(gòu)。
圖67概念性地示出了一過程,該過程由本發(fā)明的一些實(shí)施例執(zhí)行以用于將土地覆蓋物多邊形合并至道路多邊形。
圖68示出了將土地覆蓋物合并至道路多邊形的一個(gè)實(shí)例。
圖69概念性地示出了一過程,在一些實(shí)施例中,該過程對(duì)從兩個(gè)不同來源接收的相鄰多邊形之間的交界進(jìn)行合并。
圖70示出了本發(fā)明一些實(shí)施例的兩個(gè)階段,所述兩個(gè)階段通過合并相鄰多邊形之間的交界坐標(biāo)來解決所識(shí)別的間隙。
圖71示出了本發(fā)明一些實(shí)施例的兩個(gè)階段,所述兩個(gè)階段對(duì)圍繞所識(shí)別的重疊的多邊形的交界坐標(biāo)進(jìn)行合并。
圖72概念性地示出了一過程,該過程由本發(fā)明的一些實(shí)施例執(zhí)行以用于解決區(qū)域之間的邊界沖突。
圖73示出了解決兩個(gè)相鄰區(qū)域之間的邊界沖突的實(shí)例。
圖74概念性地示出了根據(jù)本發(fā)明一些實(shí)施例的基于路線導(dǎo)航自動(dòng)圍繞3d地圖的區(qū)域移動(dòng)的虛擬相機(jī)的實(shí)例。
圖75概念性地示出了一些實(shí)施例的用于在路線導(dǎo)航期間以動(dòng)畫方式顯示地圖視圖的過程。
圖76概念性地示出了根據(jù)本發(fā)明一些實(shí)施例的在路線導(dǎo)航期間自動(dòng)操縱3d地圖中的轉(zhuǎn)彎的虛擬相機(jī)的實(shí)例。
圖77概念性地示出了一些實(shí)施例的用于在路線導(dǎo)航的轉(zhuǎn)彎期間以動(dòng)畫方式顯示地圖視圖的過程。
圖78概念性地示出了根據(jù)本發(fā)明一些實(shí)施例的在路線導(dǎo)航期間圍繞3d地圖平移的虛擬相機(jī)的實(shí)例。
圖79概念性地示出了一些實(shí)施例的用于基于手勢輸入平移至地圖視圖側(cè)的過程。
圖80概念性地示出了由一些實(shí)施例的地圖繪制應(yīng)用提供的視角調(diào)節(jié)特征。
圖81概念性地示出了一些實(shí)施例的用于調(diào)節(jié)虛擬相機(jī)的位置的過程,該虛擬相機(jī)用于響應(yīng)于視角調(diào)節(jié)而渲染地圖視圖。
圖82概念性地示出了根據(jù)本發(fā)明一些實(shí)施例的虛擬相機(jī),該虛擬相機(jī)可沿不同弧線在不同縮放級(jí)別下移動(dòng)。
圖83概念性地示出了一些實(shí)施例的用于確定虛擬相機(jī)可沿其移動(dòng)的弧線的過程。
圖84概念性地示出了由一些實(shí)施例的地圖繪制應(yīng)用提供的特征,該特征用于維持虛擬相機(jī)在沿弧線的定義范圍內(nèi)的位置。
圖85示出了由一些實(shí)施例的地圖繪制應(yīng)用提供的縮放調(diào)節(jié)特征。
圖86概念性地示出了一些實(shí)施例的調(diào)節(jié)虛擬相機(jī)的位置的過程,該虛擬相機(jī)用于響應(yīng)于縮放級(jí)別調(diào)節(jié)而渲染地圖視圖。
圖87概念性地示出了根據(jù)本發(fā)明一些實(shí)施例的3d地圖視圖的旋轉(zhuǎn)操作。
圖88概念性地示出了根據(jù)本發(fā)明一些實(shí)施例的在激活位置指示符特征之后3d地圖視圖的旋轉(zhuǎn)操作。
圖89概念性地示出了根據(jù)本發(fā)明一些實(shí)施例的從3d地圖的2d透視圖起的3d地圖視圖的旋轉(zhuǎn)操作。
圖90概念性地示出了一些實(shí)施例的用于基于手勢輸入旋轉(zhuǎn)地圖視圖的過程。
圖91概念性地示出了一些實(shí)施例的地圖繪制應(yīng)用的實(shí)例,該地圖繪制應(yīng)用針對(duì)不同查看模式的不同縮放級(jí)別渲染3d地圖視圖。
圖92示出了虛擬相機(jī)圍繞3d地圖的被定義為由一些實(shí)施例的沉浸式查看模式查看的區(qū)域的移動(dòng)。
圖93示出了虛擬相機(jī)圍繞3d地圖的被定義為由一些實(shí)施例的非沉浸式查看模式查看的區(qū)域的移動(dòng)。
圖94概念性地示出了一些實(shí)施例的地圖繪制應(yīng)用的實(shí)例,該地圖繪制應(yīng)用針對(duì)不同查看模式的不同縮放級(jí)別渲染3d地圖視圖。
圖95概念性地示出了處理流水線,該處理流水線由一些實(shí)施例的地圖繪制應(yīng)用執(zhí)行以用于基于不同的3d地圖圖塊來渲染3d地圖視圖。
圖96概念性地示出了由一些實(shí)施例的處理流水線使用的數(shù)據(jù)結(jié)構(gòu)。
圖97概念性地示出了一些實(shí)施例的地圖繪制應(yīng)用的狀態(tài)圖。
圖98概念性地示出了處理流水線,該處理流水線由一些實(shí)施例的地圖繪制應(yīng)用執(zhí)行以便渲染用于在客戶端設(shè)備處顯示的地圖。
圖99示出了針對(duì)一些實(shí)施例將不同紋理應(yīng)用于不同類型的道路。
圖100示出了包括一條干線道路和兩條連接道路的地圖展示。
圖101示出了非沉浸式地圖展示,其示出了在地圖瀏覽視圖中以地圖圖塊渲染道路。
圖102概念性地示出了對(duì)用于地圖區(qū)域的兩個(gè)不同視圖的兩個(gè)虛擬相機(jī)實(shí)例化的控制器。
圖103概念性地示出了一些實(shí)施例的用于預(yù)加載導(dǎo)航圖塊以進(jìn)入導(dǎo)航的過程。
圖104示出了將地圖繪制應(yīng)用顯示為從地圖瀏覽的非沉浸式地圖視圖到導(dǎo)航的沉浸式地圖視圖的應(yīng)用過渡。
圖105概念性地示出了狀態(tài)圖10500,其描述了一些實(shí)施例的集成地圖繪制、搜索和導(dǎo)航應(yīng)用的不同狀態(tài)以及這些狀態(tài)之間的過渡。
圖106為移動(dòng)計(jì)算設(shè)備的架構(gòu)的實(shí)例。
圖107概念性地示出了實(shí)現(xiàn)本發(fā)明的一些實(shí)施例所利用的電子系統(tǒng)的實(shí)例。
圖108示出了根據(jù)一些實(shí)施例的地圖服務(wù)操作環(huán)境。
具體實(shí)施方式
本發(fā)明的一些實(shí)施例提供用于生成和呈現(xiàn)用于瀏覽和導(dǎo)航的沉浸式和非沉浸式3d地圖展示的新穎方法。在一些實(shí)施例中,沉浸式和非沉浸式3d地圖展示可交替地和/或順序地顯示在設(shè)備(例如,移動(dòng)設(shè)備)上,該設(shè)備具有允許用戶通過屏幕上的觸摸和手勢輸入與展示進(jìn)行交互的觸敏屏幕和多點(diǎn)觸摸界面。在其他實(shí)施例中,在不具有觸敏屏幕的設(shè)備上提供展示。
在以下所描述的一些實(shí)施例中,這些3d展示由集成的地圖繪制應(yīng)用提供,該集成的地圖繪制應(yīng)用提供若干有用的模態(tài),諸如位置瀏覽、地圖搜索、路線識(shí)別和路線導(dǎo)航操作。然而,在其他實(shí)施例中,地圖繪制應(yīng)用并不使用所有這些模態(tài)。例如,在一些實(shí)施例中,地圖繪制應(yīng)用不提供路線導(dǎo)航。
為了顯示沉浸式和非沉浸式3d地圖展示,一些實(shí)施例必須生成各種圖塊以供客戶端設(shè)備渲染來生成道路、建筑物和周圍景色。在一些實(shí)施例中,此類圖塊的實(shí)例包括用于非沉浸式3d展示的道路和建筑物圖塊,以及用于沉浸式3d展示的導(dǎo)航和建筑物圖塊。
在生成這些圖塊之前,服務(wù)器集合必須生成放置在每個(gè)圖塊中的道路、建筑物和其他幾何結(jié)構(gòu)的描述。該任務(wù)涉及多個(gè)子任務(wù),諸如(1)自各種供應(yīng)商接收地圖數(shù)據(jù),(2)處理此類數(shù)據(jù)以產(chǎn)生一維(1d)道路、(3)平滑1d道路圖、(4)定義數(shù)據(jù)以指定接合點(diǎn)、(5)生成2d道路幾何結(jié)構(gòu)和土地覆蓋物、(6)平滑2d道路幾何結(jié)構(gòu)、(7)生成關(guān)于建筑物的數(shù)據(jù)(例如,估計(jì)的高度數(shù)據(jù))、(8)使用此類數(shù)據(jù)來定義建筑物幾何結(jié)構(gòu)、(9)構(gòu)造道路幾何結(jié)構(gòu)細(xì)節(jié)(諸如島嶼、車道標(biāo)記以及道路幾何結(jié)構(gòu)之間的距離和土地覆蓋物)、以及(10)識(shí)別幾何結(jié)構(gòu)邊緣節(jié)點(diǎn)特征和傳播此類特征。
一旦在地圖繪制服務(wù)側(cè)上生成圖塊,所述圖塊就由客戶端設(shè)備上的地圖繪制應(yīng)用用于將3d地圖呈現(xiàn)給客戶端設(shè)備的用戶。一些實(shí)施例的地圖繪制應(yīng)用使用各種新穎技術(shù)來在地圖正在被瀏覽時(shí)或者在地圖正在提供導(dǎo)航展示時(shí)呈現(xiàn)地圖的3d展示。例如,地圖繪制應(yīng)用根據(jù)虛擬相機(jī)的有利位置來渲染3d展示,并且使用在某些情形下自動(dòng)移動(dòng)虛擬相機(jī)(即,移動(dòng)視角渲染位置)的各種方法來實(shí)現(xiàn)所需的3d展示。當(dāng)一些實(shí)施例的地圖繪制應(yīng)用在設(shè)備即將沿路線轉(zhuǎn)彎時(shí)將虛擬相機(jī)的位置從移動(dòng)的設(shè)備的當(dāng)前位置后面的視角渲染位置移動(dòng)至當(dāng)前位置的自上而下視圖時(shí),一個(gè)此類實(shí)例發(fā)生。另一個(gè)實(shí)例是提供的放大/縮小動(dòng)畫,所述放大/縮小動(dòng)畫示出場景中的對(duì)象隨著放大操作和縮小操作而變大和收縮。
另外,在一些實(shí)施例中,地圖繪制應(yīng)用提供兩種不同類型的3d展示——沉浸式3d展示和非沉浸式3d展示。在一些實(shí)施例中的沉浸式展示不僅顯示更多幾何結(jié)構(gòu)而且還顯示在非沉浸式展示中顯示的幾何結(jié)構(gòu)的更多細(xì)節(jié)。地圖繪制應(yīng)用還提供非沉浸式展示與沉浸式展示之間的平滑過渡。
為了實(shí)現(xiàn)此類平滑過渡并生成其他新穎的效果,一些實(shí)施例的地圖繪制應(yīng)用使用新穎的圖像處理流水線。此流水線執(zhí)行各種預(yù)加載操作以下載、檢索和/或解壓縮可能為導(dǎo)航展示所需要的地圖圖塊,以為其渲染操作準(zhǔn)備好其渲染流水線,并且準(zhǔn)備復(fù)制流水線以在沉浸式3d展示與非沉浸式3d展示之間平滑地過渡。
以下第i章節(jié)描述了本發(fā)明的一些實(shí)施例的地圖繪制應(yīng)用。第ii章節(jié)接著描述了用于生成產(chǎn)生沉浸式3d展示和非沉浸式3d展示所需要的圖塊的服務(wù)器側(cè)操作。第iii章節(jié)接著描述了用于生成沉浸式3d展示和非沉浸式3d展示的客戶端側(cè)操作。第iv章節(jié)接著描述了使用一些實(shí)施例的地圖繪制應(yīng)用的電子設(shè)備。第v章節(jié)最后描述了本發(fā)明的一些實(shí)施例使用的位置服務(wù)。
在本發(fā)明的以下具體實(shí)施方式中,提出并描述了本發(fā)明的許多細(xì)節(jié)、實(shí)例和實(shí)施例。然而,對(duì)于本領(lǐng)域的技術(shù)人員來說將清楚和顯而易見的是,本發(fā)明并不限于所示出的實(shí)施例,并且本發(fā)明可在沒有所討論的具體細(xì)節(jié)和實(shí)例的情況下被實(shí)施。
i.導(dǎo)航用戶界面
a.開始
一些實(shí)施例的導(dǎo)航應(yīng)用是集成的地圖繪制應(yīng)用的一部分,該集成的地圖繪制應(yīng)用包括若干有用的模態(tài),包括位置瀏覽、地圖搜索、路線識(shí)別和路線導(dǎo)航操作。在一些實(shí)施例中的該集成應(yīng)用(以下被稱為地圖繪制應(yīng)用、導(dǎo)航應(yīng)用或集成應(yīng)用)被定義來由具有顯示該應(yīng)用的輸出的觸敏屏幕的設(shè)備執(zhí)行。在一些實(shí)施例中,該設(shè)備具有用于允許用戶通過屏幕提供觸摸和手勢輸入來與應(yīng)用交互的多點(diǎn)觸摸界面。此類設(shè)備的實(shí)例是智能手機(jī)(例如,由appleinc.出售的
圖1示出了執(zhí)行本發(fā)明一些實(shí)施例的集成的地圖繪制應(yīng)用的設(shè)備100的實(shí)例。該圖還示出了在該應(yīng)用中發(fā)起路線導(dǎo)航的實(shí)例。該應(yīng)用具有新穎的用戶界面(ui)設(shè)計(jì),該用戶界面設(shè)計(jì)通過使用屏幕上控件的最少集合來無縫地并且協(xié)調(diào)地集成用于該應(yīng)用的不同模態(tài)中的每一者的控件,所述屏幕上控件浮在內(nèi)容的頂部上以便顯示盡可能多的內(nèi)容。另外,該群集適應(yīng)即將發(fā)生的任務(wù),從而在用戶在不同模態(tài)之間(例如,在瀏覽、搜索、路線規(guī)劃與導(dǎo)航之間)移動(dòng)時(shí),以動(dòng)畫方式調(diào)節(jié)該群集的內(nèi)容。具有自適應(yīng)本質(zhì)的該共用元件使地圖繪制應(yīng)用能夠針對(duì)不同的任務(wù)進(jìn)行優(yōu)化,同時(shí)在那些任務(wù)之間移動(dòng)時(shí)維持一致的外觀和交互模型。
圖1示出了與地圖繪制應(yīng)用的交互的六個(gè)階段105、110、115、117、119、121。第一階段105示出了設(shè)備的ui120,該設(shè)備的ui包括在任務(wù)欄區(qū)域125中和ui的一個(gè)頁面上的若干應(yīng)用的若干圖標(biāo)。該頁面上的圖標(biāo)中的一者是用于地圖繪制應(yīng)用130的圖標(biāo)。第一階段示出了通過在屏幕上的該應(yīng)用的位置處與設(shè)備屏幕的觸摸接觸進(jìn)行的地圖繪制應(yīng)用的用戶選擇。
第二階段110示出了地圖繪制應(yīng)用打開之后的設(shè)備。如該階段中所示,地圖繪制應(yīng)用的ui具有起始頁,該起始頁在一些實(shí)施例中(1)顯示設(shè)備的當(dāng)前位置的地圖,和(2)布置在頂部欄140中并作為浮動(dòng)控件的若干ui控件。如圖1中所示,浮動(dòng)控件包括指示符145、3d控件150和卷頁控件155,同時(shí)頂部欄140包括方向控件160、搜索字段165和書簽控件170。
在一些實(shí)施例中,用戶可通過在搜索字段165中觸擊來發(fā)起搜索。這指導(dǎo)應(yīng)用呈現(xiàn)動(dòng)畫,該動(dòng)畫(1)呈現(xiàn)屏幕上的鍵盤并且(2)打開充滿非常寶貴的完成項(xiàng)的搜索表格。該表格具有一些重要的微妙之處。當(dāng)觸擊搜索字段時(shí)并且在編輯詞之前,或當(dāng)搜索字段為空時(shí),表格包含“最近項(xiàng)”的列表,所述“最近項(xiàng)”在一些實(shí)施例中是用戶已請求的最近搜索和路線方向。這使得快速調(diào)出最近訪問的結(jié)果非常容易。
在搜索字段中的任何編輯之后,表格填有來自本地來源(例如,書簽、聯(lián)系人、最近搜索、最近路線方向等)和遠(yuǎn)程服務(wù)器兩者的搜索完成項(xiàng)。將用戶的聯(lián)系人卡結(jié)合至搜索界面中增添了設(shè)計(jì)的額外靈活性。當(dāng)示出最近項(xiàng)時(shí),在一些實(shí)施例中總是提供自當(dāng)前位置至用戶家的路線,而在其他實(shí)施例中在被認(rèn)為是“適當(dāng)”的上下文中該路線被提供。另外,當(dāng)搜索詞匹配地址標(biāo)簽的至少一部分(例如,“work”的“wo”或“ork”)時(shí),在一些實(shí)施例中該應(yīng)用將用戶的所標(biāo)記的地址呈現(xiàn)為搜索表格中的完成項(xiàng)。這些行為一起使得搜索ui成為用以將來自各種來源的結(jié)果放到地圖上的非常強(qiáng)大的方式。除了允許用戶發(fā)起搜索之外,在一些實(shí)施例中的主地圖視圖中的文本字段的存在還允許用戶查看對(duì)應(yīng)于地圖上的搜索結(jié)果的查詢并通過清除該查詢來移除那些搜索結(jié)果。
書簽控件170(例如,按鈕)允許位置和路線被應(yīng)用添加書簽。位置指示符145允許設(shè)備的當(dāng)前位置被具體地標(biāo)注在地圖上。一旦該指示符被選擇一次,應(yīng)用就將設(shè)備的當(dāng)前位置維持在地圖的中心。在一些實(shí)施例中,該位置指示符還可以識(shí)別設(shè)備當(dāng)前指向的方向。
3d控件150是用于在三維(3d)中查看地圖或檢查路線的控件。地圖繪制應(yīng)用提供3d控件作為進(jìn)入和離開3d的快速機(jī)制。該控件還充當(dāng)(1)當(dāng)前視圖為3d視圖的指示符、(2)3d視角對(duì)給定地圖視圖可用(例如,縮小的地圖視圖可能不具有可用的3d視圖)的指示符、(3)3d視角不可用(例如,3d數(shù)據(jù)對(duì)地圖區(qū)域不可用)的指示符,以及(4)立交橋動(dòng)畫在給定縮放級(jí)別下為可用的指示符。3d控件可提供對(duì)應(yīng)于每個(gè)指示的不同外觀。例如,當(dāng)3d視圖不可用時(shí)3d控件可為灰色,當(dāng)3d視圖可用但地圖處于2d視圖中時(shí)3d控件為黑色,并且當(dāng)?shù)貓D處于3d視圖中時(shí)3d控件為藍(lán)色。在一些實(shí)施例中,當(dāng)立交橋動(dòng)畫對(duì)于用戶的給定縮放級(jí)別和在地圖上的位置而言可用時(shí),3d控件改變成建筑物的圖像。
卷頁控件155是允許應(yīng)用通過將某些不常用的動(dòng)作放置于二級(jí)ui屏幕中來最小化屏幕上控件的數(shù)量的控件,該二級(jí)ui屏幕可通過顯示在地圖上的“卷頁”控件訪問。在一些實(shí)施例中,卷頁永久地顯示在應(yīng)用提供的地圖視圖中的至少一些上。例如,在一些實(shí)施例中,應(yīng)用將卷頁永久地顯示在該應(yīng)用提供來允許用戶瀏覽或搜索位置或識(shí)別路線的起始頁(在第二階段110中示出)上。
方向控件160打開方向進(jìn)入頁面180,用戶可通過該方向進(jìn)入頁面請求將要在開始位置與結(jié)束位置之間識(shí)別的路線。圖1的第三階段115示出了方向控件160的選擇打開了方向進(jìn)入頁面180,該方向進(jìn)入頁面示出于第四階段117中。方向控件是地圖繪制應(yīng)用可藉以被指導(dǎo)來識(shí)別并顯示兩個(gè)位置之間的路線的三種機(jī)制中的一種;另外兩種機(jī)制是(1)針對(duì)地圖中所選擇的項(xiàng)目顯示的信息旗幟中的控件,以及(2)顯示在搜索字段165中的由設(shè)備所識(shí)別的最近路線。因此,信息旗幟控件和搜索字段165是應(yīng)用用來使不同模態(tài)之間的過渡無縫的兩個(gè)ui工具。
第四階段117示出了方向進(jìn)入頁面180包括用于提供路線的開始位置和結(jié)束位置的開始字段和結(jié)束字段,以及列出應(yīng)用已向用戶提供的最近路線的表格。該頁面上的其他控件是用于開始路線的控件、用于顛倒開始位置和結(jié)束位置的順序的控件、用于取消方向請求的控件以及用于挑選步行、汽車或公共交通路線的控件。地圖繪制應(yīng)用的這些控件和其他方面描述于以下臨時(shí)專利申請和專利申請中:2012年6月6日提交的標(biāo)題為“integratedlocationbrowsing,mapsearching,routeidentifying,androutenavigatingapplication”的美國臨時(shí)專利申請61/656,080;2012年9月11日提交的標(biāo)題為“problemreporting”的美國臨時(shí)專利申請61/699,841;以及2012年9月30日提交的標(biāo)題為“problemreportinginmaps”的美國專利申請13/632,102。臨時(shí)申請61/656,080和61/699,841,以及專利申請13/632,102以引用的方式并入本文。
第四階段示出了用戶選擇自動(dòng)填充在表格182中的最近方向中的一者。第五階段119然后示出了2d地圖視圖上的介于通過頁面180指定的所指定的開始位置與結(jié)束位置之間的三條路線。第五階段還示出了第二路線的選擇和在布局的頂部處的欄中有關(guān)這條路線的一些信息。該欄被示出為包括開始按鈕和結(jié)束按鈕。開始按鈕被示出為在第五階段中被選擇。
如由第六階段所示,開始按鈕的選擇指示應(yīng)用進(jìn)入逐向?qū)Ш侥J?。在該?shí)例中,應(yīng)用已進(jìn)入2d逐向?qū)Ш侥J健T谄渌麑?shí)施例中,應(yīng)用將默認(rèn)進(jìn)入3d逐向?qū)Ш侥J?。在該模式中,?yīng)用顯示逼真的指示牌184,該逼真的指示牌識(shí)別從設(shè)備的當(dāng)前位置到所導(dǎo)航路線中的下一次操縱的距離以及一些其他相關(guān)信息。應(yīng)用還顯示頂部欄,該頂部欄包括有關(guān)導(dǎo)航的一些信息,以及結(jié)束按鈕和概覽按鈕,所述結(jié)束按鈕和概覽按鈕分別用于結(jié)束導(dǎo)航和獲得所導(dǎo)航路線的剩余部分或在其他實(shí)施例中獲得所導(dǎo)航路線的整個(gè)部分的概覽。
一些實(shí)施例的地圖繪制應(yīng)用使用設(shè)備在設(shè)備的位置處接收的gps信號(hào)中的坐標(biāo)(例如,經(jīng)度坐標(biāo)、海拔坐標(biāo)和緯度坐標(biāo))來識(shí)別設(shè)備的位置。另選地或結(jié)合地,地圖繪制應(yīng)用使用其他方法(例如,小區(qū)塔三角測量)來計(jì)算當(dāng)前位置。當(dāng)攜帶設(shè)備的用戶偏離路線時(shí),一些實(shí)施例的地圖繪制應(yīng)用跟蹤設(shè)備的位置并且根據(jù)偏離位置重新計(jì)算新路線,以便將用戶從偏離位置重新導(dǎo)向到目標(biāo)位置。換句話說,一些實(shí)施例的在導(dǎo)航模式中操作的地圖繪制應(yīng)用要求設(shè)備始終位于路線上。
應(yīng)用進(jìn)一步顯示以上所描述的浮動(dòng)3d控件和浮動(dòng)列表控件。應(yīng)當(dāng)指出的是,在進(jìn)入路線檢查和路線導(dǎo)航模態(tài)時(shí),列表控件被自適應(yīng)地添加至浮動(dòng)控件群集,而在進(jìn)入路線導(dǎo)航模態(tài)時(shí),位置指示符從浮動(dòng)控件移除。另外,在從路線檢查模式過渡至路線導(dǎo)航模式時(shí),在一些實(shí)施例中應(yīng)用執(zhí)行動(dòng)畫,該動(dòng)畫涉及卷頁在應(yīng)用過渡至導(dǎo)航展示中之前完全展開。
在一些實(shí)施例中,動(dòng)畫過渡包括從導(dǎo)航展示移除頂部欄、與該頂部欄相關(guān)聯(lián)的控件和浮動(dòng)控件,以及在導(dǎo)航展示開始后的短時(shí)期將指示牌184移動(dòng)至展示的頂部邊緣。在一些實(shí)施例中,應(yīng)用要求用戶觸擊所導(dǎo)航的地圖以使頂部欄、該頂部欄的控件和浮動(dòng)控件恢復(fù),并且要求進(jìn)行另一個(gè)觸擊以再次從地圖移除這些控件。其他實(shí)施例提供用于查看和移除這些控件的其他機(jī)制。一些實(shí)施例的導(dǎo)航用戶界面和導(dǎo)航模式的其他方面更詳細(xì)地描述于以下臨時(shí)專利申請和專利申請中:2012年6月5日提交的標(biāo)題為“routenavigatingmethodandapparatus”的美國臨時(shí)專利申請61/655,997;2012年6月10日提交的標(biāo)題為“routenavigatingmethodandapparatus”的美國臨時(shí)專利申請61/657,864;2012年9月11日提交的標(biāo)題為“voiceinstructionsduringnavigation”的美國臨時(shí)專利申請61/699,851;以及2012年9月30日提交的標(biāo)題為“context-awarevoiceguidance”的美國專利申請13/632,121。臨時(shí)申請61/655,997、61/657,864和61/699,851,以及專利申請13/632,121以引用的方式并入本文。
b.2d導(dǎo)航和3d導(dǎo)航
一些實(shí)施例的導(dǎo)航應(yīng)用可以2d模式或3d模式顯示用于導(dǎo)航的地圖。如上所述,浮動(dòng)控件中的一者是允許用戶在三維(3d)中查看導(dǎo)航展示的3d控件150。圖2示出了一些實(shí)施例的導(dǎo)航應(yīng)用如何將3d控件150提供為進(jìn)入3d導(dǎo)航模式的快速機(jī)制。該圖示出了在三個(gè)階段205-215中的該操作。第一階段205示出了用戶在查看二維導(dǎo)航展示時(shí)選擇3d控件150。
第二階段210示出了在導(dǎo)航展示過渡至3d展示過程中的導(dǎo)航展示。如該圖中所示,3d控件在該階段被加亮顯示以指示導(dǎo)航展示已進(jìn)入3d模式。在一些實(shí)施例中,導(dǎo)航應(yīng)用通過渲染來自三維場景中的特定位置的地圖視圖來生成所導(dǎo)航地圖的3d視圖,該特定位置在概念上可被視為捕獲地圖視圖的虛擬相機(jī)的位置。以下將參考圖3進(jìn)一步描述該渲染。
第三階段215然后示出了在導(dǎo)航展示過渡至其3d外觀結(jié)束時(shí)的導(dǎo)航展示。如由第二階段和第三階段中的建筑物的高度之間的差所示,從2d導(dǎo)航到3d導(dǎo)航的過渡在一些實(shí)施例中包括示出所導(dǎo)航地圖中的三維對(duì)象變得越來越大的動(dòng)畫。
1.虛擬相機(jī)
一些實(shí)施例的導(dǎo)航應(yīng)用能夠從多個(gè)視角顯示導(dǎo)航地圖。該應(yīng)用可以三維(3d)或以二維(2d)示出地圖。3d地圖是如由虛擬相機(jī)看到的虛擬場景的所生成模擬。圖3呈現(xiàn)了簡化的實(shí)例以示出虛擬相機(jī)312的概念。當(dāng)渲染3d導(dǎo)航地圖時(shí),虛擬相機(jī)是3d地圖場景中的位置的概念化,設(shè)備根據(jù)該概念化來渲染場景的3d視圖。圖3示出了包括四個(gè)對(duì)象的3d導(dǎo)航地圖場景310中的位置,該四個(gè)對(duì)象為兩個(gè)建筑物和兩條相交道路。為了示出虛擬相機(jī)概念,該圖示出了三個(gè)情景,其中的每一者對(duì)應(yīng)于一個(gè)不同的虛擬相機(jī)位置(即,不同的渲染位置)和顯示在設(shè)備上的不同所得視圖。
第一階段301示出了在第一位置處以一角度(例如,30°角度)向下指向3d場景310的虛擬相機(jī)312。通過根據(jù)階段301中所示的位置和角度來渲染3d場景,應(yīng)用生成3d地圖視圖318。根據(jù)該位置,相機(jī)正指向設(shè)備前面的移動(dòng)的位置的位置。虛擬相機(jī)312保持在設(shè)備的當(dāng)前位置后面?!霸诋?dāng)前位置后面”在該情況下意味著沿導(dǎo)航應(yīng)用的所定義路徑反向,該導(dǎo)航應(yīng)用的所定義路徑在與設(shè)備移動(dòng)所在的當(dāng)前方向相反的方向上。
導(dǎo)航地圖視圖318看起來像其是由相機(jī)從設(shè)備的位置指示符316上方及后方所拍攝。虛擬相機(jī)的位置和角度將位置指示符316放置在導(dǎo)航地圖視圖318的底部附近。這也導(dǎo)致了大部分屏幕充滿在設(shè)備目前位置的前方的街道和建筑物。相比之下,在一些實(shí)施例中,位置指示符316在屏幕的中心,其中屏幕中的一半表示設(shè)備前方的事物并且另一半表示設(shè)備后方的事物。為了簡化該圖,對(duì)于視圖318、328和338沒有示出道路指示牌。
第二階段302示出了在一不同的位置處以較大的第二角度(例如,45°角度)向下指向場景310的虛擬相機(jī)312。應(yīng)用根據(jù)該角度渲染場景310,得到3d導(dǎo)航地圖視圖328。建筑物和道路小于其在第一導(dǎo)航地圖視圖318中的圖示。虛擬相機(jī)312再一次位于場景310中的位置指示符326上方和后方。這再次導(dǎo)致了位置指示符出現(xiàn)在3d地圖視圖328的下部分中。相機(jī)的位置和取向還再次導(dǎo)致了大部分屏幕顯示汽車前方的事物,這是導(dǎo)航的人需要了解的內(nèi)容。
第三階段303示出了在自上而下視圖處向下觀看2d地圖345上對(duì)應(yīng)于用來渲染3d視圖318和328的3d地圖場景310中的位置的位置的虛擬相機(jī)312。根據(jù)該視角渲染的場景是2d地圖視圖338。不同于在一些實(shí)施例中為視角3d渲染操作的第一和第二階段的3d渲染操作,第三階段中的渲染操作是相對(duì)簡單的,因?yàn)樵撲秩静僮鲀H需要裁切2d地圖中由應(yīng)用或用戶所指定的縮放級(jí)別所識(shí)別的一部分。因此,在該情形下的虛擬相機(jī)特征描述有些不必要地使對(duì)應(yīng)用的操作的描述復(fù)雜化,因?yàn)椴们?d地圖的一部分不是視角渲染操作。
在第三階段303處,當(dāng)相機(jī)從3d透視圖切換至2d自上而下視圖時(shí),在一些實(shí)施例中的地圖繪制應(yīng)用從根據(jù)特定視角方向渲染3d場景切換至裁切2d場景。這是因?yàn)樵谶@些實(shí)施例中,應(yīng)用被設(shè)計(jì)來使用比較容易并且不生成不必要的視角偽影的簡化渲染操作。然而,在其他實(shí)施例中,地圖繪制應(yīng)用使用視角渲染操作來根據(jù)自上而下虛擬相機(jī)位置渲染3d場景。在這些實(shí)施例中,生成的2d地圖視圖與第三階段303中所示的地圖視圖338稍有不同,因?yàn)檫h(yuǎn)離視圖中心的任何對(duì)象都被扭曲,并且對(duì)象距視圖中心的距離越遠(yuǎn)扭曲越大。
虛擬相機(jī)312在不同實(shí)施例中沿不同的軌線移動(dòng)。在圖3中示出了兩個(gè)此類軌線350和355。在這兩個(gè)軌線中,相機(jī)以弧線移動(dòng),并且當(dāng)相機(jī)在弧線上向上移動(dòng)時(shí)向下旋轉(zhuǎn)得更多。軌線355不同于軌線350之處在于,在軌線355中當(dāng)相機(jī)沿弧線向上移動(dòng)時(shí)該相機(jī)進(jìn)一步遠(yuǎn)離其聚焦點(diǎn)(和用戶的當(dāng)前位置)移動(dòng)。
當(dāng)相機(jī)沿弧線中的一者移動(dòng)時(shí),相機(jī)旋轉(zhuǎn)以將位置指示符前方的點(diǎn)維持在相機(jī)的焦點(diǎn)處。在一些實(shí)施例中,用戶可關(guān)閉三維視圖并采用純二維視圖。例如,一些實(shí)施例的應(yīng)用允許三維模式通過3d按鈕360的使用被打開和關(guān)閉。3d按鈕360對(duì)于逐向?qū)Ш教卣鞣浅S杏?,其中?d按鈕具有作為指示符和雙態(tài)元件的作用。當(dāng)3d關(guān)閉時(shí),相機(jī)將維持2d導(dǎo)航體驗(yàn),但是當(dāng)3d打開時(shí),在3d查看角度無意義時(shí)(例如,在繞3d模式中將被堵塞的拐角行走時(shí))可仍然存在一些自上而下的視角。
2.相機(jī)高度的用戶調(diào)節(jié)
除了(或者代替)使導(dǎo)航應(yīng)用控制相機(jī)(例如,當(dāng)繞拐角行走時(shí)從3d轉(zhuǎn)向2d),一些實(shí)施例還允許用戶調(diào)節(jié)相機(jī)的水平高度。一些實(shí)施例允許用戶使用兩個(gè)手指做出命令手勢來調(diào)節(jié)相機(jī)的距離(高度)和角度。一些實(shí)施例甚至允許多種類型的手勢來控制相機(jī)。圖4示出了通過收縮和展開手勢進(jìn)行的對(duì)虛擬相機(jī)的距離的調(diào)節(jié)。在三個(gè)階段中示出該圖。在階段401中,應(yīng)用示出了虛擬相機(jī)412處于用于3d查看的默認(rèn)水平高度的基本場景410和根據(jù)場景410渲染的屏幕視圖414?;緢鼍鞍瑑蓚€(gè)建筑物和一個(gè)丁字路口。在階段401中,從45度的向下角度和使建筑物看起來為特定大小的特定高度查看建筑物。位置指示符416也以特定的大小示出。
在階段402中,用戶通過將彼此接近的兩個(gè)指尖420放置在設(shè)備的屏幕上(屏幕視圖424上)并且在指尖處于屏幕上時(shí)使指尖分開來做出手勢。使指尖420分開具有使地圖(地圖的手指之間的部分和剩余部分兩者)變大的效果。為了使地圖中的事物看起來更大,應(yīng)用使虛擬相機(jī)412放大。在一些實(shí)施例中,地圖繪制應(yīng)用移動(dòng)虛擬相機(jī)412所沿的線450是由虛擬相機(jī)412的前部和虛擬相機(jī)412的聚焦點(diǎn)形成的線。一些實(shí)施例的地圖繪制應(yīng)用基于放大至3d地圖410的視圖中(縮小出該3d地圖的視圖)的用戶輸入來沿由虛擬相機(jī)412的前部和3d地圖410中的位置形成的線移動(dòng)虛擬相機(jī)412。
在針對(duì)階段402放大之后,用戶決定針對(duì)階段403縮小。在該階段中,用戶已將兩個(gè)手指430放置在屏幕上并且使兩個(gè)手指更靠近在一起。使手指更靠近在一起具有縮小地圖(地圖的手指之間的部分和剩余部分兩者)的效果??s小調(diào)節(jié)是通過沿線455移動(dòng)虛擬相機(jī)412更遠(yuǎn)離3d地圖410來實(shí)現(xiàn)。在一些實(shí)施例中,地圖繪制應(yīng)用移動(dòng)虛擬相機(jī)412所沿的線455是由虛擬相機(jī)412的前部和虛擬相機(jī)412的聚焦點(diǎn)形成的線。一些實(shí)施例的地圖繪制應(yīng)用基于放大至3d地圖410的視圖中(縮小出該3d地圖的視圖)的用戶輸入來沿由虛擬相機(jī)412的前部和3d地圖410中的位置形成的線移動(dòng)虛擬相機(jī)412。
在該位置處使用虛擬相機(jī)412渲染3d地圖視圖會(huì)得到3d地圖視圖434,其中建筑物和道路看起來比3d地圖視圖424中所示的位置更遠(yuǎn)。如由虛擬相機(jī)412的虛線型式所示,虛擬相機(jī)412沿線455移動(dòng)得更遠(yuǎn)離3d地圖410。
除了可通過放大和縮小控制之外,一些應(yīng)用允許用戶改變虛擬相機(jī)的角度。圖5示出了角度可通過手勢調(diào)節(jié)的相機(jī)的一個(gè)實(shí)施例。在三個(gè)階段501-503中示出了該圖。在階段501中,相機(jī)以45度向下指向場景510。場景510包含在屏幕視圖514中示出的兩個(gè)建筑物和一個(gè)丁字路口。建筑物是從特定的角度并且以特定的大小示出。位置指示符516也以特定的大小示出。
在階段502中,用戶已經(jīng)將兩個(gè)手指520大致彼此水平地放置在屏幕上并且向上拖動(dòng)。這具有使場景與手指一起向上拖動(dòng)的明顯效果。場景上升是通過虛擬相機(jī)512降低并將其查看角度從45度改變成30度來實(shí)現(xiàn)。在屏幕視圖524中,建筑物和位置指示符看起來比在階段501中更高。
在用戶在階段502中向上拖動(dòng)場景之后,用戶然后在階段503中向下拖動(dòng)場景。為此,用戶再次將兩個(gè)手指530放置在屏幕上并且向下拖動(dòng)。這使場景與手指530一起向下拖動(dòng)。場景下降是通過虛擬相機(jī)512上升并將其向下相對(duì)于場景510的角度改變成60度來實(shí)現(xiàn)。在階段503中,相機(jī)512已比階段501中向上移動(dòng)得更遠(yuǎn)并且向下成角度更大。因此,建筑物和位置標(biāo)識(shí)符536在階段503中再次看起來比階段501中甚至更矮并且更小。
在一些實(shí)施例中,地圖繪制應(yīng)用提供用于不同操作(例如,平移、旋轉(zhuǎn)、從2d進(jìn)入至3d)的慣性效果。當(dāng)用戶提供特定類型的輸入(例如,以大于閾值速率的速率終止的輸入)以平移3d地圖時(shí),地圖繪制應(yīng)用生成使3d地圖繼續(xù)平移并減速到停止的慣性效果。在一些實(shí)施例中的慣性效果為用戶提供與3d地圖的更逼真交互,該更逼真交互模仿現(xiàn)實(shí)世界中的行為。
一些實(shí)施例的應(yīng)用允許相機(jī)的距離和角度被獨(dú)立地控制。例如,其允許距離通過收縮和展開手指手勢來控制,并且允許角度通過水平放置的手指的拖動(dòng)來控制。其他實(shí)施例使用被執(zhí)行以設(shè)定相機(jī)的距離或角度的任何一個(gè)手勢,其中另一個(gè)變量自動(dòng)設(shè)定。雖然圖4和圖5示出了導(dǎo)致某些結(jié)果的在一定方向上執(zhí)行的手勢,但在一些實(shí)施例中,這些手勢中的一者或兩者可反向。例如,在一些實(shí)施例中,向下拖動(dòng)水平放置的手指可使相機(jī)降低而不是使場景降低。這將在手指向上移動(dòng)時(shí)具有向下移動(dòng)場景的效果,并且在手指向下移動(dòng)時(shí)具有向上移動(dòng)場景的效果。
ii.地圖圖塊的服務(wù)器側(cè)生成
為了顯示沉浸式和非沉浸式3d地圖展示兩者,一些實(shí)施例必須生成各種圖塊以供客戶端設(shè)備渲染來生成道路、建筑物和周圍景色。在一些實(shí)施例中,此類圖塊的實(shí)例包括用于非沉浸式3d展示的道路和建筑物圖塊,以及用于沉浸式3d展示的導(dǎo)航和建筑物圖塊。
在生成這些圖塊之前,服務(wù)器集合必須生成放置在每個(gè)圖塊中的道路、建筑物和其他幾何結(jié)構(gòu)的描述。該任務(wù)涉及多個(gè)子任務(wù),諸如(1)自各種供應(yīng)商接收地圖數(shù)據(jù),(2)處理此類數(shù)據(jù)以產(chǎn)生一維(1d)道路、(3)平滑1d道路圖、(4)定義數(shù)據(jù)以指定接合點(diǎn)、(5)生成2d道路幾何結(jié)構(gòu)和土地覆蓋物、(6)平滑2d道路幾何結(jié)構(gòu)、(7)生成關(guān)于建筑物的數(shù)據(jù)(例如,估計(jì)的高度數(shù)據(jù))、(8)使用此類數(shù)據(jù)來定義建筑物幾何結(jié)構(gòu)、(9)構(gòu)造道路幾何結(jié)構(gòu)細(xì)節(jié)(諸如島嶼、車道標(biāo)記以及道路幾何結(jié)構(gòu)之間的距離和土地覆蓋物)、以及(10)識(shí)別幾何結(jié)構(gòu)邊緣節(jié)點(diǎn)特征和傳播此類特征。
一些實(shí)施例的地圖繪制服務(wù)通過地圖數(shù)據(jù)(例如,從地圖供應(yīng)商接收的數(shù)據(jù))的離線處理生成可下載的地圖圖塊數(shù)據(jù)。在一些實(shí)施例中,該離線處理獲得地圖對(duì)象位置輸入(例如,道路的緯度/經(jīng)度數(shù)據(jù)、行政交界、自然交界等)并且生成聚合道路和所述聚合道路之間的關(guān)系。根據(jù)聚合道路及其關(guān)系,地圖繪制服務(wù)處理生成道路幾何結(jié)構(gòu)。地圖繪制服務(wù)還使用地圖對(duì)象位置輸入生成土地覆蓋物(例如,公園、海洋、州等)的幾何結(jié)構(gòu)。一些實(shí)施例使用可擴(kuò)展的分布式處理來根據(jù)幾何矢量數(shù)據(jù)創(chuàng)建可下載的地圖圖塊。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,本申請中所描述的“離線”處理可由實(shí)際上連接至地圖繪制應(yīng)用藉以請求圖塊數(shù)據(jù)的網(wǎng)絡(luò)的地圖繪制服務(wù)計(jì)算設(shè)備來執(zhí)行,但用來表示處理并不是響應(yīng)于用戶對(duì)圖塊的請求而被執(zhí)行。
圖6概念性地示出了一些實(shí)施例的地圖繪制服務(wù)處理600。如所提及的,一些實(shí)施例離線地執(zhí)行該處理以生成各種地圖圖塊,所述地圖圖塊可然后響應(yīng)于實(shí)時(shí)請求而被發(fā)送至客戶端設(shè)備。處理可被定期(例如,每小時(shí)、每天、每周)執(zhí)行或者可在新數(shù)據(jù)變得可用(例如,通過地圖數(shù)據(jù)的提供方接收的更新、從用戶接收的校正等)的任何時(shí)間被執(zhí)行。
地圖繪制服務(wù)處理600包括1-d道路處理器605、道路幾何結(jié)構(gòu)生成器610、土地覆蓋物幾何結(jié)構(gòu)生成器615、建筑物幾何結(jié)構(gòu)生成器617和圖塊生成器620。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,圖6中所示出的各種模塊化操作可全部在單個(gè)服務(wù)器上執(zhí)行,或者可分布在若干計(jì)算設(shè)備上。實(shí)際上,一些操作(例如,圖塊生成)可被執(zhí)行為跨越多個(gè)計(jì)算設(shè)備的分布式處理操作。
除了處理操作之外,圖6還示出了路段數(shù)據(jù)625、土地覆蓋物數(shù)據(jù)630和建筑物數(shù)據(jù)633。路段數(shù)據(jù)625存儲(chǔ)定義道路的位置和特性的數(shù)據(jù)。在一些實(shí)施例中,每個(gè)路段都被分配一個(gè)或多個(gè)名稱(例如,“l(fā)incolnblvd.”、“ca-1”)、指示路段的路徑的位置數(shù)據(jù),和路段的屬性(例如,速度限制、寬度、車道數(shù)量、道路類型等)。在一些實(shí)施例中,接合點(diǎn)的位置(也被稱為接合點(diǎn))是路段數(shù)據(jù)的一部分。土地覆蓋物數(shù)據(jù)630存儲(chǔ)定義各種類型的非道路土地覆蓋物的位置和特性的數(shù)據(jù)。土地覆蓋物可包括水體(例如,河流、海洋、湖泊、游泳池等)、行政體(例如,州、國家、城市、公園等的交界)、區(qū)域標(biāo)示(例如,鄉(xiāng)村/市區(qū)/郊區(qū)、沙漠/山脈/森林等)或描述道路之間的土地的其他數(shù)據(jù)。一些實(shí)施例的建筑物數(shù)據(jù)633存儲(chǔ)建筑物的位置以及有關(guān)建筑物的數(shù)據(jù)。例如,建筑物數(shù)據(jù)可包括地表標(biāo)高數(shù)據(jù)和地面標(biāo)高,可根據(jù)該地表標(biāo)高數(shù)據(jù)和地面標(biāo)高計(jì)算建筑物高度。
可從單個(gè)來源(例如,單個(gè)地圖數(shù)據(jù)供應(yīng)商)或若干來源(例如,若干不同供應(yīng)商)接收路段數(shù)據(jù)625、土地覆蓋物數(shù)據(jù)630和建筑物數(shù)據(jù)635。例如,第一供應(yīng)商可提供用于第一區(qū)的道路數(shù)據(jù),而第二供應(yīng)商提供用于第二區(qū)的道路數(shù)據(jù),第三供應(yīng)商提供用于第一區(qū)和第二區(qū)的土地覆蓋物數(shù)據(jù),并且第四供應(yīng)商提供標(biāo)高數(shù)據(jù)(或其他組合,諸如用于不同類型的信息的土地覆蓋物數(shù)據(jù)的多個(gè)不同供應(yīng)商)。
1-d道路處理器605接收路段數(shù)據(jù)625并且自該數(shù)據(jù)生成一個(gè)或多個(gè)道路圖。道路圖在一些實(shí)施例中將路段集合與路段接合點(diǎn)連結(jié)在一起。為了生成道路圖,1-d道路處理器605識(shí)別應(yīng)組合成聚合道路(即,基于名稱、開始點(diǎn)和結(jié)束點(diǎn)和所述路段的公共屬性)的路段。例如,當(dāng)?shù)谝宦范蔚慕Y(jié)束與第二路段的開始共享一個(gè)位置時(shí),所述路段具有至少一個(gè)共同的名稱,并且所述路段共享至少一些屬性,然后道路處理器605將所述路段組合成聚合道路。當(dāng)在路段數(shù)據(jù)中缺少額外處理所需要的數(shù)據(jù)(例如,標(biāo)高數(shù)據(jù)、速度限制數(shù)據(jù)、車道數(shù)量)時(shí),1-d道路處理器另外填充該數(shù)據(jù)。
除了形成聚合道路之外,1-d道路處理器605識(shí)別并生成用于道路的接合點(diǎn)的角度信息(如以下所描述),并且識(shí)別道路之間的其他關(guān)系(例如,匯合雙行車道、建立重疊關(guān)系)。接合點(diǎn)和路段的連接集形成道路圖。
道路幾何結(jié)構(gòu)生成器610使用各種過程基于道路圖生成用于道路的幾何結(jié)構(gòu)(即,用于在客戶端設(shè)備處繪制道路的頂點(diǎn)的集合)。在一些實(shí)施例中,道路幾何結(jié)構(gòu)生成器610從道路中心線增長道路幾何結(jié)構(gòu)(例如,使用車道號(hào)、寬度和偏移數(shù)據(jù)),然后執(zhí)行各種操作以細(xì)化幾何結(jié)構(gòu)。作為實(shí)例,道路幾何結(jié)構(gòu)生成器610平滑具有不同數(shù)量的車道的路段之間的過渡、創(chuàng)建交叉口處更逼真的圓拐角、平滑道路并道以移除多余的道路塊和道路之間的間隙,并且移除不相交的獨(dú)立道路之間的重疊。另外,在一些實(shí)施例中,道路幾何結(jié)構(gòu)生成器610將特定的特征分配給多邊形頂點(diǎn)和/或邊緣,諸如標(biāo)記隧道入口、標(biāo)記道路內(nèi)部邊緣(例如,各路段之間)、標(biāo)記人行道以及標(biāo)記應(yīng)在其中繪制陰影的橋框。
土地覆蓋物幾何結(jié)構(gòu)生成器615在一些實(shí)施例中使用土地覆蓋物數(shù)據(jù)630和路段數(shù)據(jù)625兩者來創(chuàng)建用于土地覆蓋物的幾何結(jié)構(gòu)(即,定義多邊形的頂點(diǎn)的集合)。在增長用于土地覆蓋物的幾何結(jié)構(gòu)之后,一些實(shí)施例使用各種操作來解決幾何結(jié)構(gòu)之間的交界。例如,當(dāng)組合來自不同來源的數(shù)據(jù)時(shí),指示對(duì)象交界的位置數(shù)據(jù)可能沒有完美地對(duì)齊并且因此可能存在對(duì)象幾何結(jié)構(gòu)之間的間隙或幾何結(jié)構(gòu)的重疊。一些實(shí)施例使用不同的操作來解決不同的幾何結(jié)構(gòu)之間的交界,這取決于對(duì)象的類型。另外,土地覆蓋物幾何結(jié)構(gòu)生成器615使用路段數(shù)據(jù)來填充土地覆蓋物幾何結(jié)構(gòu)并確保在土地覆蓋物與道路之間不留下間隙。一些實(shí)施例使土地覆蓋物幾何結(jié)構(gòu)朝向道路長出其所標(biāo)記的交界,在道路中心線位置處停止幾何結(jié)構(gòu)。雖然這創(chuàng)建了土地覆蓋物幾何結(jié)構(gòu)與道路幾何結(jié)構(gòu)之間的重疊,但在一些實(shí)施例中客戶端地圖繪制應(yīng)用包括用以渲染在土地覆蓋物幾何結(jié)構(gòu)頂部上的道路幾何結(jié)構(gòu)的指令。
一些實(shí)施例的建筑物幾何結(jié)構(gòu)生成器617使用建筑物數(shù)據(jù)633生成建筑物幾何結(jié)構(gòu)。在一些實(shí)施例中,如所提及的,除了建筑物的位置之外,建筑物數(shù)據(jù)633還包括地表標(biāo)高和地面標(biāo)高數(shù)據(jù)。為了生成建筑物幾何結(jié)構(gòu),一些實(shí)施例針對(duì)建筑物的位置內(nèi)的各個(gè)點(diǎn)計(jì)算建筑物高度。建筑物幾何結(jié)構(gòu)生成器617檢索地表標(biāo)高并且自地面標(biāo)高減去該地表標(biāo)高來計(jì)算建筑物高度。在其他實(shí)施例中,建筑物幾何結(jié)構(gòu)生成器617(或另一個(gè)模塊)使用3d衛(wèi)星數(shù)據(jù)來計(jì)算高度數(shù)據(jù)。為了總體上計(jì)算建筑物的高度,建筑物幾何結(jié)構(gòu)生成器617將總高度計(jì)算為在不同點(diǎn)處的各個(gè)所計(jì)算高度的平均值,加上乘以點(diǎn)高度的標(biāo)準(zhǔn)偏差的偏差因子常數(shù)。偏差因子在一些實(shí)施例中是根據(jù)地表實(shí)況(例如,在實(shí)際位置確定的數(shù)據(jù))和實(shí)驗(yàn)確定的常數(shù)。
一些實(shí)施例還確定建筑物是平坦的還是非平坦的(例如,具有尖屋頂)。當(dāng)點(diǎn)高度的標(biāo)準(zhǔn)偏差高于閾值(該閾值也可基于地表實(shí)況和實(shí)驗(yàn))時(shí),建筑物幾何結(jié)構(gòu)生成器617將屋頂指定為非平坦的。當(dāng)點(diǎn)高度的標(biāo)準(zhǔn)偏差低于閾值時(shí),建筑物幾何結(jié)構(gòu)生成器617將屋頂指定為平坦的。當(dāng)生成幾何結(jié)構(gòu)頂點(diǎn)時(shí),一些實(shí)施例對(duì)于非平坦建筑物創(chuàng)建尖屋頂(例如,三角棱柱或金字塔)。
道路、土地覆蓋物和建筑物幾何結(jié)構(gòu)被發(fā)送至圖塊生成器620。在一些實(shí)施例中,圖塊生成器620以不同級(jí)別的細(xì)節(jié)(即,縮放級(jí)別)創(chuàng)建用于地圖區(qū)域的若干圖塊。一些實(shí)施例定義用于不同縮放級(jí)別的圖塊位置交界(例如,其中在第一縮放級(jí)別下的圖塊包含在下一個(gè)縮放級(jí)別下的四個(gè)圖塊),然后使用分布式處理技術(shù)來將不同的幾何結(jié)構(gòu)(道路和土地覆蓋物兩者)分配給各種圖塊。在將幾何結(jié)構(gòu)分配給圖塊(每個(gè)幾何結(jié)構(gòu)可被分配給在每個(gè)縮放級(jí)別下的一個(gè)或多個(gè)圖塊)之后,圖塊生成器620使用額外的分布式處理來生成并壓縮圖塊。在一些實(shí)施例中,地圖圖塊包含描述生成來將數(shù)據(jù)渲染為2d或3d地圖的多邊形的矢量數(shù)據(jù)。為了減少矢量數(shù)據(jù)的量(從而減少文件的大小以用于更容易的傳輸),一些實(shí)施例使用將矢量數(shù)據(jù)減少為光柵信息的瞬時(shí)格柵化過程,然后使用較少頂點(diǎn)重新矢量化數(shù)據(jù)。
如圖所示,圖塊生成器620將圖塊數(shù)據(jù)635輸出至存儲(chǔ)裝置。所存儲(chǔ)的圖塊數(shù)據(jù)635是由客戶端地圖繪制應(yīng)用訪問的數(shù)據(jù),以便應(yīng)用生成用于供用戶查看的地圖。如圖所示,一些實(shí)施例的圖塊數(shù)據(jù)包括非沉浸式地圖圖塊640、沉浸式地圖圖塊645、建筑物圖塊650和交通圖塊655。非沉浸式地圖圖塊640和沉浸式地圖圖塊645提供不同級(jí)別的數(shù)據(jù)。在一些實(shí)施例中,地圖繪制應(yīng)用包括沉浸式3d視圖和非沉浸式3d視圖,其中沉浸式3d視圖提供額外細(xì)節(jié)(例如,道路的柏油視圖、更逼真的土地覆蓋物和建筑物、駕駛視野的更接近模擬等)。一些實(shí)施例將獨(dú)立圖塊集合使用于不同的視圖,其中沉浸式地圖圖塊645包括有關(guān)道路和土地覆蓋物的更大級(jí)別的細(xì)節(jié)。除了路段和土地覆蓋物數(shù)據(jù)之外,地圖圖塊還可以包含額外數(shù)據(jù)。例如,圖塊可包括標(biāo)簽數(shù)據(jù)的各種集合(例如,道路標(biāo)簽、地點(diǎn)標(biāo)簽、土地覆蓋物標(biāo)簽等)。如圖所示,在一些實(shí)施例中,圖塊數(shù)據(jù)635還包括指示用于繪制建筑物(基于高度和位置信息)的幾何結(jié)構(gòu)的建筑物圖塊,以及定期以交通信息更新的交通圖塊655。一些實(shí)施例使用用于沉浸式和非沉浸式3d視圖兩者的建筑物圖塊。
a.道路數(shù)據(jù)和道路圖生成
如以上所述,一些實(shí)施例接收路段數(shù)據(jù)(即,從一個(gè)或多個(gè)來源)并且根據(jù)所述路段生成道路圖。圖7概念性地示出了用于生成道路圖的一些實(shí)施例的過程700。將參考圖8來描述過程700,圖8示出了針對(duì)地圖區(qū)域內(nèi)的道路的一些實(shí)施例的各種數(shù)據(jù)結(jié)構(gòu)。以下將更詳細(xì)地描述的這些數(shù)據(jù)結(jié)構(gòu)包括路段800、邊緣805、道路810、接合點(diǎn)815和道路圖820。
如圖所示,過程700從接收(在710處)用于地圖區(qū)域的路段和接合點(diǎn)的集合開始。在一些實(shí)施例中,針對(duì)不同的地圖區(qū)域(例如,針對(duì)州、矩形地理區(qū)域、大陸塊等)單獨(dú)地運(yùn)行過程700(或類似的道路圖生成過程)??蓮膯蝹€(gè)來源或從若干不同的來源接收用于地圖區(qū)域的路段。在一些實(shí)施例中,路段是具有單個(gè)一致的屬性集合(即,相同數(shù)量的車道、速度限制等)的道路的一致伸展。當(dāng)?shù)缆穼傩愿淖?例如,速度限制從45mph改變至35mph,或增加車道)時(shí),新路段被定義。
通常從與在接合點(diǎn)相匯的道路相同的來源接收用于地圖區(qū)域的接合點(diǎn)。在一些實(shí)施例中,接合點(diǎn)定義至少兩條道路的交叉口——即,兩條或更多個(gè)路段不僅穿過相同位置(該相同位置可根據(jù)路段數(shù)據(jù)確定),而且路段事實(shí)上彼此相交以使車輛可在接合點(diǎn)處從一個(gè)路段過渡至另一個(gè)路段。
圖8示出了路段的一些實(shí)施例的數(shù)據(jù)結(jié)構(gòu)800以及接合點(diǎn)的數(shù)據(jù)結(jié)構(gòu)815。如圖所示,路段包括段id(即,唯一標(biāo)識(shí))、一個(gè)或多個(gè)名稱、幾何結(jié)構(gòu)信息和屬性信息。幾何結(jié)構(gòu)信息(其不同于創(chuàng)建來用于定義矢量數(shù)據(jù)的道路幾何結(jié)構(gòu))定義有關(guān)路段的路徑和其他幾何信息。如圖所示,幾何結(jié)構(gòu)信息包括中心線路徑數(shù)據(jù)(例如,定義道路的中心的坐標(biāo)的排序字符串)、開始和結(jié)束接合點(diǎn)信息、用以指示寬度和相對(duì)于中心線的偏移的參數(shù)、以及能夠?qū)ρ芈范蔚娜我稽c(diǎn)處的道路的兩邊進(jìn)行評(píng)估的功能。在一些實(shí)施例中,這是關(guān)于路段類的函數(shù),該函數(shù)利用中心線、偏移和寬度信息來計(jì)算道路的兩邊的位置。雖然該圖示出了包括開始和結(jié)束接合點(diǎn)的道路繪制數(shù)據(jù),但一些實(shí)施例并不將一個(gè)接合點(diǎn)定義為開始并且將一個(gè)接合點(diǎn)定義為結(jié)束,而是僅指示兩個(gè)接合點(diǎn)id作為終點(diǎn)(或如果路段到達(dá)盡頭則僅指示一個(gè)接合點(diǎn)id作為終點(diǎn))。
屬性信息描述有關(guān)路段的元數(shù)據(jù),諸如道路類型(或功能道路類,其定義道路的重要級(jí)別,從高速公路下降至擬路徑)、車道數(shù)量、速度限制、道路的相對(duì)標(biāo)高(其可包含對(duì)一條或多條其他路段和/或接合點(diǎn)的參考,從而指示目前路段在所參考的對(duì)象以下或以上延伸)、道路的高度(與識(shí)別標(biāo)高有關(guān))、路的形式(其將路徑定義為雙行車道、單行車道、走道、階梯、連接道路、岔道等)、限制(例如,長話限制、車輛類型限制、對(duì)道路為私有的指示等)。
另外,如圖8中所示,一些實(shí)施例定義每個(gè)路段的邊緣805。邊緣數(shù)據(jù)結(jié)構(gòu)包含對(duì)邊緣所對(duì)應(yīng)的路段的參考(例如,指針)、指示邊緣是否以與路段相同的方向取向的取向標(biāo)志、以及用以使用所參考路段的寬度和中心線數(shù)據(jù)來計(jì)算邊緣的右邊和左邊的功能。在一些實(shí)施例中,該功能作為關(guān)于邊緣類的函數(shù)而存在。邊緣在一些實(shí)施例中是用來創(chuàng)建道路圖的數(shù)據(jù)構(gòu)造。對(duì)于具有開始和結(jié)束接合點(diǎn)兩者的路段來說,一些實(shí)施例定義兩個(gè)邊緣(在每個(gè)方向上一個(gè)),以使每個(gè)接合點(diǎn)可參考從接合點(diǎn)引出的一個(gè)邊緣。
如圖8中所示,接合點(diǎn)數(shù)據(jù)結(jié)構(gòu)815包括唯一接合點(diǎn)id、邊緣的具有相關(guān)聯(lián)角度的排序列表、位置和標(biāo)高等級(jí)。雖然該數(shù)據(jù)結(jié)構(gòu)示出了邊緣列表,但一些實(shí)施例另外包括由路段id引用的路段的列表,可根據(jù)該列表生成邊緣列表。在一些實(shí)施例中,從道路數(shù)據(jù)來源接收接合點(diǎn)id、路段id的列表和標(biāo)高等級(jí),而角度和邊緣列表由地圖繪制服務(wù)計(jì)算。因?yàn)槊總€(gè)路段與一個(gè)或多個(gè)邊緣相關(guān)聯(lián),所以地圖繪制服務(wù)處理可確定用以對(duì)接合點(diǎn)列表的適當(dāng)導(dǎo)向邊緣(被導(dǎo)向離開接合點(diǎn)的邊緣)。對(duì)于許多地面街道接合點(diǎn)來說,相對(duì)標(biāo)高并不是特別有意義的,因?yàn)榻雍宵c(diǎn)和在該位置處的所有道路將處于相同水平高度。然而,在交叉口諸如立體交叉道處,或當(dāng)路段通過高速公路下方或上方時(shí),標(biāo)高等級(jí)指示哪些接合點(diǎn)在其他接合點(diǎn)和/或路段的頂部上。
在接收到路段之后,過程根據(jù)路段和接合點(diǎn)定義(在710處)用于地圖區(qū)域的道路圖。如圖8中所示,道路圖數(shù)據(jù)結(jié)構(gòu)820包括路段集合和接合點(diǎn)集合。在一些實(shí)施例中,應(yīng)用遍歷邊緣和接合點(diǎn)以識(shí)別邊緣的連接集,然后將這些邊緣映射至路段。其他實(shí)施例使用存儲(chǔ)在路段中的每一者中的開始和結(jié)束接合點(diǎn),和針對(duì)每個(gè)接合點(diǎn)存儲(chǔ)的路段的列表,來定義路段和接合點(diǎn)的連接性。一些實(shí)施例定義用于地圖區(qū)域的單個(gè)道路圖。然而,當(dāng)存在不相交的多個(gè)連接集時(shí),一些實(shí)施例將定義多個(gè)道路圖。
接下來,過程700對(duì)道路圖執(zhí)行(在715處)預(yù)處理以使接合點(diǎn)處的路段對(duì)齊。為了適當(dāng)?shù)刈R(shí)別接合點(diǎn)處的道路的角度,并且為了生成用于道路的多邊形幾何結(jié)構(gòu),在接合點(diǎn)處相交的道路應(yīng)該全部在完全相同的位置處結(jié)束/開始。然而,用于在特定接合點(diǎn)處相匯的路段中的每一者的道路中心線可能并沒有在所接收的地圖數(shù)據(jù)中的完全相同位置處結(jié)束。因此,針對(duì)每個(gè)接合點(diǎn),一些實(shí)施例計(jì)算路段路徑結(jié)束的平均位置,并且將該位置分配給其位置的接合點(diǎn)。另外,地圖繪制服務(wù)處理修改用于在接合點(diǎn)處相匯的路段中的每一者的路段路徑數(shù)據(jù),使得中心線全部在所計(jì)算的平均位置處結(jié)束。
圖9示出了在兩個(gè)階段920和930上針對(duì)在接合點(diǎn)處相匯的兩個(gè)路段905和910的此類修改的實(shí)例。如圖所示,每個(gè)路段包括開始接合點(diǎn)和結(jié)束接合點(diǎn),其中第一路段905的結(jié)束接合點(diǎn)和第二路段910的開始接合點(diǎn)是相同的(兩者參考具有id16的接合點(diǎn))。然而,如第一階段920中所示,第一路段905和第二路段910的中心線路徑并沒有在相同地點(diǎn)開始/結(jié)束(并且,實(shí)際上,完全不相交)。因此,一些實(shí)施例識(shí)別應(yīng)該相匯的結(jié)束的平均位置。對(duì)于具有僅兩個(gè)路段的接合點(diǎn)來說,該位置將在沿兩條路徑終點(diǎn)之間的線上的中途,如由圖中的位置915所示。中心線的結(jié)束頂點(diǎn)中的每一者具有一對(duì)坐標(biāo)值(例如,(x,y)坐標(biāo)值或地理位置坐標(biāo)(緯度、經(jīng)度))。一些實(shí)施例在每個(gè)坐標(biāo)的所有結(jié)束頂點(diǎn)之間計(jì)算平均值,并且使用該平均值作為接合點(diǎn)的平均位置。
在識(shí)別接合點(diǎn)位置之后,地圖繪制服務(wù)處理修改路段,使得中心線全部在所識(shí)別位置處結(jié)束。第二階段930示出了此類結(jié)果的一個(gè)實(shí)例。在一些實(shí)施例中,當(dāng)接收路段時(shí),中心線路徑可能并不具有在固定距離處的頂點(diǎn)。一些實(shí)施例的地圖繪制服務(wù)處理標(biāo)準(zhǔn)化路段頂點(diǎn),使得每個(gè)頂點(diǎn)在固定距離(例如,10米)處,從而實(shí)現(xiàn)更平滑(較少彎折)的道路多邊形。一些實(shí)施例對(duì)于特定路段識(shí)別距結(jié)束固定距離(例如,50米、100米等)的頂點(diǎn)并保持該點(diǎn)固定,同時(shí)修改該點(diǎn)與結(jié)束頂點(diǎn)之間的其他頂點(diǎn)。在一些實(shí)施例中,使頂點(diǎn)隨著所述頂點(diǎn)變得更遠(yuǎn)離終點(diǎn)而移動(dòng)較少的量。即,針對(duì)結(jié)束頂點(diǎn)至所識(shí)別位置的移動(dòng)計(jì)算矢量,并且使其他頂點(diǎn)移動(dòng)該矢量的較少迭代。
在預(yù)處理完成的情況下,過程將路段組合(在720處)成聚合道路。一些實(shí)施例確定路段何時(shí)是實(shí)際上相同道路的不同部分,使得路段可被當(dāng)作單個(gè)道路以用于定義地圖(例如,用于生成標(biāo)簽)的目的以及用于生成用于道路的多邊形的某些方面。在一些實(shí)施例中,過程使用路段的各種屬性和幾何結(jié)構(gòu)數(shù)據(jù)來確定是否應(yīng)該組合兩個(gè)路段。
一些實(shí)施例遍歷道路圖以將路段組合成聚合道路。當(dāng)遍歷圖、從特定路段進(jìn)入接合點(diǎn)時(shí),地圖繪制服務(wù)處理確定其他路段中的哪一個(gè)是將為當(dāng)前路段的延續(xù)的最佳匹配。一些實(shí)施例對(duì)路段中的每一者評(píng)分,并且以貪婪方式聚合道路。
為了計(jì)算特定路段的分?jǐn)?shù),地圖繪制服務(wù)處理評(píng)估駛?cè)氲穆范闻c特定路段之間的角度差、路段名稱的兼容性,并且比較道路屬性。對(duì)于角度來說,路段越接近180°(即,直線通過接合點(diǎn)的延續(xù)),路段將通常得分越高;通常,道路將繼續(xù)直線或大致直線通過接合點(diǎn),而不轉(zhuǎn)彎。一些實(shí)施例執(zhí)行與每個(gè)路段相關(guān)聯(lián)的道路名稱之間的模糊比較。即,處理使用近似字符串匹配技術(shù)來將駛?cè)肼范蔚淖址c特定路段的字符串進(jìn)行比較。在一些情況下,路段中的一者或多者可具有多個(gè)名稱,并且處理執(zhí)行每一者的比較以查找一個(gè)或多個(gè)最佳匹配,并且在計(jì)算分?jǐn)?shù)中使用這些最佳匹配(例如,使用“sandiegofreewaysouth”與“sandiegofreewaysouth”而不是與“1-405south”的比較)。
另外,在一些實(shí)施例中,比較道路屬性中的至少一些以計(jì)算比較分?jǐn)?shù)。例如,一些實(shí)施例的地圖繪制服務(wù)處理比較道路類型(即,公路、干線道路、次要道路等)、車道數(shù)量、速度限制、路的形式(即,單行車道、雙行車道等)。一旦對(duì)分?jǐn)?shù)進(jìn)行了計(jì)算,一些實(shí)施例選擇具有最高分?jǐn)?shù)的路段并確定該最高分?jǐn)?shù)是否高于用于繼續(xù)道路的閾值。另外,一些實(shí)施例識(shí)別所選擇的最佳路段,并且執(zhí)行所選擇的路段與其他路段中的每一者之間的比較。只有在第一路段是第二路段的最佳匹配并且第二路段是第一路段的最佳匹配時(shí)處理才聚合道路。這防止事實(shí)上在“t”形交叉口結(jié)束的駛?cè)肼范闻c事實(shí)上繼續(xù)穿過交叉口的路段中的一者接合。
圖10示出了為用于在接合點(diǎn)1020處聚合成道路的候選者的三個(gè)路段1005、1010和1015的實(shí)例。如圖所示,第一路段1005具有名稱“威爾士大道”、40mph的速度限制和三個(gè)車道,并且是干線道路。第二路段1010也具有名稱“威爾士大道”和三個(gè)車道,并且也是干線道路,但是具有35mph的速度限制。第三路段1015具有名稱“saltair大街”、35mph的速度限制和2個(gè)車道,并且表征為次要道路。如果初始駛?cè)肼范问堑谌范?015,則路段1010將為兩個(gè)可能延續(xù)中的較高得分的路段。然而,對(duì)于第二路段1010來說,第三路段1015將不是最佳道路延續(xù),因?yàn)榈谝宦范?005將具有高得多的延續(xù)分?jǐn)?shù)(角度、道路名稱、道路類型和車道數(shù)量是相同的,并且唯一差異是速度限制中的5mph)。如此,在此接合點(diǎn)1020處的最佳結(jié)果針對(duì)如下道路,其中第三路段1015為將終止的一部分,并且第一路段1005和第二路段1010連結(jié)在一起作為單條道路。其他實(shí)施例不執(zhí)行相互作用測試,但相反地設(shè)定不良匹配為不可能的足夠高的閾值。此外,在遍歷道路圖時(shí),當(dāng)較優(yōu)匹配在遍歷中發(fā)生得較遲時(shí),一些實(shí)施例允許將一個(gè)路段從一個(gè)聚合道路移動(dòng)至另一個(gè)(例如,如果發(fā)現(xiàn)路段1015繼續(xù)進(jìn)入路段1010中,但然后再次通過路段1005到達(dá)接合點(diǎn)1020,則路段1010可從第一道路移動(dòng)至也包含路段1005的新道路)。
圖8示出了一些實(shí)施例的道路數(shù)據(jù)結(jié)構(gòu)810。如圖所示,道路數(shù)據(jù)結(jié)構(gòu)810包括邊緣的排序列表(道路對(duì)象通過該排序列表包含對(duì)該道路對(duì)象的組成路段的引用)。另外,道路結(jié)構(gòu)包含對(duì)沿道路的任一點(diǎn)處的道路中心線和道路的兩邊進(jìn)行評(píng)估的功能。在一些實(shí)施例中,中心線功能作為參考組成路段的中心線信息(并且也可以內(nèi)插在任何稍微失配的中心線之間)的道路類的函數(shù)而存在。路邊功能也作為道路類的函數(shù)而存在,該功能使用來自由道路對(duì)象包含的路段對(duì)象的路邊函數(shù)。
返回圖7,在組合路段之后,過程700得出(在725處)額外的道路描述數(shù)據(jù)。在一些實(shí)施例中,這涉及在路段信息中填充缺失的數(shù)據(jù)。因?yàn)橐恍?shí)施例將路段(和其他數(shù)據(jù))實(shí)現(xiàn)為對(duì)象,所以在一些情況下對(duì)象變量將具有空值,因?yàn)閿?shù)據(jù)還沒有由地圖數(shù)據(jù)提供方提供。例如,速度限制數(shù)據(jù)、道路寬度、車道數(shù)量或其他參數(shù)可能缺失。一些實(shí)施例在可能的情況下使用來自路段的其他信息或來自相鄰路段的信息自動(dòng)填充路段的缺失數(shù)據(jù)中的至少一些的值。例如,一些實(shí)施例可基于相鄰路段的速度限制來填充路段的缺失的速度限制信息(例如,如果第一路段具有55mph的速度限制并且第三路段具有35mph的速度限制,則可以45mph的速度限制填充中間路段)。
其他實(shí)施例僅填充生成道路幾何結(jié)構(gòu)所必需的數(shù)據(jù),諸如車道數(shù)量和道路寬度信息。例如,一些實(shí)施例可使用聚合道路內(nèi)的相鄰路段來生成車道數(shù)量(例如,如果特定路段的兩邊上的路段都具有特定數(shù)量的車道,則該特定數(shù)量的車道也可被分配給該特定路段)。對(duì)于道路寬度,一些實(shí)施例使用車道數(shù)量(如果其存在)來將寬度分配給道路(例如,假設(shè)每個(gè)車道為4米寬)。另一方面,一些實(shí)施例基于道路類型來分配道路寬度(即,高速公路具有第一寬度、主要干線具有第二寬度等)。實(shí)際上,一些實(shí)施例自道路類型得出車道數(shù)量(例如,高速公路總是被分配三個(gè)車道等),然后基于車道數(shù)量來生成寬度。
另外,一些實(shí)施例填充用于高度或標(biāo)高信息的缺失數(shù)據(jù)。如以上所述,在一些情況下地圖數(shù)據(jù)具體指示特定路段通過另一個(gè)路段上方(或下方),或通過接合點(diǎn)上方(或下方),或者特定接合點(diǎn)通過另一個(gè)接合點(diǎn)上方(或下方)。然而,該相對(duì)標(biāo)高數(shù)據(jù)在一些情況下可能缺失。當(dāng)?shù)谝宦范?或接合點(diǎn))和第二路段(或接合點(diǎn))具有在平坦平面中相交的中心線路徑,但對(duì)于所述路段沒有定義接合點(diǎn)時(shí),則路徑必須在不同的標(biāo)高處。當(dāng)包括來自地圖數(shù)據(jù)提供方的絕對(duì)標(biāo)高數(shù)據(jù)時(shí),該數(shù)據(jù)可用于確定相對(duì)標(biāo)高數(shù)據(jù)(即,定義具有較低絕對(duì)標(biāo)高的第一路段通過具有較高絕對(duì)標(biāo)高的第二路段下方的關(guān)系)。
當(dāng)對(duì)于在平面中相交但在接合點(diǎn)處不相匯的路段的特定集合無法確定相對(duì)標(biāo)高數(shù)據(jù)時(shí),一些實(shí)施例創(chuàng)建針對(duì)路段的隨機(jī)相對(duì)排序。在其他實(shí)施例中,可能的相對(duì)排序可自非相交道路的道路類型得出,但是也可以使用其他附近路段的屬性。圖11示出了第一路段1105(“i-405n”)與第二路段1110(“威爾士大道”)和第三路段1115(“主街”)相交(在平面中)的情形。然而,在這種情況下,地圖數(shù)據(jù)不指示這些路段之間的任何接合點(diǎn)。i-405n路段具有高度1而wilshire路段具有高度0。然而,主街路段具有空高度(即,該信息沒有提供)?;趇-405n路段在威爾士大道路段上方行進(jìn)的事實(shí),一些實(shí)施例還假定i-405n將在主街上方行進(jìn)。如此,地圖繪制服務(wù)操作以值0自動(dòng)填充用于主街的路段數(shù)據(jù)結(jié)構(gòu)的高度,或者將填充指示主街路段在i-405n路段下方行進(jìn)的相對(duì)排序。
另外,過程700建立(在730處)道路與路段之間的關(guān)系。在一些實(shí)施例中,建立關(guān)系包括識(shí)別語義數(shù)據(jù),諸如雙行車道的相對(duì)邊,和定義相關(guān)道路之間的連結(jié)。在一些實(shí)施例中,過程識(shí)別包含具有相同或類似名稱(例如,“i-5n”和“i-5s”)的路段的道路、標(biāo)記為雙行車道(即,以路字段的形式)的道路,以及在彼此的閾值距離和平行的閾值角度內(nèi)的道路。圖12示出了相隔距離x、在相反的方向上平行地延伸并且兩者都稱為“主街”的兩個(gè)路段1205和1210。假設(shè)距離x小于用于具有相同名稱的道路的閾值距離,則這些道路將被連結(jié)為相關(guān)聯(lián)的雙行車道,并且道路之間的轉(zhuǎn)彎可被分類為u形轉(zhuǎn)彎而不是獨(dú)立左轉(zhuǎn)彎??蓚鞑サ念~外語義數(shù)據(jù)包括為連接道路/岔道分配名稱(例如,高速公路入口、高速公路立體交叉道、右轉(zhuǎn)彎岔道等)。
最后,過程700生成(在735處)道路的平滑型式。在一些實(shí)施例中,中心線數(shù)據(jù)可具有噪聲。例如,高速公路的五英里伸展現(xiàn)實(shí)中可為直的,但數(shù)據(jù)在各處可具有輕微的反復(fù)。另外,因?yàn)榈缆繁欢x為中心線頂點(diǎn)之間的線,所以彎折可能出現(xiàn)在道路實(shí)際上具有平滑轉(zhuǎn)彎的地方。此外,當(dāng)路段在接合點(diǎn)處接合時(shí),這可創(chuàng)建實(shí)際上應(yīng)該更平滑的急轉(zhuǎn)彎。因?yàn)檫@種噪聲是不需要的,所以一些實(shí)施例對(duì)道路圖中的道路(例如,每次一個(gè)路段,或?qū)酆系缆?施加由道路特性控制的平滑操作。為了執(zhí)行平滑,各種不同的操作可由不同實(shí)施例執(zhí)行。一些實(shí)施例使用基于道路中的每個(gè)頂點(diǎn)的相鄰頂點(diǎn)的位置使該每個(gè)頂點(diǎn)移動(dòng)一段距離的平滑操作(例如,拉普拉斯平滑)。
一些實(shí)施例對(duì)于較快的道路允許更多平滑,因?yàn)槠谕@些道路(例如,高速公路)將更平滑且不太可能具有尖角。一些實(shí)施例使用速度限制數(shù)據(jù)來控制平滑。例如,一些實(shí)施例對(duì)于具有不同速度限制的道路允許中心線與所接收的頂點(diǎn)數(shù)據(jù)的不同偏差(例如,對(duì)于速度限制65的道路允許達(dá)5米的偏差,并且對(duì)于30mph的道路允許2米的偏差)。圖13示出了具有25mph的速度限制的彎折的道路1310。對(duì)道路施加平滑操作的結(jié)果被示出為修改的道路1320。另一方面,圖14示出了具有60mph的速度限制的類似彎折的道路1410。對(duì)道路施加類似平滑操作的結(jié)果被示出為修改的道路1420。如圖所示,修改的道路1420示出了較高級(jí)別的曲線平滑,因?yàn)榈缆返乃俣认拗戚^大。一些實(shí)施例使用其他特性來修改所允許的平滑的級(jí)別,諸如道路類型(其可充當(dāng)用于速度限制的代理)。
另外,一些實(shí)施例在特殊情況下限制平滑。例如,道路可能進(jìn)行90°轉(zhuǎn)彎(例如,其中兩條道路都在居住地區(qū)中的接合點(diǎn)處結(jié)束,并且已連結(jié)在一起)。在此類情況下,一些實(shí)施例固定接近于接合點(diǎn)的兩個(gè)點(diǎn)(90°轉(zhuǎn)彎的每個(gè)邊上一個(gè))并且平滑這兩個(gè)點(diǎn)之間的小急彎,而不是過多地平滑道路。
b.生成道路幾何結(jié)構(gòu)
在從路段和接合點(diǎn)生成道路圖、聚合道路圖中的道路、填充缺失數(shù)據(jù)、平滑聚合道路等之后,一些實(shí)施例的地圖繪制服務(wù)的離線處理生成用于道路圖中的道路的幾何結(jié)構(gòu)。在一些實(shí)施例中,幾何結(jié)構(gòu)包括定義將要由客戶端地圖繪制應(yīng)用渲染的多邊形的邊緣的頂點(diǎn)集合。這些幾何結(jié)構(gòu)包括在矢量地圖圖塊中,所述矢量地圖圖塊被發(fā)送至運(yùn)行地圖繪制應(yīng)用的設(shè)備,以便地圖繪制應(yīng)用渲染所得的多邊形。地圖繪制服務(wù)處理最初以路段定義(即,中心線頂點(diǎn)和寬度數(shù)據(jù))的幾何結(jié)構(gòu)為基礎(chǔ),而且還對(duì)幾何結(jié)構(gòu)執(zhí)行各種調(diào)節(jié)操作,諸如平滑多邊形以創(chuàng)建更逼真的渲染道路和交叉口、消除重疊,以及以標(biāo)記要繪制的特征(例如,陰影、橋框、路緣、人行道、隧道等)的數(shù)據(jù)對(duì)頂點(diǎn)作注釋。
圖15概念性地示出了用于生成將用于在客戶端地圖繪制應(yīng)用上生成道路多邊形的道路幾何結(jié)構(gòu)的一些實(shí)施例的過程1500。與過程700一樣,各種實(shí)施例將過程1500執(zhí)行為可在單個(gè)計(jì)算設(shè)備上執(zhí)行或分布在若干計(jì)算設(shè)備上的離線過程。
如圖所示,過程1500從接收(在1505處)用于地圖區(qū)域的道路圖開始。如上所述以及圖8所示,道路圖是路段和接合點(diǎn)的連接集。在一些實(shí)施例中,針對(duì)不同的地圖區(qū)域(例如,針對(duì)州、矩形地理區(qū)域、大陸塊等)單獨(dú)地運(yùn)行過程700(或類似的道路圖生成過程)。
幾何結(jié)構(gòu)生成過程1500生成(在1510處)道路圖中的路段的初始多邊形表示。一些實(shí)施例將分段的線性中心線表示(其應(yīng)在以固定距離插入頂點(diǎn)并隨后平滑這些頂點(diǎn)后在過程諸如上述過程700中得到合理平滑)展開成沿循道路路徑的多邊形,所述道路具有由其路段數(shù)據(jù)結(jié)構(gòu)所指定的寬度。所得多邊形基本上為具有可能看起來彎曲的平行邊的結(jié)構(gòu)。然而,這些多邊形在許多情形下將需要被調(diào)節(jié)以便生成更逼真的道路動(dòng)畫。
在一些實(shí)施例中,多邊形調(diào)節(jié)包括平滑多邊形以創(chuàng)建更逼真的渲染道路和接合點(diǎn)、消除重疊、以及以標(biāo)記要繪制的特征(例如,陰影、橋框、路緣、隧道等)的數(shù)據(jù)對(duì)頂點(diǎn)作注釋。過程1500中的接下來若干操作以特定順序描述這些調(diào)節(jié)操作。然而,本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,一旦初始多邊形被增長,這些操作可以各種不同順序執(zhí)行。
過程1500調(diào)節(jié)(在1515處)接合點(diǎn)處的幾何結(jié)構(gòu)。一般來說,除兩個(gè)或更多個(gè)幾何結(jié)構(gòu)之間的重疊以外,主要在道路圖的接合點(diǎn)處需要平滑。在路段內(nèi),上述頂點(diǎn)的平滑應(yīng)防止任何種類的強(qiáng)加事物或不規(guī)則性。一些實(shí)施例遍歷道路圖,并且在每個(gè)接合點(diǎn)處確定對(duì)幾何結(jié)構(gòu)的任何修改是否為確??蛻舳说貓D繪制應(yīng)用處平滑的、有吸引力的渲染道路所必需的(并且隨后進(jìn)行那些修改)。這些接合點(diǎn)可僅僅涉及沿速度限制改變的直線繼續(xù)的道路(如果道路寬度保持恒定,則在一些實(shí)施例中這將不涉及任何平滑),但是可能還包括高速公路并道、以各種角度相交的道路、大道路與小道路之間的交叉口(其中高速公路并道是一個(gè)實(shí)例)、車道擴(kuò)展等。
以下將連同實(shí)例中的一些的圖一起來描述各種類型的這些接合點(diǎn)平滑實(shí)例。當(dāng)?shù)缆窋U(kuò)展或收縮其車道數(shù)量時(shí),一些實(shí)施例執(zhí)行特定的平滑操作。在一些實(shí)施例中,地圖繪制服務(wù)處理首先確定接合點(diǎn)是否包括僅兩個(gè)邊緣,并且隨后確定所述兩個(gè)邊緣連接在道路內(nèi)。如果是這樣,并且車道數(shù)量改變,則一些實(shí)施例執(zhí)行以下過渡平滑操作中的一者以防止看起來不自然的尖角。
圖16示出了經(jīng)過三個(gè)階段1610-1630執(zhí)行以平滑車道擴(kuò)展接合點(diǎn)的第一操作,其中道路的兩邊中的一者保持為直的(即,是“對(duì)齊的”)。如第一階段1610中所示,在該實(shí)例中,第一路段1605連接至第二路段1615中。第一路段1605具有指示該第一路段具有兩個(gè)車道的數(shù)據(jù),而第二路段1615具有指示該第二路段具有三個(gè)車道的數(shù)據(jù)。在一些情況下,在從地圖數(shù)據(jù)提供方接收的路段數(shù)據(jù)中指示該數(shù)據(jù)。當(dāng)?shù)貓D數(shù)據(jù)提供方包括車道信息時(shí),在一些情況下該提供方另外包括車道連接性數(shù)據(jù)。在一些情況下,車道被編號(hào)(例如,從左至右),并且連接性數(shù)據(jù)指示第一路段(例如,路段1605)中的哪個(gè)車道繼續(xù)進(jìn)入第二路段(例如,路段1615)中的哪個(gè)車道中。如第一階段1610中所示,在這種情況下,第一路段1605的車道1繼續(xù)進(jìn)入第二路段1615的車道1中,而第一路段的車道2繼續(xù)進(jìn)入第二路段的車道2和車道3兩者中。這指示車道擴(kuò)展發(fā)生在道路的右邊(基于道路的行進(jìn)方向的“右”)上。該車道連接性數(shù)據(jù)在各種實(shí)施例中可與接合點(diǎn)存儲(chǔ)在一起,或與路段中的一者或兩者存儲(chǔ)在一起。
第二階段1620示出了第一路段和第二路段的初始增長的路段幾何結(jié)構(gòu)1625和1635。如可看出的,第二路段幾何結(jié)構(gòu)1635比第一路段幾何結(jié)構(gòu)1625寬,并且該額外寬度中的全部都在道路的右邊,而道路的左邊為對(duì)齊的。當(dāng)提供車道連接性數(shù)據(jù)時(shí),一些實(shí)施例生成具有出現(xiàn)在正確位置中的額外車道的幾何結(jié)構(gòu)。然而,當(dāng)使用此幾何結(jié)構(gòu)渲染時(shí),柏油將看來像是具有90度角度,并且車道莫名其妙地出現(xiàn)。雖然高速公路車道確實(shí)偶而以這種方式開始,但是通常高速公路車道從現(xiàn)有車道平滑地?cái)U(kuò)展出來。
因此,一些實(shí)施例使車道擴(kuò)展自動(dòng)逐漸減小,如第三階段1630中所示。一些實(shí)施例識(shí)別沿較窄路段幾何結(jié)構(gòu)(具有較少車道的幾何結(jié)構(gòu))的邊緣的一個(gè)點(diǎn),并且從該點(diǎn)至較寬路段的邊緣的開始逐漸減小。一些實(shí)施例使用固定的距離來識(shí)別該點(diǎn)(例如,25米、50米等)。逐漸減小可為直線(如所示)或曲線。另外,一些實(shí)施例使用較寬幾何結(jié)構(gòu)內(nèi)的過渡,或使過渡遍布兩個(gè)幾何結(jié)構(gòu)。
圖17示出了如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的平滑車道擴(kuò)展的結(jié)果1700(例如,在便攜式設(shè)備的顯示器上)。對(duì)于該圖,以及該章節(jié)內(nèi)的許多圖,示出了如在客戶端地圖繪制應(yīng)用上渲染的特定路段的結(jié)果。在這些圖中,沒有顯示通常將存在于地圖繪制應(yīng)用顯示器上的各種控件和特征(例如,用戶位置指示符(或?qū)Ш轿恢闷?、路線線條、額外土地覆蓋物和建筑物特征、ui控件等),以便突出路段的各個(gè)方面。在圖17中,柏油進(jìn)行從兩個(gè)車道至三個(gè)車道的平滑過渡,并且車道標(biāo)記在車道完全形成之前一點(diǎn)開始。如以下將描述的,一些實(shí)施例增添道路框(例如,路緣、護(hù)攔等)和車道標(biāo)記。在不同實(shí)施例中,用于繪制道路框的指令可被傳送至客戶端地圖繪制應(yīng)用作為額外幾何結(jié)構(gòu)或作為對(duì)幾何結(jié)構(gòu)的注釋,其中用于渲染的指令基于存儲(chǔ)在客戶端設(shè)備處的注釋。
圖18示出了經(jīng)過三個(gè)階段1810-1830執(zhí)行以平滑車道擴(kuò)展接合點(diǎn)的第二操作,其中道路在兩邊擴(kuò)展。如第一階段1810中所示,在該實(shí)例中,第一路段1805連接至第二路段1815中。在這種情況下,不存在車道連接性數(shù)據(jù),但是第一路段1805具有兩個(gè)車道,而第二路段1815具有三個(gè)車道。車道計(jì)數(shù)數(shù)據(jù)可從地圖提供方直接提供,或從所提供的道路寬度或道路類型得出。
第二階段1820示出了第一路段和第二路段的初始增長的路段幾何結(jié)構(gòu)1825和1835。如可看到,第二路段幾何結(jié)構(gòu)1835比第一路段幾何結(jié)構(gòu)1825寬,并且額外寬度在道路的兩個(gè)邊之間拆分。當(dāng)沒有車道連接性數(shù)據(jù)可用時(shí),一些實(shí)施例使用拆分道路的兩個(gè)邊之間的差的默認(rèn)車道擴(kuò)展。然而,當(dāng)使用該幾何結(jié)構(gòu)渲染時(shí),柏油將看來像是在兩邊上都具有90度角度。雖然高速公路車道可能偶而以這種方式開始,但是通常高速公路車道從現(xiàn)有車道平滑地?cái)U(kuò)展出來。
因此,一些實(shí)施例使車道擴(kuò)展在兩邊上都自動(dòng)逐漸減小,如第三階段1830中所示。一些實(shí)施例對(duì)于道路的每個(gè)邊識(shí)別沿較窄路段幾何結(jié)構(gòu)的邊緣的一個(gè)點(diǎn),并且從該點(diǎn)至較寬路段的邊緣的開始逐漸減小。一些實(shí)施例使用固定的距離來識(shí)別該點(diǎn)(例如,25米、50米等)。逐漸減小可為直線(如所示)或曲線。另外,一些實(shí)施例使用較寬幾何結(jié)構(gòu)內(nèi)的過渡,或使過渡遍布兩個(gè)幾何結(jié)構(gòu)。
圖19示出了如由客戶端地圖繪制應(yīng)用渲染的平滑車道擴(kuò)展的結(jié)果1900(例如,在便攜式設(shè)備的顯示器上)。柏油進(jìn)行從兩個(gè)車道至三個(gè)車道的平滑過渡。一些實(shí)施例使車道中的兩者在一個(gè)方向上彎曲并且在另一邊上增添新車道,以便在一些實(shí)施例中保持車道標(biāo)記連續(xù)(例如,為新車道選取隨機(jī)邊,或使用默認(rèn)值)。
以上實(shí)例是所關(guān)注的接合點(diǎn)僅具有兩個(gè)路段的情形。針對(duì)具有三條或更多個(gè)路段的接合點(diǎn),一些實(shí)施例識(shí)別特殊情況,并且對(duì)于其他情況通過接合點(diǎn)中的路段的列表逐步安排并且對(duì)用于后續(xù)道路對(duì)的幾何結(jié)構(gòu)執(zhí)行校正。當(dāng)雙向單行車道道路拆分成一對(duì)對(duì)應(yīng)的雙行車道時(shí),一個(gè)此類特殊情況發(fā)生。這經(jīng)常發(fā)生在中央分離帶被引入雙車道道路(在任一方向上一個(gè)車道)中的時(shí)候。一些實(shí)施例在外邊緣處使道路向外(從單行車道至雙行車道)逐漸減小,并且識(shí)別用于兩個(gè)雙行車道的內(nèi)部邊緣的并道點(diǎn)。一些實(shí)施例使用車道信息來確定并道點(diǎn)(例如,如果雙行車道中的一者是一個(gè)車道而另一者是兩個(gè)車道),而其他實(shí)施例使用在單行車道(在其結(jié)束處)的中心處的一個(gè)點(diǎn)的默認(rèn)值。
當(dāng)通過接合點(diǎn)處的路段的列表逐步安排時(shí),一些實(shí)施例基于兩個(gè)路段之間的角度執(zhí)行不同校正。一些實(shí)施例選擇接合點(diǎn)的第一路段,然后校正由路段幾何結(jié)構(gòu)(如離開接合點(diǎn)查看的)的左邊形成的拐角,其中用于第二路段的路段幾何結(jié)構(gòu)(如離開接合點(diǎn)查看的)的右邊相對(duì)于第一路段直接在逆時(shí)針方向上。然后將第二路段設(shè)定為第一路段,并且對(duì)于下一拐角重復(fù)該過程,直到全部拐角都被校正為止。
以下將連同實(shí)例中的一些的圖一起來描述對(duì)于各種接合點(diǎn)角度執(zhí)行的各種校正。這些圖盡管示出了具有若干路段的接合點(diǎn),但也示出了用于在實(shí)例中彼此相符的僅兩個(gè)路段的幾何結(jié)構(gòu)。
圖20示出了經(jīng)過三個(gè)階段2010-2030,當(dāng)路段之間的角度大于第一閾值角度(例如,170°)時(shí)執(zhí)行以平滑路段幾何結(jié)構(gòu)之間的拐角的逐漸減小操作。在此類情況下,一些實(shí)施例使道路中的一者的邊自動(dòng)逐漸減小以與另一道路的邊相匯。如第一階段2010中所示,在該實(shí)例中,第一路段2005與第二路段2015在接合點(diǎn)處相交以及與兩條額外路段2025和2035相交。
第二階段2020示出了兩個(gè)路段2005和2015的初始增長的路段幾何結(jié)構(gòu)2040和2045。其他兩個(gè)路段的幾何結(jié)構(gòu)未在該圖中示出,因?yàn)橐恍?shí)施例的地圖繪制服務(wù)處理一次校正接合點(diǎn)的一個(gè)拐角,并且該實(shí)例示出了路段2005與路段2015之間的校正。一些實(shí)施例的地圖繪制服務(wù)處理將隨后執(zhí)行對(duì)路段2015與路段2025之間的拐角的校正、對(duì)路段2025與路段2035之間的拐角的校正、以及最后對(duì)路段2035與路段2005之間的拐角的校正。如在該第二階段2020處所示,幾何結(jié)構(gòu)2040與幾何結(jié)構(gòu)2045之間的初始拐角涉及視覺上不協(xié)調(diào)的(并且不真實(shí)的)中斷,部分由于道路具有不同的寬度(然而一些實(shí)施例對(duì)于相同寬度的道路執(zhí)行相同的過程)。
因此,一些實(shí)施例使較窄路段的邊自動(dòng)逐漸減小至較寬路段的邊,如由第三階段2030中的修改的幾何結(jié)構(gòu)2040所示。在這種情況下,因?yàn)檩^寬路段是兩個(gè)路段中更偏逆時(shí)針方向的,所以處理使較窄路段的左邊逐漸減小至較寬路段的右邊(對(duì)于該實(shí)例和后續(xù)實(shí)例,特定路段的“右”邊和“左”邊是自沿特定路段離開接合點(diǎn)的車輛的視角查看的)。當(dāng)較寬路段是兩個(gè)路段中更偏順時(shí)針方向的時(shí),處理使較窄路段的右邊逐漸減小至較寬路段的左邊。為了執(zhí)行逐漸減小操作,一些實(shí)施例固定沿較窄路段幾何結(jié)構(gòu)的邊的一個(gè)點(diǎn),并且從該點(diǎn)至較寬幾何結(jié)構(gòu)的邊的開始逐漸減小。一些實(shí)施例使用固定的距離來識(shí)別該點(diǎn)(例如,25米、50米等)。逐漸減小可為直線(如所示)或曲線。該操作類似于圖16中所示的逐漸減小,并且當(dāng)不同寬度的僅兩條道路在接合點(diǎn)處相匯時(shí)也可被執(zhí)行。
圖21示出了如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的平滑接合點(diǎn)的結(jié)果2100(例如,在便攜式設(shè)備的顯示器上)。柏油指示從第一路段(示出在顯示器的底部)至第二較寬路段(示出在顯示器的右上方)的平滑右轉(zhuǎn)彎。另外,顯示器包括用于形成交叉口的其他兩個(gè)路段的柏油(和車道標(biāo)記、道路框等)。在不同實(shí)施例中,用于繪制道路框的指令可被傳送至客戶端地圖繪制應(yīng)用作為額外幾何結(jié)構(gòu)或作為對(duì)幾何結(jié)構(gòu)的注釋,其中用于渲染的指令基于存儲(chǔ)在客戶端設(shè)備處的注釋。
圖22示出了經(jīng)過三個(gè)階段2210-2230,當(dāng)路段之間的角度小于第一閾值角度并大于第二閾值角度(例如,在120°與170°之間)時(shí)執(zhí)行以平滑路段幾何結(jié)構(gòu)之間的拐角的投影操作。在此類情況下,一些實(shí)施例使道路中的一者的邊自動(dòng)投影以與另一個(gè)道路的邊相匯。如第一階段2210中所示,在該實(shí)例中,第一路段2205與第二路段2215在接合點(diǎn)處相交以及與兩條額外路段2225和2235相交。
第二階段2220示出了兩個(gè)路段2205和2215的初始增長的路段幾何結(jié)構(gòu)2240和2245。其他兩個(gè)路段的幾何結(jié)構(gòu)未在該圖中示出,因?yàn)橐恍?shí)施例的地圖繪制服務(wù)處理一次校正接合點(diǎn)的一個(gè)拐角,并且該實(shí)例示出了路段2205與路段2215之間的校正。一些實(shí)施例的地圖繪制服務(wù)處理將隨后執(zhí)行對(duì)路段2215與路段2225之間的拐角的校正、對(duì)路段2225與路段2235之間的拐角的校正,以及最后對(duì)路段2235與路段2205之間的拐角的校正。如在該第二階段2220處所示,幾何結(jié)構(gòu)2240與幾何結(jié)構(gòu)2245之間的初始拐角涉及視覺上不協(xié)調(diào)的(并且不真實(shí)的)中斷,部分由于道路具有不同的寬度(然而一些實(shí)施例對(duì)于相同寬度的道路執(zhí)行相同的過程)。
鑒于針對(duì)圖20中所示的幾何結(jié)構(gòu)之間的角度,一些實(shí)施例的地圖繪制服務(wù)處理使較窄道路逐漸減小至較寬道路,在該實(shí)例中,地圖繪制服務(wù)處理使較寬道路的邊投影至較窄道路上,如由第三階段2230中的修改的幾何結(jié)構(gòu)2240所示。在這種情況下,因?yàn)檩^寬路段是兩個(gè)路段中更偏逆時(shí)針方向的,所以處理使幾何結(jié)構(gòu)2245的右邊投影至幾何結(jié)構(gòu)2240的中心線(或左邊,在一些實(shí)施例中)上。當(dāng)較寬路段是兩個(gè)路段中更偏順時(shí)針方向的時(shí),處理使較寬路段的左邊投影至較窄路段的中心線(或右邊,在一些實(shí)施例中)上。鑒于逐漸減小操作涉及改變路段中的一者的邊的角度,在一些實(shí)施例中投影僅延伸所投影的邊,如階段2230中所示。
圖23示出了如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的平滑接合點(diǎn)的結(jié)果2300(例如,在便攜式設(shè)備的顯示器上)。柏油指示從第一路段(示出在顯示器的底部)至第二較寬路段(示出在顯示器的右上方)的平滑右轉(zhuǎn)彎。另外,顯示器包括用于形成交叉口的其他兩個(gè)路段的柏油(和車道標(biāo)記、道路框等)。在不同實(shí)施例中,用于繪制道路框的指令可被傳送至客戶端地圖繪制應(yīng)用作為額外幾何結(jié)構(gòu)或作為對(duì)幾何結(jié)構(gòu)的注釋,其中用于渲染的指令基于存儲(chǔ)在客戶端設(shè)備處的注釋。
圖24示出了經(jīng)過三個(gè)階段2410-2430,當(dāng)路段之間的角度小于第一閾值角度并大于第二閾值角度(例如,在30°與80°之間)時(shí)執(zhí)行以消除路段幾何結(jié)構(gòu)的多余道路的裁剪操作。在此類情況下,一些實(shí)施例自動(dòng)裁剪道路中的一者或兩者的邊以避免超過另一條道路。如第一階段2410中所示,在該實(shí)例中,第一路段2405與第二路段2415在接合點(diǎn)處相交以及與額外路段2425相交。
第二階段2420示出了兩個(gè)路段2405和2415的初始增長的路段幾何結(jié)構(gòu)2440和2445。其他路段的幾何結(jié)構(gòu)未在該圖中示出,因?yàn)橐恍?shí)施例的地圖繪制服務(wù)處理一次校正接合點(diǎn)的一個(gè)拐角,并且該實(shí)例示出了路段2405與路段2415之間的校正。下文所述的圖25示出了路段2415與路段2425之間的校正。如在該第二階段2420處所示,幾何結(jié)構(gòu)2440與2445之間的初始拐角是沒有問題的,但幾何結(jié)構(gòu)2445的右邊超過幾何結(jié)構(gòu)2440的右邊,部分由于幾何結(jié)構(gòu)2440比幾何結(jié)構(gòu)2445窄。
因此,一些實(shí)施例的地圖繪制服務(wù)處理將更偏順時(shí)針方向的路段的左邊裁剪回到兩個(gè)路段中的更偏逆時(shí)針方向的中心線,并且對(duì)應(yīng)地將更偏逆時(shí)針方向的路段的右邊裁剪回到更偏順時(shí)針方向的路段的中心線,如由第三階段2430中的修改的幾何結(jié)構(gòu)2440和2445所示。在一些實(shí)施例中,僅裁剪較寬路段的邊,但是其他實(shí)施例如所示裁剪兩個(gè)幾何結(jié)構(gòu)。如第三階段2430中所示,這移除道路的多余“耳部”,該多余“耳部”否則將與事實(shí)不符地伸出交叉口。
圖25示出了經(jīng)過三個(gè)階段2510-2530,執(zhí)行以平滑路段幾何結(jié)構(gòu)2445與路段2425的路段幾何結(jié)構(gòu)2505之間的拐角的相交操作。一些實(shí)施例由于以大于180°的角度留在路段幾何結(jié)構(gòu)之間的間隙而對(duì)于此類大角度執(zhí)行相交操作。在此類情況下,一些實(shí)施例識(shí)別道路邊的切線之間的交叉口,并且延伸或裁剪道路幾何結(jié)構(gòu),使得邊在該交叉點(diǎn)處結(jié)束。
第二階段2520示出了如在圖24中所示的操作中修改的路段幾何結(jié)構(gòu)2445,以及路段2425的初始增長的路段幾何結(jié)構(gòu)2505。如圖所示,這(1)留下兩個(gè)幾何結(jié)構(gòu)之間的間隙,并且(2)導(dǎo)致較寬路段2445超過路段2505。第二階段還示出了表示更偏順時(shí)針方向的幾何結(jié)構(gòu)2445的左邊的投影與更偏逆時(shí)針方向的幾何結(jié)構(gòu)2505的右邊的投影的相交的虛線。
如第三階段2530中所示,一些實(shí)施例將幾何結(jié)構(gòu)的邊裁剪或投影至該交叉點(diǎn)。就較窄路段2505而言,邊延伸來填充間隙,而就較寬路段2445而言,裁剪邊以防止幾何結(jié)構(gòu)2505的超過。
圖26示出了如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的來自前兩個(gè)圖的平滑接合點(diǎn)的結(jié)果2600(例如,在便攜式設(shè)備的顯示器上)。柏油指示后續(xù)道路中的每一者之間的平滑轉(zhuǎn)彎,而沒有缺失部分或多余柏油片。
圖27示出了經(jīng)過三個(gè)階段2710-2730,在一些實(shí)施例中執(zhí)行以平滑在符合高速公路入口匝道的特征的情形下的路段幾何結(jié)構(gòu)之間的拐角的逐漸減小操作。在該實(shí)例中,第一路段2705在接合點(diǎn)處繼續(xù)直線進(jìn)入第三路段2725中,其中第二路段2715以相對(duì)于第一路段2705的淺角度進(jìn)入接合點(diǎn)。該情形在一些實(shí)施例中符合高速公路并道的輪廓:第一路段和第三路段是連接的道路、比第二路段更寬,并且第一路段與第二路段之間的角度小于閾值角度(例如,30°)。
第二階段2720示出了三個(gè)路段2705-2725的初始增長的路段幾何結(jié)構(gòu)2735-2745。兩個(gè)高速公路段幾何結(jié)構(gòu)2735和2745顯著比入口匝道路段幾何結(jié)構(gòu)2740更寬。另外,第三路段幾何結(jié)構(gòu)2745比第一路段幾何結(jié)構(gòu)2745更寬,以便適應(yīng)并道車道。然而,因此,初始幾何結(jié)構(gòu)在入口匝道幾何結(jié)構(gòu)2740與第三路段幾何結(jié)構(gòu)2745之間留下間隙。
因此,一些實(shí)施例的地圖繪制服務(wù)處理使第二幾何結(jié)構(gòu)2740的外側(cè)(左邊)逐漸減小至第三幾何結(jié)構(gòu)2745的右邊,如第三階段2730中所示。在這種情況下,逐漸減小被示出為彎曲的路邊,但是不同實(shí)施例可使用其他方法(例如,使用直線來連接路段)。一些實(shí)施例還使用從第一幾何結(jié)構(gòu)2735的左邊至第三幾何結(jié)構(gòu)2745的右邊的逐漸減小,如在以下所示的渲染結(jié)果中。
圖28示出了如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的平滑高速公路并道接合點(diǎn)的結(jié)果2800(例如,在便攜式設(shè)備的顯示器上)。柏油指示平滑并道,而非將作為初始矩形幾何結(jié)構(gòu)的結(jié)果渲染的不連貫顯示。此外,該圖示出了一些實(shí)施例不同地渲染不同的道路。例如,一些實(shí)施例將高速公路渲染為與其他道路(包括高速公路入口匝道)不同的色彩(或色調(diào))。
除了使用逐漸減小、投影、裁剪等操作來修改幾何結(jié)構(gòu)之外,一些實(shí)施例使用用以在某些類型的接合點(diǎn)處創(chuàng)建更圓的拐角的技術(shù)。一些實(shí)施例生成創(chuàng)建這些圓拐角的新幾何結(jié)構(gòu),而不是使用技術(shù)來修改已經(jīng)生成的路段幾何結(jié)構(gòu)以便創(chuàng)建圓拐角。在一些實(shí)施例中,修改已經(jīng)生成的路段幾何結(jié)構(gòu)將是處理極其密集的。
圖29示出了經(jīng)過三個(gè)階段2910-2930接合點(diǎn)處的此類額外幾何結(jié)構(gòu)的生成以便在接合點(diǎn)處創(chuàng)建更逼真的圓拐角。第一階段2910示出了具有以直角相交的四個(gè)路段2905-2935的接合點(diǎn)。第二階段2920示出了用于這些路段的初始幾何結(jié)構(gòu)。在這種情況下,全部路段具有相同寬度,因此幾何結(jié)構(gòu)全部具有相同形狀和大小。因?yàn)槁范沃g的角度全部為直角,所以不需要以上所描述的投影、裁剪或逐漸減小中的任一者。
第三階段2930示出了與路段幾何結(jié)構(gòu)重疊并生成交叉口的圓拐角的額外幾何結(jié)構(gòu)的生成。具體來說,額外幾何結(jié)構(gòu)2940(示出為實(shí)線,而路段幾何結(jié)構(gòu)在該階段處由虛線表示)具有從接合點(diǎn)位置朝向距由路段幾何結(jié)構(gòu)形成的90°拐角固定距離處的點(diǎn)輻射出的邊緣。額外幾何結(jié)構(gòu)2940還具有這些點(diǎn)之間的彎曲線(或足夠頂點(diǎn)之間的直線以近似彎曲線,使得交叉口將被渲染成具有更逼真的彎曲外觀)。
圖30示出了如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的平滑交叉口的結(jié)果3000(例如,在便攜式設(shè)備的顯示器上)。柏油在路段之間不進(jìn)行不協(xié)調(diào)的90°轉(zhuǎn)彎,而相反地具有更彎曲的令人愉快的外觀。另外,交叉口包括停止線和中心線標(biāo)記,以下描述停止線和中心線標(biāo)記的生成。
返回圖15,過程1500還消除(在1520處)道路重疊。在一些情況下,兩個(gè)(或更多個(gè))初始增長的道路幾何結(jié)構(gòu)將不正確地重疊。在接合點(diǎn)處相交的路段的幾何結(jié)構(gòu)將重疊,并且當(dāng)不形成接合點(diǎn)的兩個(gè)路段但是跨過相同緯度/經(jīng)度坐標(biāo)(例如,堆疊級(jí)別的道路、在彼此上方/下方穿過的道路等)時(shí),其幾何結(jié)構(gòu)將重疊(如投影至表示地球表面的平坦平面上)。然而,當(dāng)大多數(shù)其他幾何結(jié)構(gòu)重疊時(shí),這很可能是由于不正確的數(shù)據(jù)并且應(yīng)被校正。在沒有校正的情況下,當(dāng)兩條道路實(shí)際上不相交時(shí),渲染的地圖將向地圖繪制應(yīng)用的用戶指示所述道路相交。
此類重疊的最常見情況是在兩條對(duì)應(yīng)的雙行車道重疊時(shí)(例如,向北行駛和向南行駛的或向東行駛和向西行駛的高速公路、由中央分離帶劃分的干線道路的相對(duì)邊等)。在大多數(shù)情況下,此類對(duì)應(yīng)的雙行車道的幾何結(jié)構(gòu)應(yīng)彼此非常接近而事實(shí)上不重疊然而,因?yàn)槁范螏缀谓Y(jié)構(gòu)基于路段的中心線和寬度數(shù)據(jù),所以如果所述信息中的任一者稍微不準(zhǔn)確,則幾何結(jié)構(gòu)可能無法正確地排列起來。例如,當(dāng)既不為道路提供車道計(jì)數(shù)也不為道路提供寬度時(shí),一些實(shí)施例基于道路類型得出寬度。然而,如果道路事實(shí)上比其道路類型的通常情況更窄,則道路幾何結(jié)構(gòu)可最終比現(xiàn)實(shí)世界中的實(shí)際道路更大。可引起此類重疊的其他情形包括高速公路和其支路、在高速公路處到達(dá)盡頭而非在高速公路上方或下方穿過的道路等。
不同的實(shí)施例使用不同的技術(shù)來移除路段幾何結(jié)構(gòu)的這些重疊。例如,一些實(shí)施例在重疊的位置處將兩條道路推開,而其他實(shí)施例減小重疊處的道路的寬度。另外,在將道路移開之后,當(dāng)?shù)缆窞閷?duì)應(yīng)的雙行車道時(shí),一些實(shí)施例增添道路幾何結(jié)構(gòu)之間的中央分離帶的幾何結(jié)構(gòu)。
圖31示出了經(jīng)過三個(gè)階段3110-3130,在兩條道路重疊時(shí)將所述兩條道路推開。第一階段3110示出了第一路段3105和第二路段3115,各自作為頂點(diǎn)的序列。如上所述,一些實(shí)施例使用道路的中心線頂點(diǎn)之間的恒定距離,以便標(biāo)準(zhǔn)化使用頂點(diǎn)執(zhí)行的操作。當(dāng)由地圖繪制服務(wù)從數(shù)據(jù)提供方接收路段數(shù)據(jù)時(shí),在一些情況下表示路段中心線的頂點(diǎn)數(shù)據(jù)可以變化的距離(例如,具有10米、25米、50米等的間隙)定義。一些實(shí)施例在攝取路段數(shù)據(jù)時(shí)以預(yù)定間隔(例如,每10米)自動(dòng)定義頂點(diǎn)。這確保(i)道路將具有比頂點(diǎn)散開的情況下更彎曲、逼真的外觀,因?yàn)橐恍?shí)施例的地圖繪制服務(wù)處理定義頂點(diǎn)之間的直線邊緣。此外,其通過提供更多的點(diǎn)以在操作中移動(dòng)來使得上述的平滑操作更成功。此外,以固定間隔定義頂點(diǎn)使得能夠進(jìn)行用于道路重疊的更有用的測試。
第一階段3110另外示出了針對(duì)路段3105和3115的道路幾何結(jié)構(gòu)生成的路邊。如可清楚地看出,兩個(gè)生成的道路幾何結(jié)構(gòu)針對(duì)一部分重疊。為了檢測此類重疊,一些實(shí)施例生成圍繞道路中心線的邊緣(后續(xù)頂點(diǎn)之間的線)中的每一者的囊(capsule),并且對(duì)囊測試重疊。第一階段3110示出了四個(gè)此類囊:第一路段3105的囊3125和3135以及第二路段3115的囊3140和3145。囊在一些實(shí)施例中被定義成包圍兩個(gè)后續(xù)頂點(diǎn)之間的邊緣,并且伸出至道路的寬度(使用路段的中心線和寬度數(shù)據(jù))。雖然在該實(shí)例中示出為卵形(即,橢圓),但是不同的實(shí)施例將不同的形狀用于囊,諸如矩形或其他平行四邊形、其他橢圓體等。
如在第一階段處所示,第一路段3105的第一邊緣的囊3125與第二路段3115的第一邊緣的囊3140重疊。另外,第一路段3105的第二邊緣的囊3135不與第二路段3115的第二邊緣的囊3145重疊。另外,雖然在該圖中未示出,但是在具有所示囊的那些邊緣之間,每個(gè)路段的兩個(gè)邊緣的囊將很可能也重疊。為了在示出對(duì)路段的修改中簡單起見,在圖31
中未示出或說明這些額外重疊。在一些實(shí)施例中,當(dāng)在兩個(gè)路段的囊之間檢測到重疊時(shí),地圖繪制服務(wù)處理將“力”施加至被囊包圍的頂點(diǎn),以便將路段彼此推開。一些實(shí)施例使用彈簧-質(zhì)量方程式來確定該力,其中囊之間的較大重疊導(dǎo)致較大的向外力。即,重疊越大,概念上的彈簧質(zhì)量“壓縮”越多,從而導(dǎo)致更大的向外的力。一些實(shí)施例將該力施加至兩個(gè)重疊囊內(nèi)的四個(gè)頂點(diǎn)中的每一者,然后使力在到達(dá)附近頂點(diǎn)時(shí)也逐漸減小至消失。第二階段3120示出了這些力的施加,其中最大的力箭頭施加至囊3125和3140中的每一者內(nèi)部的兩個(gè)頂點(diǎn),并且較小的力箭頭施加至兩邊上的頂點(diǎn)。
在一些實(shí)施例中,地圖繪制服務(wù)處理識(shí)別重疊囊的每個(gè)集合,并且識(shí)別由于那個(gè)單獨(dú)的重疊而施加至每個(gè)頂點(diǎn)的力。在識(shí)別不同頂點(diǎn)上的力之后,地圖繪制服務(wù)處理將力整合于每個(gè)頂點(diǎn)上以得出用于路段的新中心線路徑。處理然后執(zhí)行相同的囊測試以確定路段之間的任何重疊是否仍然存在。如果仍然存在重疊,地圖繪制服務(wù)處理將額外力施加至頂點(diǎn)并且再次將所述頂點(diǎn)推開。第三階段3130示出了兩個(gè)路段3105和3115已經(jīng)被推開,使得圍繞第一路段的邊緣的囊完全不與圍繞第二路段的邊緣的囊重疊。如圖所示,兩個(gè)路段幾何結(jié)構(gòu)的路邊現(xiàn)在是獨(dú)立的并且完全不重疊。
其他實(shí)施例使用不同的機(jī)制來將頂點(diǎn)移開。例如,即使在多個(gè)重疊囊的情況下,一些實(shí)施例一檢測到第一重疊就移動(dòng)頂點(diǎn),一旦第一所識(shí)別的集合已被推開得足夠遠(yuǎn)以便避免任何重疊,則移動(dòng)至頂點(diǎn)的下一個(gè)集合。另外,雖然實(shí)例示出了力被施加至在重疊的那些邊緣附近的頂點(diǎn),但是一些實(shí)施例僅移動(dòng)實(shí)際上引起重疊的邊緣的頂點(diǎn)(即,僅囊3125和3140內(nèi)的頂點(diǎn))。此外,不同實(shí)施例可使用不同的方程式(即,不同于彈簧-質(zhì)量方程式)來確定將頂點(diǎn)推離彼此多少,并且使用不同的方程式來計(jì)算將周圍頂點(diǎn)移動(dòng)多遠(yuǎn)。
移動(dòng)路段的中心線頂點(diǎn)是由一些實(shí)施例用來處理重疊的道路幾何結(jié)構(gòu)的一種選項(xiàng)。另一方面,一些實(shí)施例減小在重疊附近的道路的寬度而非移動(dòng)中心線(即,減少道路幾何結(jié)構(gòu)的大小)。
圖32示出了經(jīng)過三個(gè)階段3210-3230,在路段重疊時(shí)減小兩個(gè)路段的寬度。第一階段3210示出了第一路段3205和第二路段3215,各自作為頂點(diǎn)的序列(類似于圖31中所示的路段)。如上所述,一些實(shí)施例使用道路的中心線頂點(diǎn)之間的恒定距離,以便標(biāo)準(zhǔn)化使用頂點(diǎn)執(zhí)行的操作。當(dāng)由地圖繪制服務(wù)從數(shù)據(jù)提供方接收路段數(shù)據(jù)時(shí),在一些情況下表示路段中心線的頂點(diǎn)數(shù)據(jù)可以變化的距離(例如,具有10米、25米、50米等的間隙)定義。一些實(shí)施例在攝取路段數(shù)據(jù)時(shí)以預(yù)定間隔(例如,每10米)自動(dòng)定義頂點(diǎn)。
第一階段3210另外示出了針對(duì)路段3205和3215的道路幾何結(jié)構(gòu)生成的路邊。如可清楚地看出,兩個(gè)生成的道路幾何結(jié)構(gòu)針對(duì)一部分重疊。為了檢測此類重疊,一些實(shí)施例生成圍繞道路中心線的邊緣(后續(xù)頂點(diǎn)之間的線)中的每一者的囊,并且對(duì)囊測試重疊。第一階段3210示出了兩個(gè)此類囊:第一路段3205的囊3225和第二路段3215的囊3235。囊在一些實(shí)施例中被定義成包圍兩個(gè)后續(xù)頂點(diǎn)之間的邊緣,并且伸出至道路的寬度(使用路段的中心線和寬度數(shù)據(jù))。雖然在該實(shí)例中示出為卵形(即,橢圓),但是不同的實(shí)施例將不同的形狀用于囊,諸如矩形或其他平行四邊形、其他橢圓體等。一些實(shí)施例可使用圖31中所示的解決方案和圖32中所示的解決方案兩者,并且將相同囊用于每個(gè)解決方案。
如在第一階段處所示,第一路段3205的邊緣的囊3225與第二路段3215的邊緣的囊3235重疊。另外,雖然在該圖中未示出,但是在具有所示重疊囊的那些邊緣以下,每個(gè)路段的兩個(gè)邊緣的囊很可能也重疊。為了在示出對(duì)路段的修改中簡單起見,在圖32
中未示出或說明這些額外重疊。在一些實(shí)施例中,當(dāng)在兩個(gè)路段的囊之間檢測到重疊時(shí),地圖繪制服務(wù)處理減小重疊囊的位置處的路段的寬度。如第二階段3220中所示,一些實(shí)施例將重疊的位置處的路邊朝向中心線向內(nèi)移動(dòng)特定的距離。一些實(shí)施例將特定路段的路邊的該部分移動(dòng)與重疊量成比例的一個(gè)距離。距離可以是剛好足夠減少位置處的重疊的,或者該量加上額外余量使得在兩個(gè)路段幾何結(jié)構(gòu)之間存在間隙。另外,一些實(shí)施例僅將引起重疊的路邊向內(nèi)移動(dòng),而其他實(shí)施例也對(duì)稱地修改每個(gè)道路的另一邊(使得中心線保持在道路的中心)。
為了防止客戶端地圖繪制應(yīng)用上的渲染的道路看起來具有自道路移除的突兀大塊,一些實(shí)施例在任一方向上沿路邊選擇一個(gè)點(diǎn)(例如,距受影響的頂點(diǎn)100米、500米等)并且保持這些點(diǎn)固定。地圖繪制服務(wù)處理然后使寬度減小自重疊部分至固定點(diǎn)逐漸尖滅。
第三階段3230示出了道路的寬度已減小后的路段3205和3215的道路幾何結(jié)構(gòu)。如圖所示,道路幾何結(jié)構(gòu)完全不再重疊(至少在圖中所示的部分中)。一些實(shí)施例在檢測到任何兩個(gè)囊之間的重疊后執(zhí)行過程來減小那個(gè)位置處的寬度并且使寬度減小逐漸尖滅。處理然后重新測試那個(gè)邊緣對(duì)并且繼續(xù)以識(shí)別任何重疊的道路部分是否仍然存在。另一方面,其他實(shí)施例首先識(shí)別所有重疊部分、減小在每個(gè)此類部分處的寬度,并且計(jì)算寬度減小的每一者所需要的不同逐漸減小。
除了在1515和1520處執(zhí)行以平滑接合點(diǎn)并消除道路重疊的幾何結(jié)構(gòu)校正之外,過程1500還生成(在1525處)道路標(biāo)記以顯示在道路上。這些道路標(biāo)記在一些實(shí)施例中可包括車道標(biāo)記、中央分離帶、停止線和/或交叉口處的人行橫道等。
例如,一些實(shí)施例自動(dòng)增添雙行車道之間的中央分離帶。如在前一小節(jié)中所述的,一些實(shí)施例使用路段數(shù)據(jù)將路段(或聚合道路)識(shí)別為道路的對(duì)應(yīng)邊(例如,高速公路的相對(duì)方向或由中央分離帶分離的干線道路的邊等)。在一些實(shí)施例中,該路段數(shù)據(jù)指示道路是雙行車道(有時(shí)被稱為分車道公路,與在兩個(gè)方向上進(jìn)行交通運(yùn)輸?shù)膯涡熊嚨老鄬?duì)),并且其他特性(路段的幾何數(shù)據(jù)和屬性數(shù)據(jù)兩者)指示兩條道路是對(duì)應(yīng)的雙行車道的可能性。
此類雙行車道通常具有由各種不同種類的中央分離帶分離的兩個(gè)邊。例如,不同區(qū)域可使用混凝土修建的中央分離帶、草坪中央分離帶、繪制的中央分離帶(例如,黃色標(biāo)線的不同組合)、分隔物等。一些實(shí)施例生成填充對(duì)應(yīng)的雙行車道道路之間的間隙的幾何結(jié)構(gòu),然后分配這些幾何結(jié)構(gòu)特性使得所述幾何結(jié)構(gòu)特性被渲染為中央分離帶。一些實(shí)施例使用路邊的頂點(diǎn)的位置來確定中央分離帶頂點(diǎn)的位置,使得中央分離帶與道路的邊精確地對(duì)齊。
不同的實(shí)施例不同地渲染中央分離帶。例如,一些實(shí)施例將單個(gè)中央分離帶類型用于所有雙行車道,而其他實(shí)施例具有不同類型。與道路、土地覆蓋物等非常類似,存儲(chǔ)在客戶端處的樣式表可定義以不同方式繪制的不同中央分離帶樣式。以對(duì)應(yīng)于由客戶端地圖繪制應(yīng)用以不同方式渲染的圖的不同樣式(例如,干線道路中央分離帶、高速公路中央分離帶等)對(duì)來自地圖繪制服務(wù)的中央分離帶幾何結(jié)構(gòu)加標(biāo)簽。
圖33和圖34示出了具有兩種不同類型的中央分離帶的雙行車道。圖33示出了系對(duì)應(yīng)的雙行車道的兩條渲染的道路3305和3315。另外,應(yīng)用顯示了表示兩條道路中間的中央分離帶3310的黃色標(biāo)線的設(shè)計(jì)(具體來說,一對(duì)雙黃線,其中對(duì)角線連接所述黃色標(biāo)線)。圖34示出了繪制在兩條雙行車道3305和3315之間的混凝土中央分離帶3405。
除了中央分離帶之外,一些實(shí)施例生成各種類型的道路漆(例如,車道分隔物、停止線等)的幾何結(jié)構(gòu)。在一些實(shí)施例中,這包括在上文所述的渲染結(jié)果中所示的車道標(biāo)記。為了生成用于路段的車道標(biāo)記,一些實(shí)施例使用存儲(chǔ)在路段數(shù)據(jù)結(jié)構(gòu)中的車道計(jì)數(shù)信息(該車道計(jì)數(shù)信息可自寬度數(shù)據(jù)或道路類型數(shù)據(jù)得出)。另外,專用車道諸如合用車專用道可在路段數(shù)據(jù)中被指示并且可具有生成的幾何結(jié)構(gòu)。
另外,一些實(shí)施例辨認(rèn)駕駛員將可能必須在停止指示牌或停止燈處停止的接合點(diǎn)。一些實(shí)施例的地圖繪制服務(wù)從地圖提供方接收該數(shù)據(jù)(例如,作為存儲(chǔ)在接合點(diǎn)數(shù)據(jù)中的信息)。因此,特定接合點(diǎn)可指示4路停止、2路停止(挑選出特定路段作為具有停止指示牌)、交通燈等。在一些實(shí)施例中,地圖繪制服務(wù)處理基于接合點(diǎn)處的道路類型得出該信息。例如,當(dāng)連接道路與主干線道路相交時(shí),一些實(shí)施例假設(shè)連接道路具有停止指示牌,并且主干線道路具有明確的通行權(quán)。當(dāng)兩條主干線道路相交時(shí),地圖繪制服務(wù)處理假設(shè)交叉口將由交通信號(hào)燈控制,并且將停止線標(biāo)記添加至接合點(diǎn)處的所有路段。
圖35示出了此類接合點(diǎn)3500的幾何結(jié)構(gòu)的實(shí)例。在交叉口的所有路段幾何結(jié)構(gòu)均具有相同寬度并且以90°角度排列時(shí),那么生成停止線是容易的(如下所示)。然而,四個(gè)路段3505-3520并非對(duì)齊得如此之好。相反,路段具有不同的寬度,且路段3510以不同的(非直角)角度與接合點(diǎn)相交。在此類情形下,針對(duì)每個(gè)特定路段,地圖繪制服務(wù)處理識(shí)別與特定路段的中心線垂直的最靠近交叉口的線,并在也不與其他路段幾何結(jié)構(gòu)相交的情況下接觸特定路段幾何結(jié)構(gòu)的兩邊。雖然示出為針對(duì)更復(fù)雜的接合點(diǎn),但在更簡單的情況下,一些實(shí)施例也使用該過程來識(shí)別停止線位置。
圖35中的虛線3525示出了接合點(diǎn)3500的這些線。地圖繪制服務(wù)處理然后針對(duì)在這些所識(shí)別的線(虛線3525)處結(jié)束的停止線來生成幾何結(jié)構(gòu)。針對(duì)單行車道路段(其具有雙向行進(jìn)),處理僅生成跨該路段延伸一半的停止線。此外,一些實(shí)施例使停止線從交叉口的邊緣(在該圖中,邊緣由虛線表示)回推特定距離(例如,兩英尺、五英尺等)。
圖36示出了如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的接合點(diǎn)3500的結(jié)果3600(例如,在便攜式設(shè)備的顯示器上)。如圖所示,將白色粗線在圖35的虛線所識(shí)別的位置處跨每個(gè)路段繪制一半。將停止線幾何結(jié)構(gòu)的內(nèi)(朝交叉口)邊緣繪制在所指示的線處,其中停止線一路延伸到路段中(遠(yuǎn)離交叉口)。一些實(shí)施例也將停止線推離交叉口一固定距離。此外,生成車道標(biāo)記使得它們在停止線處或在停止線之前不遠(yuǎn)處停止。
再次返回圖15,道路幾何結(jié)構(gòu)創(chuàng)建過程1500接下來指定(在1530處)關(guān)于道路幾何結(jié)構(gòu)的注釋信息,然后結(jié)束。在一些實(shí)施例中,這種注釋信息存儲(chǔ)在多邊形頂點(diǎn)(或邊緣,因?yàn)檫@兩者基本上可互換)上,所述注釋信息指導(dǎo)客戶端地圖繪制應(yīng)用的網(wǎng)格構(gòu)建模塊和/或渲染引擎將特定特征應(yīng)用于所渲染的輸出。例如,一些實(shí)施例通過道路幾何結(jié)構(gòu)頂點(diǎn)來指定不同類型的道路框(即,位于道路兩邊的對(duì)象),指示客戶端應(yīng)用繪制路緣、人行道、橋框(及對(duì)應(yīng)陰影)、隧道、疊層道路等。在一些實(shí)施例中,將繪制這些框的指令作為地圖繪制應(yīng)用的一部分存儲(chǔ)在客戶端設(shè)備上??蛻舳说貓D繪制應(yīng)用然后讀取存儲(chǔ)在特定頂點(diǎn)上的信息并針對(duì)對(duì)應(yīng)于頂點(diǎn)的邊緣生成適當(dāng)?shù)牡缆房颉?/p>
以下示出了用于道路頂點(diǎn)的一些實(shí)施例的不同注釋的若干實(shí)例,所述注釋用于指示將要繪制的框的類型。圖37示出了使用頂點(diǎn)注釋來指定立交橋的橋框的實(shí)例,在所述立交橋中,一條道路在另一條道路上方行進(jìn)且這些道路不形成接合點(diǎn)。如圖37所示,兩個(gè)道路幾何結(jié)構(gòu)3705和3710在平坦空間中相交。然而,路段數(shù)據(jù)指定,針對(duì)其生成幾何結(jié)構(gòu)3705的路段比針對(duì)其創(chuàng)建幾何結(jié)構(gòu)3710的路段具有更高的標(biāo)高(使用絕對(duì)標(biāo)高數(shù)據(jù)或相對(duì)標(biāo)高數(shù)據(jù))。此外,雖然針對(duì)兩條道路中的每一者示出為一個(gè)路段,但在一些實(shí)施例中,將使用若干路段來定義道路(例如,針對(duì)道路3705,第一路段從為0的標(biāo)高至為1的標(biāo)高,第二路段具有為1的標(biāo)高,且第三路段從為1的標(biāo)高至為0的標(biāo)高)。
圖37還示出了用于定義道路幾何結(jié)構(gòu)3705和3710的兩邊的若干頂點(diǎn)3715-3735。每個(gè)特定頂點(diǎn)定義從特定頂點(diǎn)按順序到下一個(gè)頂點(diǎn)的導(dǎo)向邊緣。因此,例如,頂點(diǎn)3735的注釋定義客戶端地圖繪制應(yīng)用將如何繪制從頂點(diǎn)3735到頂點(diǎn)3730的邊緣,頂點(diǎn)3730的注釋定義客戶端地圖繪制應(yīng)用將如何繪制從頂點(diǎn)3730到頂點(diǎn)3725的邊緣等等。沿單個(gè)路段的不同頂點(diǎn)可具有不同的注釋,使得單個(gè)路段的部分將繪制有不同的特征(例如,不同的道路框)。
在這種情況下,頂點(diǎn)3715(以及路段幾何結(jié)構(gòu)3710的其他頂點(diǎn))指定其為連接道路的頂點(diǎn)并且指定使用默認(rèn)框。在一些實(shí)施例中,不同類型的道路(例如,連接道路、干線道路、高速公路等)不僅可以不同方式繪制(例如,針對(duì)柏油的不同顏色/紋理、不同寬度等),而且還可具有不同的框(例如,用于連接道路的路緣)。雖然這示出了默認(rèn)框的實(shí)際指定,但一些實(shí)施例在頂點(diǎn)上不具有針對(duì)默認(rèn)框的特定注釋(或頂點(diǎn)為其提供注釋的任何其他特性)。
所示出的頂點(diǎn)3725-3735三者均針對(duì)幾何結(jié)構(gòu)3705的各自邊緣具體地指示了橋框,而頂點(diǎn)3720指示默認(rèn)的干線道路框。就像不同類型的道路可具有不同的默認(rèn)框一樣,不同類型的道路也可具有不同的橋框。即,客戶端地圖繪制應(yīng)用可包含用于為干線道路、高速公路等繪制不同立交橋的指令。頂點(diǎn)3720,雖然位于立交橋區(qū)域的邊緣處,但不指定橋框,而是指定其邊緣的默認(rèn)道路框。這是因?yàn)?,其邊緣針?duì)道路幾何結(jié)構(gòu)3705的該邊朝著左側(cè)的下一個(gè)頂點(diǎn)(未示出)導(dǎo)向遠(yuǎn)離立交橋。
圖38示出了如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的路段3705和3710的結(jié)果3800(例如,在便攜式設(shè)備的顯示器上)。在這種情況下,使用與干線道路的柏油相同的顏色/紋理來渲染連接道路的柏油,但一些實(shí)施例可以不同的方式來渲染道路。此外,針對(duì)頂點(diǎn)為其指定默認(rèn)道路框的位置,沿著兩條道路的邊緣繪制顏色更淺的路緣。然而,針對(duì)立交橋部分,客戶端應(yīng)用根據(jù)一些實(shí)施例繪制立交橋橋梁。此外,應(yīng)用在連接道路的柏油上渲染陰影以更逼真地示出立交橋。如果用戶要旋轉(zhuǎn)這些道路的地圖的視圖,則將針對(duì)立交橋的其他邊渲染類似的橋框。此外,雖然陰影僅針對(duì)連接道路的立交橋而出現(xiàn),但一些實(shí)施例還可在干線道路從地面向上移動(dòng)至立交橋時(shí)在干線道路下方渲染陰影。
圖39示出了使用頂點(diǎn)注釋來將路段幾何結(jié)構(gòu)的邊緣指定為內(nèi)邊緣的實(shí)例,其指示不應(yīng)針對(duì)從所注釋的頂點(diǎn)起的導(dǎo)向邊緣繪制框。在道路在接合點(diǎn)相匯的情況下,一些實(shí)施例使用此類注釋,以便防止客戶端地圖繪制應(yīng)用在道路中間繪制路緣。如圖39所示,兩個(gè)路段幾何結(jié)構(gòu)3905和3910在接合點(diǎn)相匯。在這種情況下,路段作為聚合道路的連續(xù)部分而連接;然而,在一些實(shí)施例中,還可在表示不止一條道路的交叉口的接合點(diǎn)處使用相同的道路框注釋。
圖39還示出了用于定義道路幾何結(jié)構(gòu)3905的兩邊的若干頂點(diǎn)3915-3925。其他道路幾何結(jié)構(gòu)3910也由頂點(diǎn)定義,所述頂點(diǎn)包括位于與頂點(diǎn)3915和3920相同的點(diǎn)處的頂點(diǎn)。如在前一個(gè)圖中,每個(gè)特定頂點(diǎn)定義從特定頂點(diǎn)按順序到下一個(gè)頂點(diǎn)的導(dǎo)向邊緣。因此,例如,頂點(diǎn)3915的注釋定義客戶端地圖繪制應(yīng)用將如何繪制從頂點(diǎn)3915到頂點(diǎn)3920的邊緣,頂點(diǎn)3920的注釋定義客戶端地圖繪制應(yīng)用將如何繪制從頂點(diǎn)3920到頂點(diǎn)3925的邊緣,等等。
在這種情況下,所有頂點(diǎn)3915-3925(以及路段幾何結(jié)構(gòu)3910的其他頂點(diǎn))均指定它們?yōu)檫B接道路的頂點(diǎn)。此外,頂點(diǎn)3925和3920指定使用默認(rèn)框。雖然這示出了默認(rèn)框的實(shí)際指定,但一些實(shí)施例在頂點(diǎn)上不具有針對(duì)默認(rèn)框的特定注釋(或頂點(diǎn)為其提供注釋的任何其他特性)。此外,頂點(diǎn)3915具體指示使用內(nèi)框(即,與頂點(diǎn)3915相關(guān)聯(lián)的導(dǎo)向邊緣為道路的內(nèi)邊緣)。在一些實(shí)施例中,內(nèi)框注釋指導(dǎo)客戶端地圖繪制應(yīng)用根本不針對(duì)這些邊緣繪制任何道路框。
頂點(diǎn)3920,雖然位于道路幾何結(jié)構(gòu)的靠近內(nèi)邊緣的拐角處,但指定了默認(rèn)框而不是內(nèi)框。這是因?yàn)槠溥吘壋蝽旤c(diǎn)3925。此外,在一些實(shí)施例中,道路幾何結(jié)構(gòu)3910的頂點(diǎn)將位于與頂點(diǎn)3915和3920相同的點(diǎn)處,其中與頂點(diǎn)3920位于同一處的頂點(diǎn)指定內(nèi)框(假設(shè)邊緣的方向?qū)τ趲缀谓Y(jié)構(gòu)3910而言與對(duì)于3905而言是相同的)。
圖40示出了如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的路段3905和3910的結(jié)果4000(例如,在便攜式設(shè)備的顯示器上)。在這種情況下,第一路段的柏油平滑地融合到下一個(gè)路段的柏油中,而沒有對(duì)從一個(gè)路段到下一個(gè)路段的過渡的視覺指示。應(yīng)用還沿道路任一邊將路緣作為默認(rèn)框來繪制。除用于顏色更淺的路緣的多邊形之外,一些實(shí)施例還繪制細(xì)節(jié),諸如由路緣生成的小陰影,以便至少在客戶端地圖繪制應(yīng)用的一些模式中,為顯示器提供更為三維的感覺。雖然如此地指定了道路的內(nèi)(即,面向其他路段)邊緣,使得路緣和其他道路框不繪制在道路中間,但一些實(shí)施例也針對(duì)在其外邊緣上不具有框的道路使用內(nèi)注釋,諸如與靠近道路的草處于相同水平的不具有路緣或其他框的鄉(xiāng)村道路。
圖41示出了使用頂點(diǎn)注釋來指定路段的隧道的實(shí)例,其指示應(yīng)在路段上繪制隧道。一些實(shí)施例使用此類注釋來指示隧道的入口/出口,以及隧道中部,使得客戶端地圖繪制應(yīng)用將在渲染路段時(shí)繪制隧道。如圖41所示,兩個(gè)路段幾何結(jié)構(gòu)4105和4110在接合點(diǎn)相匯。在這種情況下,路段作為聚合道路的連續(xù)部分而連接;然而,在一些實(shí)施例中,還可在表示不止一條道路的交叉口的接合點(diǎn)處使用相同的道路框注釋。
圖41還示出了用于定義道路幾何結(jié)構(gòu)4110的兩邊的若干頂點(diǎn)4115-4130。其他道路幾何結(jié)構(gòu)4105也由頂點(diǎn)定義,所述頂點(diǎn)包括位于與頂點(diǎn)4115和4130相同的點(diǎn)處的頂點(diǎn)。在一些實(shí)施例中,將對(duì)這些頂點(diǎn)加注釋以針對(duì)不同頂點(diǎn)指定默認(rèn)框或內(nèi)框。如在先前圖中,每個(gè)特定頂點(diǎn)定義從特定頂點(diǎn)按順序到下一個(gè)頂點(diǎn)的導(dǎo)向邊緣。因此,例如,頂點(diǎn)4115的注釋定義客戶端地圖繪制應(yīng)用將如何繪制從頂點(diǎn)4115到頂點(diǎn)4120的邊緣,頂點(diǎn)4125的注釋定義客戶端地圖繪制應(yīng)用將如何繪制從頂點(diǎn)4125到頂點(diǎn)4130的邊緣,等等。
在這種情況下,所有頂點(diǎn)4115-4130(以及路段幾何結(jié)構(gòu)4105的頂點(diǎn))均指定它們?yōu)楦删€道路的部分。此外,頂點(diǎn)4130指定使用隧道入口框,而頂點(diǎn)4115-4125指定使用隧道框。在一些實(shí)施例中,隧道入口框注釋指定特定邊緣(路段幾何結(jié)構(gòu)4110的跨越路面的邊緣)為隧道的入口并且應(yīng)如此繪制。一些實(shí)施例的隧道框注釋指定邊緣為隧道的邊并且因此應(yīng)在這些邊緣的位置處跨越道路繪制隧道。
圖42示出了如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的路段4105和4110的結(jié)果4200(例如,在便攜式設(shè)備的顯示器上)。在這種情況下,第一路段顯示有柏油和路緣,即一些實(shí)施例的默認(rèn)渲染。然而,針對(duì)第二路段,應(yīng)用繪制彎曲的隧道入口然后繪制路段的圓形覆蓋物。在路段另一端,應(yīng)用將渲染隧道出口。此外,應(yīng)用在入口下方渲染陰影,導(dǎo)致柏油在該位置處變暗。
圖43示出了使用頂點(diǎn)注釋來指定路段的一邊的人行道的實(shí)例。該圖示出了直線行進(jìn)的路段的單個(gè)道路幾何結(jié)構(gòu)4305。如圖所示,使用若干頂點(diǎn)4310-4325來定義道路幾何結(jié)構(gòu)4305的兩邊。每個(gè)特定頂點(diǎn)定義從特定頂點(diǎn)按順序到下一個(gè)頂點(diǎn)的導(dǎo)向邊緣。因此,例如,頂點(diǎn)4310的注釋定義客戶端地圖繪制應(yīng)用將如何繪制從頂點(diǎn)4310到頂點(diǎn)4315的邊緣,頂點(diǎn)4320的注釋定義客戶端地圖繪制應(yīng)用將如何繪制從頂點(diǎn)4320到頂點(diǎn)4325的邊緣,等等。沿單個(gè)路段的不同頂點(diǎn)可具有不同的注釋,使得單個(gè)路段的部分將繪制有不同的特征(例如,不同的道路框)。
在這種情況下,頂點(diǎn)4310和4315指定它們?yōu)檫B接道路的頂點(diǎn)并且指定使用默認(rèn)框。如上所述,不同類型的道路可具有不同的默認(rèn)框(例如,用于連接道路或干線道路的路緣、用于某些其他類型的道路的護(hù)欄等等)。雖然這示出了默認(rèn)框的實(shí)際指定,但一些實(shí)施例在頂點(diǎn)上不具有針對(duì)默認(rèn)框的特定注釋(或頂點(diǎn)為其提供注釋的任何其他特性)。
頂點(diǎn)4320和4325針對(duì)幾何結(jié)構(gòu)4305的各自邊緣具體地指示了人行道道路框。就像不同類型的道路可具有不同的默認(rèn)框一樣,不同類型的道路也可具有不同的人行道。即,客戶端地圖繪制應(yīng)用可包含用于為連接道路、干線道路等繪制不同的人行道(例如,用于干線道路的更寬的人行道)的指令。
圖44示出了如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的路段4305的結(jié)果4400(例如,在便攜式設(shè)備的顯示器上)。在這種情況下,干線道路的柏油以與如上所示相同的方式渲染,且左邊(具有默認(rèn)道路框)僅繪制有路緣。然而,針對(duì)道路的右邊,除路緣之外,應(yīng)用還渲染人行道。除用于顏色更淺的路緣的多邊形之外,一些實(shí)施例還繪制細(xì)節(jié),諸如由路緣生成的小陰影,以便至少在客戶端地圖繪制應(yīng)用的一些模式中,為顯示器提供更為三維的感覺。
上述實(shí)例示出了可應(yīng)用于路段幾何結(jié)構(gòu)的不同類型的注釋。在一些實(shí)施例中,可通過用若干類型的注釋對(duì)邊緣的頂點(diǎn)加注釋,來將多種類型的道路框應(yīng)用于單個(gè)邊緣。在圖43的上述實(shí)例中,人行道注釋暗示客戶端應(yīng)用應(yīng)渲染路緣和人行道兩者。
圖45示出了針對(duì)一些實(shí)施例的單個(gè)頂點(diǎn)使用若干注釋的實(shí)例。具體地,圖45示出了使用頂點(diǎn)注釋來指定在橋梁一邊上包括人行道的立交橋的實(shí)例。幾何結(jié)構(gòu)4505和4510類似于圖37的幾何結(jié)構(gòu)3705和3710,后者(連接道路)在前者(干線道路)下方穿過。實(shí)際上,與圖37的差別在于頂點(diǎn)4515-4525包括指定橋框和人行道框兩者的注釋。
圖46示出了如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的路段4505和4510的結(jié)果4600(例如,在便攜式設(shè)備的顯示器上)。與圖45一樣,使用與干線道路的柏油相同的顏色/紋理來渲染連接道路的柏油,并且應(yīng)用沿兩條道路的邊緣繪制顏色更淺的路緣。針對(duì)立交橋部分,客戶端應(yīng)用不僅渲染立交橋及其陰影,而且還渲染立交橋頂部的、在道路的注釋有人行道的邊上的人行道。在這種情況下,路段3705的另一邊不為指定人行道而加注釋,因此應(yīng)用不渲染該人行道。
在先前的實(shí)例中,地圖繪制服務(wù)處理僅針對(duì)頂點(diǎn)指定框類型。在一些實(shí)施例中,地圖繪制服務(wù)還可針對(duì)不同類型的框指定各種不同的變量,從而修改框的渲染方式。例如,可在注釋數(shù)據(jù)中指定橋框的高度(即,基于路段標(biāo)高信息)。此外,人行道寬度、路緣高度、護(hù)欄高度、隧道厚度、路緣顏色等在不同實(shí)施例中可有所不同。
圖47示出了使用頂點(diǎn)注釋數(shù)據(jù)來改變道路幾何結(jié)構(gòu)4705的道路框的特性的實(shí)例。具體地,道路幾何結(jié)構(gòu)4705包括在一邊上的兩個(gè)頂點(diǎn)4710和4715以及在另一邊上的兩個(gè)頂點(diǎn)4720和4725。兩個(gè)頂點(diǎn)4710和4715為客戶端應(yīng)用指定渲染人行道框,并且包括針對(duì)該人行道的1米的寬度。在道路的另一邊,兩個(gè)頂點(diǎn)4720和4725也為客戶端應(yīng)用指定渲染人行道框,這次寬度為1.5米。
圖48示出了如由一些實(shí)施例的客戶端地圖繪制應(yīng)用渲染的路段4705的結(jié)果4800(例如,在便攜式設(shè)備的顯示器上)。渲染類似于圖44中所示的渲染。然而,所渲染的道路現(xiàn)在在兩邊均具有人行道,且人行道為不同的寬度(如在注釋數(shù)據(jù)中所指定)。
上述實(shí)例示出了針對(duì)一些實(shí)施例使用頂點(diǎn)注釋數(shù)據(jù)來指定道路框數(shù)據(jù)。然而,由于在一些實(shí)施例中使用頂點(diǎn)以地圖圖塊來描述其他地圖對(duì)象(例如,建筑物、土地覆蓋物多邊形等),因此這些其他對(duì)象還可在其描述中包含頂點(diǎn)注釋。例如,可使用此類注釋來指定建筑物細(xì)節(jié)(例如,不同顏色面、不同類型的線腳等),也可以使用此類注釋來指定土地覆蓋物的方面(例如,如何繪制土地覆蓋物多邊形的不同邊界)。
在指定注釋信息之后,道路幾何結(jié)構(gòu)創(chuàng)建過程結(jié)束。如上所述,在一些實(shí)施例中,創(chuàng)建道路幾何結(jié)構(gòu)的操作的特定順序可以不同。此外,一些實(shí)施例可使用并行處理來一次性地對(duì)若干路段(或路段集合)執(zhí)行一些或全部道路幾何結(jié)構(gòu)操作。
c.交叉口數(shù)據(jù)的服務(wù)器側(cè)生成
已經(jīng)描述了直接得到道路幾何結(jié)構(gòu)的服務(wù)器操作(例如,定義聚合道路以及道路幾何結(jié)構(gòu)的創(chuàng)建),現(xiàn)在將討論使用上文所提及的接合點(diǎn)數(shù)據(jù)來生成交叉口數(shù)據(jù)。在請求路線時(shí),客戶端地圖繪制應(yīng)用在一些實(shí)施例中接收與路線所遍歷的每個(gè)交叉口有關(guān)的數(shù)據(jù),所述數(shù)據(jù)指示交叉口的不同支路并標(biāo)注路線穿過哪些支路進(jìn)入和退出交叉口。在一些實(shí)施例中,由地圖繪制服務(wù)存儲(chǔ)該交叉口信息,地圖繪制應(yīng)用訪問該地圖繪制服務(wù)以便檢索地圖數(shù)據(jù)以及路線和導(dǎo)航信息。
如上所述,一些實(shí)施例的地圖繪制服務(wù)接收指定路段的每個(gè)接合點(diǎn)的數(shù)據(jù)。在一些實(shí)施例中,地圖繪制服務(wù)針對(duì)存儲(chǔ)在地圖數(shù)據(jù)中的這些接合點(diǎn)中的每一者自動(dòng)生成附加數(shù)據(jù),并且在一些實(shí)施例中,將接合點(diǎn)數(shù)據(jù)轉(zhuǎn)變成交叉口數(shù)據(jù)。該接合點(diǎn)信息將每個(gè)所接收的接合點(diǎn)(或在現(xiàn)實(shí)世界中視為單個(gè)交叉口的相關(guān)接合點(diǎn)的集合)簡化成以不同角度離開接合點(diǎn)的支路的集合。當(dāng)用戶通過在設(shè)備上操作的地圖繪制應(yīng)用來請求路線時(shí),設(shè)備將請求發(fā)送至地圖繪制服務(wù),地圖繪制服務(wù)生成從開始位置到結(jié)束位置的路線。在一些實(shí)施例中,地圖繪制服務(wù)還使用交叉口數(shù)據(jù)針對(duì)路線生成逐向?qū)Ш街噶?。地圖繪制服務(wù)識(shí)別進(jìn)行操縱的交叉口,并修改特定于在路線期間進(jìn)行的操縱的交叉口數(shù)據(jù)。然后將該數(shù)據(jù)發(fā)送至客戶端地圖繪制應(yīng)用于其上運(yùn)行的用戶設(shè)備。以下小節(jié)首先介紹了針對(duì)路線創(chuàng)建導(dǎo)航數(shù)據(jù),然后討論了由地圖繪制服務(wù)進(jìn)行的交叉口數(shù)據(jù)預(yù)計(jì)算(使得數(shù)據(jù)可用于生成導(dǎo)航數(shù)據(jù)),并且最后描述了對(duì)所請求路線的交叉口數(shù)據(jù)進(jìn)行的特定類型的修改。
1.導(dǎo)航數(shù)據(jù)創(chuàng)建
圖49概念性地示出了一操作,該操作由一些實(shí)施例的地圖繪制服務(wù)執(zhí)行以為請求設(shè)備生成路線并將路線與導(dǎo)航指令一起提供至請求設(shè)備。圖49示出了經(jīng)過六個(gè)階段4910-4960的該操作,其中地圖繪制服務(wù)接收對(duì)路線的請求,生成路線,生成路線的交叉口數(shù)據(jù),并將路線提供至設(shè)備,該設(shè)備使用該信息來顯示導(dǎo)航指令。
如圖所示,圖49的每個(gè)階段均示出了設(shè)備4905和地圖繪制服務(wù)4900。設(shè)備4905在一些實(shí)施例中可為手持設(shè)備(例如,智能電話、平板設(shè)備等),或者可為專用導(dǎo)航設(shè)備(例如,汽車內(nèi)置的導(dǎo)航系統(tǒng)、便攜式導(dǎo)航設(shè)備等)。此外,在一些實(shí)施例中,設(shè)備4905可為非便攜式設(shè)備,諸如臺(tái)式計(jì)算機(jī)或其他非便攜式計(jì)算設(shè)備。
地圖繪制服務(wù)4900是一服務(wù),設(shè)備4905(例如,經(jīng)由有線連接、無線連接諸如蜂窩網(wǎng)絡(luò)、wi-fi等)連接至該服務(wù),以便請求并接收地圖數(shù)據(jù)、路線數(shù)據(jù)、逐向?qū)Ш綌?shù)據(jù)以及附加信息(例如,與位于地圖上的地點(diǎn)有關(guān)的信息等)。如圖所示,地圖繪制服務(wù)4900存儲(chǔ)地圖數(shù)據(jù)4915和交叉口數(shù)據(jù)4925,并且除其他模塊(未示出)之外還包括地圖生成器4935和路線生成器4945。
地圖數(shù)據(jù)4915提供數(shù)據(jù),可查看的地圖區(qū)域和路線可通過所述數(shù)據(jù)生成。這種地圖數(shù)據(jù),在一些實(shí)施例中,包括緯度和經(jīng)度數(shù)據(jù)、名稱數(shù)據(jù)以及與道路和其他通路(例如,走道、輪渡路線、自行車路徑等)、自然地貌(例如,河流、湖泊、山脈等)、興趣點(diǎn)(例如,建筑物、企業(yè)、公園等)以及其他地圖項(xiàng)有關(guān)的描述數(shù)據(jù)。在一些實(shí)施例中,例如,通路被定義為一系列緯度/經(jīng)度頂點(diǎn)、名稱及描述數(shù)據(jù)。這種描述數(shù)據(jù)可包括路形式(即,通路是單行車道還是雙行車道的一部分,通路是否為單向路徑)、路徑所屬的道路類別(例如,機(jī)動(dòng)車道、地方道路、私有道路、自行車道等)以及其他信息。在一些實(shí)施例中,這種地圖數(shù)據(jù)由外部源(即,地圖提供方)編譯并提供至地圖繪制服務(wù),而在其他實(shí)施例中,地圖繪制服務(wù)提供其自己的地圖數(shù)據(jù)。地圖數(shù)據(jù)還可為局外者提供的數(shù)據(jù)與內(nèi)部生成數(shù)據(jù)的混合體。此外,地圖數(shù)據(jù)可包括針對(duì)各種地圖構(gòu)造的幾何結(jié)構(gòu)數(shù)據(jù),所述地圖構(gòu)造諸如道路、土地覆蓋物等。
交叉口數(shù)據(jù)4925針對(duì)地圖數(shù)據(jù)中道路路徑的交叉口提供預(yù)制表數(shù)據(jù)。在一些實(shí)施例中,如下所述,地圖繪制服務(wù)使用地圖數(shù)據(jù)來針對(duì)道路通路交叉口自動(dòng)計(jì)算交叉口數(shù)據(jù)??赏ㄟ^指示交叉口類型(例如,點(diǎn)型、環(huán)型)以及以不同角度進(jìn)出交叉口的一系列支路,來存儲(chǔ)這種交叉口數(shù)據(jù)4925。雖然地圖數(shù)據(jù)4915和交叉口數(shù)據(jù)4925示出為獨(dú)立存儲(chǔ),但這兩種數(shù)據(jù)可均存儲(chǔ)在相同的物理存儲(chǔ)裝置上或存儲(chǔ)在獨(dú)立的物理存儲(chǔ)裝置上,并且交叉口數(shù)據(jù)4925可實(shí)際上為地圖數(shù)據(jù)4915的一部分。此外,地圖數(shù)據(jù)和交叉口數(shù)據(jù)中的一者或兩者均可跨若干物理存儲(chǔ)裝置(例如,用于存儲(chǔ)地圖數(shù)據(jù)的一系列磁盤)分布。
一些實(shí)施例的地圖生成器4935生成地圖信息(例如,地圖圖塊)以傳輸至請求器設(shè)備。請求器設(shè)備請求特定區(qū)域的地圖(例如,使用緯度/經(jīng)度信息),并且地圖生成器4935為該區(qū)域創(chuàng)建(或使用預(yù)生成的)地圖圖塊,然后將這些圖塊的數(shù)據(jù)(例如,作為已編碼矢量和/或圖像數(shù)據(jù))發(fā)送至設(shè)備。
路線生成器4945響應(yīng)于用戶請求計(jì)算兩個(gè)或更多個(gè)點(diǎn)之間的最佳路線。在一些實(shí)施例中,路線生成器4945使用優(yōu)化算法來基于地圖數(shù)據(jù)計(jì)算路線。路線可被定義為一系列交叉口、一系列道路通路或者以其他方式定義。此外,在用戶請求路線時(shí),路線生成器4945提供交叉口數(shù)據(jù)以供設(shè)備在逐向?qū)Ш街惺褂?。在一些?shí)施例中,交叉口分析器4955檢索交叉口數(shù)據(jù)4925,并針對(duì)路線的導(dǎo)航修改該數(shù)據(jù),如下所述。
如圖所示,在階段4910處,設(shè)備4905將對(duì)路線的請求發(fā)送至地圖繪制服務(wù)4900。在一些實(shí)施例中,用戶輸入開始地址(或地點(diǎn))和結(jié)束地址(或地點(diǎn)),可能包括附加中點(diǎn)位置(例如,始于a,前往b,然后從b前往c)。設(shè)備然后將位置信息傳輸至地圖繪制服務(wù)。在一些實(shí)施例中,設(shè)備將位置轉(zhuǎn)譯為緯度和經(jīng)度數(shù)據(jù),而在其他實(shí)施例中,由地圖繪制服務(wù)執(zhí)行這種轉(zhuǎn)變。
在階段4920處,路線生成器4945訪問地圖數(shù)據(jù)4915以便針對(duì)該系列的位置生成一條或多條路線。在一些實(shí)施例中,路線生成器4945使用優(yōu)化算法來查找連接該系列的位置的最佳(以及第二最佳、第三最佳等)路線。
在階段4930處,交叉口分析器4955識(shí)別沿需要為其生成導(dǎo)航方向的路線的操縱并針對(duì)這些操縱檢索交叉口信息。一些實(shí)施例生成逐向?qū)Ш椒较蛞耘c路線一起提供至設(shè)備。為生成這些方向,地圖繪制服務(wù)4900,每當(dāng)路線改變通路時(shí),識(shí)別沿循方向的用戶將必須在哪個(gè)點(diǎn)執(zhí)行操縱(例如,右轉(zhuǎn)、稍微左轉(zhuǎn)、u型轉(zhuǎn)彎、并道等)。在一些實(shí)施例中,這些通路改變中的每一者對(duì)應(yīng)于存儲(chǔ)在交叉口數(shù)據(jù)4925中的預(yù)制表交叉口。交叉口分析器4955檢索這種交叉口數(shù)據(jù)。在一些實(shí)施例中,每個(gè)交叉口被存儲(chǔ)為以各種角度(例如,基于相對(duì)于北方=0°)從交叉口出來的一系列支路。在一些實(shí)施例中,除交叉口數(shù)據(jù)之外,路線生成器創(chuàng)建通常描述將要執(zhí)行的操縱的路線規(guī)劃方向。此類描述的實(shí)例包括“左轉(zhuǎn)”、“駛出高速公路匝道”、“u型轉(zhuǎn)彎”等。在其他實(shí)施例中,由客戶端地圖繪制應(yīng)用基于所接收的交叉口數(shù)據(jù)來得出這種描述。
接下來,在階段4940處,交叉口分析器4955生成為路線設(shè)計(jì)的交叉口信息。在一些實(shí)施例中,這引起修改角度以將行進(jìn)到接合點(diǎn)中的方向設(shè)置為0°(即,將路線進(jìn)入接合點(diǎn)的支路設(shè)置為180°)。這按照正北與路線的駛?cè)胄羞M(jìn)方向之間的差來有效地旋轉(zhuǎn)交叉口描述。此外,交叉口分析器4955將支路中的一者加標(biāo)簽為出口支路。一些實(shí)施例還對(duì)入口支路加標(biāo)簽,而其他實(shí)施例則依賴于設(shè)備來將180°支路識(shí)別為入口支路。
階段4950示出了地圖繪制服務(wù)4900然后將路線數(shù)據(jù)(即,用于導(dǎo)航的路線數(shù)據(jù)和交叉口數(shù)據(jù))傳輸(例如,經(jīng)由設(shè)備用來傳輸路線請求的相同網(wǎng)絡(luò))至設(shè)備4905。如在階段4960處所示,設(shè)備4905然后使用由地圖繪制服務(wù)生成的交叉口和路線數(shù)據(jù)來為設(shè)備的用戶顯示導(dǎo)航指令。在一些實(shí)施例中,導(dǎo)航指令包括將交叉口連同程式化箭頭一起顯示,該程式化箭頭示出通過交叉口的操縱(在這種情況下,為右轉(zhuǎn))。
雖然地圖繪制服務(wù)4900被顯示為包括地圖生成器模塊和路線生成器模塊,但本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,地圖繪制服務(wù)可包括附加模塊或不同的模塊細(xì)分。地圖繪制服務(wù)可由存儲(chǔ)所有功能和數(shù)據(jù)的單個(gè)計(jì)算設(shè)備(例如,服務(wù)器)組成,或者功能可在多個(gè)服務(wù)器之間分布(例如,一個(gè)過程在第一服務(wù)器上且第二過程在第二服務(wù)器上,針對(duì)不同用戶并行地執(zhí)行相同操作的多個(gè)服務(wù)器,或者執(zhí)行本文所述功能的計(jì)算設(shè)備的其他配置)。
圖50概念性地示出了過程5000,該過程由一些實(shí)施例的地圖繪制服務(wù)執(zhí)行以便生成并向用戶傳輸路線和交叉口數(shù)據(jù)。如圖所示,過程5000從接收(在5005處)對(duì)地圖上兩個(gè)位置之間的路線的請求開始。在一些實(shí)施例中,在用戶請求一系列的不止兩個(gè)的位置時(shí),每個(gè)路段被當(dāng)作獨(dú)立的路線(即,從點(diǎn)a到點(diǎn)b為第一路線,然后從點(diǎn)b到點(diǎn)c為第二路線)。
該過程然后使用地圖數(shù)據(jù)來生成(在5010處)位置之間的至少一條路線。在一些實(shí)施例中,過程使用優(yōu)化算法來識(shí)別兩個(gè)位置之間的最佳(或第二最佳、第三最佳等)路線。這些路線可被描述為沿通路的一系列頂點(diǎn)、通路之間的一系列交叉口,或使用另一種描述。
借助為開始和結(jié)束位置生成的路線,過程5000選擇(在5015處)所生成的路線中的一者以便針對(duì)路線創(chuàng)建逐向指令。過程然后識(shí)別(在5020處)將要沿路線進(jìn)行的操縱。在一些實(shí)施例中,每當(dāng)路線改變通路時(shí),地圖繪制服務(wù)識(shí)別沿循方向的用戶將必須在哪個(gè)點(diǎn)執(zhí)行操縱(例如,右轉(zhuǎn)、稍微左轉(zhuǎn)、u型轉(zhuǎn)彎、并道等)。
接下來,過程針對(duì)每次操縱檢索(在5025處)交叉口。在一些實(shí)施例中,這些通路改變中的每一者對(duì)應(yīng)于由地圖繪制服務(wù)存儲(chǔ)的預(yù)制表交叉口。下面詳細(xì)描述了這些交叉口的生成。在一些實(shí)施例中,每個(gè)交叉口被存儲(chǔ)為以各種角度(例如,基于相對(duì)于北方=0°)從交叉口出來的一系列支路。此外,在一些實(shí)施例中,交叉口數(shù)據(jù)存儲(chǔ)交叉口的類型(例如,點(diǎn)型、環(huán)型、交通廣場等)。
過程然后針對(duì)每次操縱修改(在5030處)交叉口信息。在一些實(shí)施例中,這引起修改角度以將行進(jìn)到接合點(diǎn)中的方向設(shè)置為0°(即,將路線進(jìn)入接合點(diǎn)的支路設(shè)置為180°)。這按照正北與路線的駛?cè)胄羞M(jìn)方向之間的差來有效地旋轉(zhuǎn)交叉口描述。此外,一些實(shí)施例將支路中的一者加標(biāo)簽為出口支路。一些實(shí)施例還對(duì)入口支路加標(biāo)簽,而其他實(shí)施例則依賴于設(shè)備來將180°支路識(shí)別為入口支路。
過程5000接下來確定(在5035處)是否仍有針對(duì)其生成操縱/交叉口信息的附加路線。在仍有附加路線時(shí),過程返回至5015以選擇下一條路線。從開始位置到結(jié)束位置的路線的不同變型可部分地重疊,在這種情況下,一些實(shí)施例針對(duì)重疊部分重新使用已經(jīng)生成的交叉口集合。
一旦針對(duì)所有路線生成了交叉口,過程便將路線和交叉口信息傳輸(在5040處)至請求器(例如,請求設(shè)備)。如所提及的,在一些實(shí)施例中,請求設(shè)備使用這種信息以便生成逐向?qū)Ш?,包括程式化的接合點(diǎn)/操縱箭頭。
2.交叉口數(shù)據(jù)的預(yù)計(jì)算
如上所述,一些實(shí)施例通過所存儲(chǔ)的地圖數(shù)據(jù)(例如,路段和接合點(diǎn)數(shù)據(jù))來預(yù)計(jì)算交叉口數(shù)據(jù)。地圖繪制服務(wù)然后存儲(chǔ)這種交叉口數(shù)據(jù)以用于生成逐向?qū)Ш街噶?。以下章?jié)描述了用于生成這種交叉口數(shù)據(jù)的若干過程,其中地圖繪制服務(wù)接收供應(yīng)商提供的接合點(diǎn),識(shí)別是否應(yīng)將任何集合的所接收接合點(diǎn)合并成單個(gè)交叉口,識(shí)別應(yīng)在交叉口內(nèi)接合在一起的路段對(duì),并且針對(duì)該交叉口生成角度。在該章節(jié)內(nèi),術(shù)語接合點(diǎn)將通常用于指供應(yīng)商提供的兩條路徑段在哪里相交的信息,而術(shù)語交叉口將是指通過接合點(diǎn)生成的表示兩條或更多條道路在現(xiàn)實(shí)世界中在哪里相匯的數(shù)據(jù)。因此,在一些實(shí)施例中,可將多個(gè)接合點(diǎn)合并成一個(gè)交叉口,并且兩個(gè)路段之間實(shí)際上僅為單條道路的延續(xù)的接合點(diǎn)根本不可被視為交叉口。
以下表示一些實(shí)施例的用于針對(duì)點(diǎn)型交叉口生成交叉口數(shù)據(jù)的偽碼:
識(shí)別所有內(nèi)路段;
識(shí)別所有內(nèi)轉(zhuǎn)彎隧道并將它們標(biāo)記為內(nèi)路段;
針對(duì)每個(gè)內(nèi)路段:
收集所有連續(xù)的內(nèi)路段;
將所收集的內(nèi)路段標(biāo)記為已處理;
通過內(nèi)路段的該合集來構(gòu)建交叉口;
除其他數(shù)據(jù)(例如,公園、水道、企業(yè)等的位置)之外,地圖數(shù)據(jù)還存儲(chǔ)與通路(即,道路、走道、自行車路徑等)有關(guān)的信息。在一些實(shí)施例中,從地圖提供方接收每個(gè)通路作為一系列段(例如,路段)。針對(duì)給定路段,在一些實(shí)施例中,所存儲(chǔ)的數(shù)據(jù)包括路段的開始和結(jié)束接合點(diǎn)、定義由開始和結(jié)束接合點(diǎn)之間的路徑所采用的線路的幾何結(jié)構(gòu)數(shù)據(jù)、路徑表征(或“路形式”)、行進(jìn)方向(其在一些實(shí)施例中可能涉及單向標(biāo)志)、路徑的一個(gè)或多個(gè)名稱(例如,“1-405s”、“sandiegofreeway”等)、指示路徑的重要性級(jí)別的類別以及網(wǎng)絡(luò)類(路徑所屬的路徑連接圖)。在一些實(shí)施例中,幾何結(jié)構(gòu)信息包括路徑所行進(jìn)穿過的一系列緯度/經(jīng)度頂點(diǎn)。在一些實(shí)施例中,路形式屬性包括以下表征:單行車道、雙行車道、機(jī)動(dòng)車道、岔道、連接道路、走道、階梯。一些實(shí)施例可包括附加表征。
圖51概念性地示出了一些實(shí)施例的用于確定接合點(diǎn)集合之間的路徑段的過程5100,所述接合點(diǎn)集合應(yīng)被一起當(dāng)作單個(gè)交叉口。如圖所示,過程5100從接收(在5105處)至少兩個(gè)路徑段(例如,路段)之間的接合點(diǎn)開始。在一些實(shí)施例中,地圖繪制服務(wù)接收(例如,作為來自地圖供應(yīng)商的預(yù)計(jì)算數(shù)據(jù))路段集合和接合點(diǎn)集合。每個(gè)路段沿循兩個(gè)此類接合點(diǎn)之間的路徑,并且每個(gè)接合點(diǎn)參考進(jìn)入和/或退出接合點(diǎn)的至少兩個(gè)路段。另一方面,在一些實(shí)施例中,不從地圖數(shù)據(jù)供應(yīng)商接收接合點(diǎn),并且地圖繪制服務(wù)遍歷路徑數(shù)據(jù)以識(shí)別路徑之間的交叉口并分析這些交叉口以便對(duì)接合點(diǎn)進(jìn)行預(yù)制表。
過程然后確定(在5110處)所接收接合點(diǎn)處的路徑段中的任一者是否為雙行車道。如所提及的,雙行車道為一些形式的地圖數(shù)據(jù)中所使用的路徑表征。被(例如,由中央分離帶、雙黃線等)劃分的許多道路被接收(并且繪制)為兩個(gè)獨(dú)立的路徑段,每個(gè)方向一個(gè)路徑段。然后對(duì)路徑段中的每一者標(biāo)記行進(jìn)方向并且標(biāo)記為雙行車道的一半。由于用戶將通常均由中央分離帶劃分的兩條道路的交叉口看作單個(gè)交叉口(而不是四個(gè)獨(dú)立的交叉口),因此接合點(diǎn)生成過程嘗試將這四個(gè)所接收的接合點(diǎn)統(tǒng)一成單個(gè)交叉口以出于導(dǎo)航的目的而向用戶呈現(xiàn)。
在沒有路徑段被標(biāo)記為雙行車道時(shí),過程僅使用在所接收的接合點(diǎn)中指定的路徑段(即,交叉口將僅包括一個(gè)所接收的接合點(diǎn))來計(jì)算(在5115處)交叉口支路。在一些實(shí)施例中,接合點(diǎn)支路的計(jì)算引起計(jì)算針對(duì)接合點(diǎn)所指定的每個(gè)路段離開接合點(diǎn)位置的角度。隨后,該過程結(jié)束。圖52示出了此類接合點(diǎn)5200的實(shí)例,還示出了不需要路徑段以直角相匯或者路徑以直線繼續(xù)穿過接合點(diǎn)。
在針對(duì)所接收接合點(diǎn)所指定的至少一個(gè)路徑段為雙行車道時(shí),過程確定(在5120處)在接合點(diǎn)處是否存在雙行車道的橫穿交通轉(zhuǎn)彎離開。橫穿交通轉(zhuǎn)彎是在將橫穿雙行車道的匹配半道的方向(即,道路的另一個(gè)方向)上的雙行車道的轉(zhuǎn)彎離開,假設(shè)橫穿交通轉(zhuǎn)彎存在的話。在美國,左轉(zhuǎn)是橫穿交通轉(zhuǎn)彎。雖然該文檔中所示的實(shí)例涉及右側(cè)駕駛(即在道路的右邊駕駛),但普通技術(shù)人員將認(rèn)識(shí)到,實(shí)例也同等地適用于左側(cè)駕駛區(qū)域(例如,英格蘭)。圖53示出了包括兩條雙行車道路徑5305和5306和一條單向道路5310的交叉口5300。在接合點(diǎn)5315處,不存在雙行車道的橫穿交通轉(zhuǎn)彎離開,因?yàn)槲ㄒ坏倪x項(xiàng)是雙行車道路徑5305的右轉(zhuǎn)彎離開和單向街道5310的左轉(zhuǎn)彎離開。在不存在此類轉(zhuǎn)彎時(shí),過程5100存儲(chǔ)(在5125處)所接收的接合點(diǎn),并同時(shí)認(rèn)識(shí)到,該所接收的接合點(diǎn)可能仍為更大的交叉口的一部分,以便確定是否將所接收的接合點(diǎn)與其他所接收的接合點(diǎn)(例如,單向道路5310與雙行車道路徑5306之間的接合點(diǎn)5320)一起包括在更大的交叉口中。例如,在交叉口5300中,過程將希望將所接收的接合點(diǎn)5320與所接收的接合點(diǎn)5315接合到單個(gè)更大的交叉口中。隨后,該過程結(jié)束。
當(dāng)在接合點(diǎn)處(例如,在接合點(diǎn)5320處)存在雙行車道的橫穿交通轉(zhuǎn)彎離開時(shí),過程在橫穿交通轉(zhuǎn)彎的方向上移動(dòng)(在5130處)直到到達(dá)下一個(gè)雙行車道路徑。在一些實(shí)施例中,由于路段在接合點(diǎn)處開始和停止,因此將在不同的所接收接合點(diǎn)(但不一定是下一個(gè)接合點(diǎn),如果道路諸如左轉(zhuǎn)車道被接收作為獨(dú)立的路徑段的話)處到達(dá)下一個(gè)雙行車道路徑。例如,從交叉口5320,過程將遍歷離開接合點(diǎn)5320的路徑5310直到在接合點(diǎn)5315處到達(dá)下一個(gè)雙行車道。
過程5100然后確定(在5135處)在5130處到達(dá)的雙行車道路徑是否具有在源雙行車道路徑的相對(duì)方向上的行進(jìn)方向。這基本上是對(duì)第二雙行車道是否可能是第一雙行車道的匹配路徑(即,它們是否可能是相同道路的兩邊)的快速?zèng)Q定因素。在大多數(shù)情況下,歸因于道路通常的構(gòu)建方式的本質(zhì),該下一個(gè)雙行車道將為匹配路徑。
在當(dāng)?shù)诙p行車道不在源路徑的相對(duì)方向上時(shí)的情況下,過程前進(jìn)至5125以存儲(chǔ)新到達(dá)的接合點(diǎn),以供以后用于確定是否將該接合點(diǎn)與任何其他所接收的接合點(diǎn)包括在一起。例如,如果路徑5306的左轉(zhuǎn)彎離開到達(dá)具有下行行進(jìn)方向的另一個(gè)雙行車道,則路徑5306可被假設(shè)為不具有數(shù)據(jù)上的匹配(至少就考慮到接合點(diǎn)而言),但新識(shí)別的路徑自己可能具有匹配。
另一方面,如果兩條雙行車道具有相對(duì)的行進(jìn)方向,則過程識(shí)別并存儲(chǔ)(在5140處)由橫穿交通轉(zhuǎn)彎遍歷的路段。在圖53的實(shí)例中,將存儲(chǔ)從接合點(diǎn)5320到接合點(diǎn)5315的路段。在一些實(shí)施例中,該路段將用作附加接合點(diǎn)合并過程的一部分。隨后,該過程結(jié)束。
上述過程5100,在應(yīng)用于地圖區(qū)域內(nèi)的所有接合點(diǎn)時(shí),將在雙行車道之間生成路段集合。一些實(shí)施例使用這些路段來將所接收的接合點(diǎn)連結(jié)在一起并識(shí)別附加的所接收接合點(diǎn)以包括在單個(gè)交叉口定義中。以下表示一些實(shí)施例的用于識(shí)別復(fù)雜交叉口的所有此類“內(nèi)”路段的偽碼:
針對(duì)為雙行車道的每個(gè)路段;
針對(duì)具有橫穿交通轉(zhuǎn)彎的每個(gè)連接,其中可將路徑組接至交叉口的另一邊;
將另一邊的路徑上的所有路段標(biāo)記為內(nèi)路段;
該偽碼包括關(guān)于是否可將路徑從路段組接至交叉口的另一邊的確定。以下包括一些實(shí)施例的用于此類確定的偽碼:
將第一路段添加至路徑;
從路徑上的最后路段獲得連接;
對(duì)每個(gè)連接進(jìn)行迭代處理以查找至另一邊的連接或者查找為最佳延續(xù)的連接;
如果連接為另一邊,則標(biāo)注成功并結(jié)束;
如果沒有連接為另一邊,并且沒有連接為最佳延續(xù),則
標(biāo)注失敗并結(jié)束;
否則:
將路段添加至路徑末端;
如果路徑太遠(yuǎn),則標(biāo)注失敗并結(jié)束;
如果十字路口太多,則標(biāo)注失敗并結(jié)束;
否則,返回以獲得所添加的路段的連接并對(duì)連接進(jìn)行迭代處理;
圖54概念性地示出了用于將若干接合點(diǎn)一起連結(jié)成單個(gè)交叉口并識(shí)別交叉口的支路的過程5400。過程5400以接收(在5405處)雙行車道之間的相交路段集合開始。在一些實(shí)施例中,可使用一過程,諸如圖51所示的過程,來識(shí)別這些路段。地圖繪制服務(wù)然后將彼此相交的此類路段的集合組合在一起(即,在所接收的接合點(diǎn)處)。圖55示出了在具有路徑5505和5506的雙行車道與具有路徑5510和5511的雙行車道之間的共同存在的交叉口5500。在該圖中,將相交路段集合示出為更粗的線。
過程然后識(shí)別(在5410處)直接連接至接合點(diǎn)處的相交路段集合的所有接合點(diǎn)和路徑段。即,相交路徑集合在接合點(diǎn)處相交,但這些接合點(diǎn)可包含附加路徑段。例如,在示例性交叉口5500中,離開交叉口的八個(gè)雙行車道路徑段均在四個(gè)接合點(diǎn)處與內(nèi)(更粗的)路徑段相交。因此,四個(gè)接合點(diǎn)和八個(gè)外路徑段均包括在交叉口中。
圖56,另一方面,示出了交叉口5600,其中左轉(zhuǎn)通道被定義為獨(dú)立的路徑段。在這種情況下,由于左轉(zhuǎn)通道在初始地圖數(shù)據(jù)中所接收的接合點(diǎn)處與內(nèi)路段相交,因此,由過程5400識(shí)別這些通道。在大多數(shù)情況下,左轉(zhuǎn)通道可在地圖數(shù)據(jù)中被表征為岔道或單行車道。
以下表示一些實(shí)施例的用于識(shí)別被當(dāng)作在交叉口“內(nèi)部”的所有轉(zhuǎn)彎通道的偽碼:
針對(duì)為雙行車道的每個(gè)路段;
針對(duì)具有橫穿交通轉(zhuǎn)彎的每個(gè)連接,其中可將路徑組接至內(nèi)路段;
將至內(nèi)路段的路徑上的所有路段自己標(biāo)記為內(nèi)路段;
該偽碼包括關(guān)于是否可將路徑從路段(例如,轉(zhuǎn)彎通道)組接至內(nèi)路段的確定。以下包括一些實(shí)施例的用于此類確定的偽碼:
將第一路段添加至路徑;
從路徑上的最后路段獲得連接(即,連接至接合點(diǎn)處最后路段的路段);
對(duì)每個(gè)連接進(jìn)行迭代處理以查找至內(nèi)路段或者查找為最佳延續(xù)的連接;
如果連接為內(nèi)路段,則標(biāo)注成功并結(jié)束;
如果沒有連接為內(nèi)路段,并且沒有連接為最佳延續(xù),則標(biāo)注失敗并結(jié)束;
否則:
將路段添加至路徑末端;
如果路徑太遠(yuǎn),則標(biāo)注失敗并結(jié)束;
如果十字路口太多,則標(biāo)注失敗并結(jié)束;
否則,返回以獲得所添加的路段的連接并對(duì)連接進(jìn)行迭代處理;
接下來,過程5400將新交叉口定義(在5415處)為包括所有所識(shí)別的接合點(diǎn)和路徑段,包括直接與路徑段的初始集合相交的那些。在一些實(shí)施例中,在圖56所示的情況下,將包括左轉(zhuǎn)通道離開其源雙行車道路段的接合點(diǎn)以及與初始路段相交的左轉(zhuǎn)通道。在這種情形下,一些實(shí)施例識(shí)別岔道或單行車道路徑段的其他接合點(diǎn)(即,開始接合點(diǎn)),這將為在進(jìn)入交叉口之前路徑段與雙行車道路徑段中的一者相交的地方。當(dāng)單行車道路徑段保持在(假設(shè)的)雙行車道路徑對(duì)內(nèi)部一閾值距離(例如,1km)時(shí),一些實(shí)施例假設(shè)路徑段為由雙行車道路徑所定義的道路的一部分,并且消除對(duì)接合點(diǎn)的考慮。
當(dāng)處理岔道或雙行車道外部的其他連接道路(例如,圖57的交叉口5700中所示的岔道5705)時(shí),一些實(shí)施例不將岔道當(dāng)作進(jìn)入雙行車道交叉口的路徑。相反,一些實(shí)施例將路徑表征識(shí)別為岔道并嘗試形成包括岔道的開始和結(jié)束接合點(diǎn)的閉合回路。在該閉合回路與新定義的交叉口共享公共接合點(diǎn)時(shí)(如通常情況),岔道可與交叉口相關(guān)聯(lián)但不被當(dāng)作該交叉口的內(nèi)路徑。另一方面,在新定義的雙行車道交叉口已由于例如左轉(zhuǎn)通道的存在而增長使得岔道接合點(diǎn)被現(xiàn)在包括相交單行車道的交叉口包圍(如對(duì)于圖58的交叉口5800中的岔道5805而言)時(shí),一些實(shí)施例將岔道當(dāng)作在新定義交叉口的內(nèi)部。在交叉口的描述中,將通常省略這些左轉(zhuǎn)通道、岔道等,因?yàn)橛脩敉ǔ2幌M麖?fù)雜的指令,但相反將希望“右轉(zhuǎn)上sanvicenteblvd”的指令或一些類似的指令。
借助形成所定義的交叉口的路段和接合點(diǎn)的集合,過程需要將雙行車道并道成單個(gè)接合點(diǎn)支路。過程5400接下來定義(在5420處)進(jìn)入交叉口的所有路徑的集合,并定義(在5425處)退出交叉口的所有路徑的集合。對(duì)于為單向路徑(雙向道的半道)的雙行車道而言,路徑將通常具有出口邊和入口邊。出于并道的目的,一些實(shí)施例將每個(gè)路段(退出交叉口的路段和進(jìn)入交叉口的路段)當(dāng)作獨(dú)立的路徑。不在雙行車道內(nèi)部的單行車道(例如,圖59的交叉口5900中的附加雙向路徑5905)將通常被當(dāng)作獨(dú)立的支路并且在一些實(shí)施例中不是并道分析的一部分。
接下來,過程確定(在5430處)入口路徑集合是否包括任何未配對(duì)的雙行車道路徑。當(dāng)在集合中未保留此類路徑(或在第一地點(diǎn)中不存在此類路徑)時(shí),過程將留在出口路徑集合中的任何未配對(duì)雙行車道存儲(chǔ)(在5435處)為接合點(diǎn)的獨(dú)立支路。一般來說,在誤標(biāo)記的地圖數(shù)據(jù)(道路實(shí)際上為單向街道)或者太嚴(yán)格的并道標(biāo)準(zhǔn)(離開未并道的入口和出口路徑對(duì))的情況下,將發(fā)生這種情況。
當(dāng)存在未配對(duì)的入口路徑時(shí),過程選擇(在5440處)入口路徑中的一者。過程然后確定(在5445處)在出口集合中是否存在潛在匹配。在一些實(shí)施例中,潛在匹配是通過向左(在左側(cè)駕駛區(qū)域的情況下,向右)遍歷先前識(shí)別的路段或者以順時(shí)針方式遍歷交叉口而發(fā)現(xiàn)的雙行車道。
當(dāng)不存在潛在匹配(例如,遍歷中的下一條所識(shí)別雙行車道也為入口路徑,或者出口集合為空)時(shí),過程將入口路徑存儲(chǔ)(在5450處)為交叉口的獨(dú)立支路然后返回至5430以查找下一個(gè)未配對(duì)的入口路徑。另一方面,當(dāng)存在潛在匹配時(shí),一些實(shí)施例確定(在5455處)潛在對(duì)是否滿足雙行車道匹配標(biāo)準(zhǔn)集合。在一些實(shí)施例中,這些是用于確定雙行車道對(duì)實(shí)際上是否是相同道路的兩邊的標(biāo)準(zhǔn)。一些實(shí)施例確定(1)兩條路徑是否在路徑進(jìn)入/退出交叉口的閾值距離(例如,25m、50m等)內(nèi),以及(2)路徑抵達(dá)交叉口內(nèi)其接合點(diǎn)的角度是否在彼此的閾值范圍(例如,5°、10°等)內(nèi)。為計(jì)算角度,一些實(shí)施例使用最靠近交叉口的邊緣(或者路徑段與交叉口內(nèi)其他路段相交的接合點(diǎn)的位置)的頂點(diǎn)以及位于特定預(yù)定距離(例如,50m)之外的頂點(diǎn)。過程然后針對(duì)兩個(gè)頂點(diǎn)之間的線計(jì)算相對(duì)于北方的角度。
在一些實(shí)施例中,地圖繪制服務(wù)此外還考慮路徑的名稱以確定這些是否匹配。在名稱匹配時(shí),此類實(shí)施例可針對(duì)匹配對(duì)而放松幾何結(jié)構(gòu)標(biāo)準(zhǔn)(即,允許路徑之間的更大距離或路徑之間的角度的更大差值)。匹配名稱可能是例如“ca-1south″和“ca-1north”,或者如果兩條路徑均包括“威爾士大道”作為它們的名稱中的一者。一些實(shí)施例還可考慮道路類數(shù)據(jù),以確認(rèn)匹配雙行車道。
如果兩條路徑匹配,則過程將路徑并道(在5460處)成新定義的交叉口的單個(gè)支路。如上文所指出,將交叉口存儲(chǔ)為呈不同角度的支路的集合。針對(duì)所并道的路徑,一些實(shí)施例將角度存儲(chǔ)為組成支路的兩條路徑的角度的平均值。圖60示出了將八路徑交叉口6000減少成四條支路,其中右支路6010的角度是右出口路徑6005與水平線的偏移的一半,因?yàn)橛胰肟诼窂皆谒骄€上。如圖概念性地示出,在一些實(shí)施例中,未針對(duì)交叉口支路存儲(chǔ)方向(入口/出口)。地圖繪制服務(wù)使用地圖數(shù)據(jù)生成路線,所述路線包括交叉口以及道路的行進(jìn)方向,因此路線在交叉口的支路上將不會(huì)行進(jìn)到錯(cuò)誤的路上。
另一方面,在路徑不匹配時(shí),過程將路徑中的每一者存儲(chǔ)(在5465處)為交叉口的獨(dú)立支路。圖61示出了將一不同的八路徑交叉口6100減少成五條支路。在這種情況下,
右邊的雙行車道路徑6105和6106不并道,并且因此被當(dāng)作減少的交叉口的獨(dú)立支路6110和6111。在該實(shí)例中,這些支路中的每一者離開交叉口的角度是針對(duì)支路存儲(chǔ)的角度(不進(jìn)行平均)。過程5400然后返回至5430以確定是否仍有任何入口路徑。如所述,一旦入口路徑集合為空,過程便前進(jìn)至5435并隨后結(jié)束。
以下表示一些實(shí)施例的用于一旦已針對(duì)交叉口識(shí)別了內(nèi)路段(例如,由過程5400中的一些或全部所執(zhí)行的操作)便針對(duì)交叉口生成數(shù)據(jù)的偽碼:
收集接觸交叉口的內(nèi)路段的所有外路段;識(shí)別由交叉口中的內(nèi)路段圍繞的外路段并將它們標(biāo)記為內(nèi);
將表示相同道路的駛?cè)牒婉偝雎范蔚呐鋵?duì)組合在一起;
針對(duì)每對(duì)以及針對(duì)每條未配對(duì)道路計(jì)算駛出角度;用每個(gè)角度的一條支路來構(gòu)造模板交叉口圖案;如果針對(duì)先前生成的交叉口存在圖案,則使用現(xiàn)有圖案來節(jié)省空間(使交叉口參考現(xiàn)有圖案);
否則如果不存在圖案,則創(chuàng)建和存儲(chǔ)圖案的新條目;
如所指出,一些實(shí)施例將每個(gè)交叉口存儲(chǔ)為數(shù)據(jù)結(jié)構(gòu)。該數(shù)據(jù)結(jié)構(gòu)指示交叉口的支路以及支路進(jìn)入和/或退出接合點(diǎn)的角度。圖62概念性地示出了一些實(shí)施例的針對(duì)點(diǎn)型交叉口的此類數(shù)據(jù)結(jié)構(gòu)6200的實(shí)例。如圖所示,交叉口包括交叉口id(其在一些實(shí)施例中為唯一標(biāo)識(shí)符)、地圖數(shù)據(jù)關(guān)聯(lián)以及包含角度和類型的支路集合。在一些實(shí)施例中,地圖數(shù)據(jù)關(guān)聯(lián)將交叉口數(shù)據(jù)結(jié)構(gòu)與地圖內(nèi)的實(shí)際位置相關(guān)聯(lián)。在一些實(shí)施例中,這僅是緯度/經(jīng)度點(diǎn),但在其他實(shí)施例中,還可由其他數(shù)據(jù)組成(例如,在交叉口相匯的路徑段或聚合路徑的列表)。每條支路包括類型和角度。在一些實(shí)施例中,類型為交叉口類型。一些實(shí)施例定義兩種交叉口類型:點(diǎn)型和環(huán)型。然后,其他實(shí)施例可包括附加交叉口類型,諸如交通廣場。一些實(shí)施例將交叉口類型存儲(chǔ)為交叉口的特性,而不是單獨(dú)針對(duì)每條支路來存儲(chǔ),但其他實(shí)施例辨認(rèn)交叉口部分地為環(huán)型但部分地為點(diǎn)型交叉口的可能性。數(shù)據(jù)結(jié)構(gòu)6200包括在0°(北)、90°(東)、180°(南)和-90°(西)的基本方向上的四條支路。在一些實(shí)施例中,交叉口數(shù)據(jù)結(jié)構(gòu)還包括對(duì)包含在所定義的交叉口內(nèi)的任何接合點(diǎn)(即,從地圖數(shù)據(jù)提供方接收的數(shù)據(jù))和路徑段的參考。針對(duì)兩條雙行車道的典型交叉口,此類數(shù)據(jù)結(jié)構(gòu)涉及四個(gè)接合點(diǎn)。
圖63示出了一些實(shí)施例的針對(duì)環(huán)型交叉口的數(shù)據(jù)結(jié)構(gòu)6300。一些實(shí)施例提供對(duì)環(huán)型交叉口的專門處理。以下表示一些實(shí)施例的用于針對(duì)環(huán)型交叉口生成交叉口數(shù)據(jù)的偽碼:
識(shí)別所有環(huán)型路段;
針對(duì)每個(gè)環(huán)型路段:
收集所有連續(xù)的環(huán)型路段;
將所收集的環(huán)型路段標(biāo)記為已處理;
通過環(huán)型路段的該合集來構(gòu)建環(huán)型
交叉口;
在一些情況下,地圖數(shù)據(jù)識(shí)別環(huán)島(例如,作為一種路形式或通過另一種指示符)。這允許地圖繪制服務(wù)交叉口計(jì)算器開始其專門的自動(dòng)環(huán)島處理。具體地,在執(zhí)行環(huán)島處理時(shí),地圖繪制服務(wù)嘗試識(shí)別延展連接道路對(duì)(即,延展進(jìn)入和退出環(huán)島的道路的部分)。在一些實(shí)施例中,交叉口計(jì)算器遍歷環(huán)島(例如,對(duì)于右邊駕駛而言,以逆時(shí)針的方式),尋找在特定距離(例如,角距離)內(nèi)接下來是入口路徑的出口路徑。過程然后確定是否組合這些路徑,從而考慮與針對(duì)在點(diǎn)型交叉口并道雙行車道的那些因素類似的因素。例如,所使用的因素可能包括名稱是否類似、出口/入口路徑之間的距離是否足夠小以及潛在的其他因素。由于這種處理,當(dāng)隨機(jī)道路在以別的方式看起來為入口/出口組合的結(jié)構(gòu)之間與環(huán)島相交時(shí),一些實(shí)施例將這當(dāng)作三條獨(dú)立的支路。
為計(jì)算支路的角度,一些實(shí)施例確定支路與環(huán)島相交的地方,而不是道路的接近角度。針對(duì)入口/出口組合,過程采用兩條路徑的平均值。圖64概念性地示出了將環(huán)型交叉口6400減少成相交數(shù)據(jù)。頂部路徑,盡管以相對(duì)于北方呈大約30°角度接近,但被指定為0°支路——用戶主要對(duì)圍繞交叉口的交通轉(zhuǎn)盤的距離感興趣,而不是對(duì)他們進(jìn)入和退出的角度感興趣。其他三條支路也指定了基本方向,因?yàn)樗鼈兂蜻@些方向的延展最終得到平衡。數(shù)據(jù)結(jié)構(gòu)6300示出了環(huán)型接合點(diǎn)6400的數(shù)據(jù)結(jié)構(gòu)。然而,其他實(shí)施例使用路徑進(jìn)入或退出環(huán)島的角度,而不是圍繞路徑與其相交的環(huán)島的距離。
以下表示一些實(shí)施例的用于一旦已針對(duì)交叉口識(shí)別了環(huán)型路段便針對(duì)環(huán)型交叉口生成數(shù)據(jù)的偽碼:
針對(duì)形成單個(gè)回路的環(huán)型路段的集合:
收集接觸回路的、按圍繞回路的行進(jìn)方向排序的所有非環(huán)型路段;
將表示相同道路的連續(xù)環(huán)型退出/進(jìn)入路段的配對(duì)組合在一起;
為每對(duì)和每個(gè)未配對(duì)路段分配角度;
從所有角度中減去最小的角度(因此,最小角度=0);用每個(gè)角度的一條支路來構(gòu)造模板交叉口圖案;如果針對(duì)先前生成的交叉口存在圖案,則使用現(xiàn)有圖案來節(jié)省空間(使交叉口參考現(xiàn)有圖案);
否則如果不存在圖案,則創(chuàng)建和存儲(chǔ)圖案的新條目;
如偽碼的上述實(shí)例所指出,一些實(shí)施例在存儲(chǔ)交叉口時(shí)執(zhí)行附加壓縮?,F(xiàn)實(shí)世界包含數(shù)百萬(或數(shù)億)的單獨(dú)交叉口,但許多這些交叉口具有相同的配置(尤其是在容許非常小的角度變化時(shí))。因此,一些實(shí)施例在存儲(chǔ)交叉口的過程中使用壓縮,而不是針對(duì)數(shù)億交叉口中的每一者存儲(chǔ)獨(dú)立的數(shù)據(jù)。在處理每個(gè)交叉口時(shí),一些實(shí)施例為該交叉口存儲(chǔ)模板圖案。在識(shí)別到具有模板圖案的附加交叉口時(shí),此類實(shí)施例存儲(chǔ)對(duì)該圖案的參考(并同時(shí)仍創(chuàng)建獨(dú)立的數(shù)據(jù)結(jié)構(gòu),因?yàn)閷?duì)于沿循相同圖案的兩個(gè)交叉口而言,位置信息是不同的)。
3.針對(duì)導(dǎo)航的接合點(diǎn)數(shù)據(jù)修改
上一章節(jié)描述了復(fù)雜交叉口數(shù)據(jù)的生成,所述生成通常在路線生成之前作為離線過程而完成。然而,在路線生成的時(shí)候,一些實(shí)施例修改交叉口數(shù)據(jù)以傳輸至用戶。提供路線數(shù)據(jù)的地圖繪制服務(wù)修改角度以使這些角度與進(jìn)入方向相關(guān)并將支路中的一者標(biāo)記為出口支路。
圖65概念性地示出了一些實(shí)施例的用于修改交叉口數(shù)據(jù)以便提供路線的導(dǎo)航信息的過程6500。如圖所示,過程以接收(在6505處)針對(duì)其生成交叉口信息的路線開始。如上所述,一些實(shí)施例針對(duì)用戶設(shè)備所請求的開始和結(jié)束位置的每個(gè)集合生成一條或多條路線。這些路線中的每一者均由在各個(gè)路徑交叉口處(即,在道路交叉口處)的一系列操縱組成。
如圖所示,在識(shí)別路線后,過程6500選擇(在6510處)沿路線的下一個(gè)交叉口。一些實(shí)施例始于從路線的起點(diǎn)開始的第一交叉口(即,沿循路線的用戶將進(jìn)行的第一操縱)。許多路線涉及沿特定道路的長伸展,穿過多個(gè)交叉口直線前行(可能包括為相同道路的一部分并且不與其他道路相交的兩個(gè)路段的接合點(diǎn))。在一些實(shí)施例中,導(dǎo)航指令不包括與不進(jìn)行轉(zhuǎn)彎操縱的交叉口有關(guān)的信息。因此,下一個(gè)交叉口實(shí)際上是沿路線的將在其處進(jìn)行操縱的下一個(gè)交叉口。
過程然后將預(yù)計(jì)算的交叉口數(shù)據(jù)檢索(在6515處)作為具有相關(guān)聯(lián)角度的支路集合。如上所述,一些實(shí)施例針對(duì)每個(gè)交叉口存儲(chǔ)數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)列出交叉口的支路以及每條支路的角度。圖62和圖63示出了針對(duì)點(diǎn)型交叉口和環(huán)型交叉口兩者的此類數(shù)據(jù)結(jié)構(gòu)的實(shí)例。
在針對(duì)所選擇的交叉口檢索數(shù)據(jù)結(jié)構(gòu)之后,地圖繪制服務(wù)旋轉(zhuǎn)交叉口定義以將定義歸一化為路線進(jìn)入交叉口的方向。因此,過程6500識(shí)別(在6520處)交叉口的入口支路并將入口支路設(shè)置為預(yù)定角度。一些實(shí)施例將進(jìn)入交叉口的移動(dòng)方向設(shè)置為0°,并因此將交叉口的入口支路設(shè)置為180°。
過程然后旋轉(zhuǎn)交叉口的其他支路。如圖所示,過程選擇(在6525處)交叉口的下一條支路。在一些實(shí)施例中,支路和角度存儲(chǔ)在陣列、列表或類似數(shù)據(jù)結(jié)構(gòu)中,并且過程遍歷該數(shù)據(jù)結(jié)構(gòu)。過程基于與入口支路的角距離來設(shè)置(在6530處)所選擇的支路的角度。例如,如果入口支路存儲(chǔ)為0°(即,指向北),則存儲(chǔ)為95°的支路將偏移180°達(dá)到-85°。此外,過程確定(在6535處)所選擇的支路是否為接合點(diǎn)的出口支路(即,路線退出交叉口的支路)。為使客戶端地圖繪制/導(dǎo)航應(yīng)用處的逐向?qū)Ш街噶钫_顯示操縱,設(shè)備需要知道路線沿交叉口的哪條支路退出。因此,在所選擇的支路為出口支路時(shí),過程6500如此標(biāo)記(在6540處)所選擇的支路。過程然后確定(在6545處)是否仍要針對(duì)該路線來轉(zhuǎn)變交叉口的任何附加支路。在仍有附加支路時(shí),過程返回至6525以選擇接合點(diǎn)的下一條支路。在已針對(duì)當(dāng)前交叉口處理所有支路時(shí),過程6500確定(在6560處)沿路線是否仍有需要修改的附加交叉口。在仍有附加交叉口時(shí),過程返回至6510以選擇下一個(gè)交叉口。在修改了最后一個(gè)交叉口時(shí),過程結(jié)束。
圖66示出了對(duì)穿過交叉口6600的路線的概念性繪制、交叉口的數(shù)據(jù)結(jié)構(gòu)6605以及對(duì)數(shù)據(jù)結(jié)構(gòu)的修改以創(chuàng)建用于逐向?qū)Ш街噶畹男聰?shù)據(jù)結(jié)構(gòu)6610。如圖所示,路線從右邊(90°支路)進(jìn)入并且在底部(-162°支路)退出交叉口。在已修改的數(shù)據(jù)結(jié)構(gòu)中,入口支路已旋轉(zhuǎn)至180°,導(dǎo)致其他支路的90°旋轉(zhuǎn)。18°處的支路旋轉(zhuǎn)至108°,-65°處的支路旋轉(zhuǎn)至25°,并且-162°處的支路旋轉(zhuǎn)至-72°。除旋轉(zhuǎn)角度之外,數(shù)據(jù)結(jié)構(gòu)6610還具有被標(biāo)記為用于導(dǎo)航的出口的最后支路。一些實(shí)施例包括二進(jìn)制出口字段,出口支路標(biāo)記為“1”并且所有其他支路標(biāo)記為“0”。
d.土地覆蓋物幾何結(jié)構(gòu)的生成
除生成地圖圖塊的道路幾何結(jié)構(gòu)之外,一些實(shí)施例還生成土地覆蓋物幾何結(jié)構(gòu)。與從各種來源接收路段數(shù)據(jù)非常相似,描述土地覆蓋物的數(shù)據(jù)也可如此(例如,作為指示特定土地覆蓋物主體的交界的一系列頂點(diǎn))。土地覆蓋物可包括水體(例如,河流、海洋、湖泊、游泳池等)、行政體(例如,州、國家、城市、公園等的交界)、區(qū)域標(biāo)示(例如,鄉(xiāng)村/市區(qū)/郊區(qū)、沙漠/山脈/森林等)或描述道路之間的土地的其他數(shù)據(jù)。首先,一些實(shí)施例使用這些坐標(biāo)來為土地覆蓋物項(xiàng)目增長幾何結(jié)構(gòu)。
在增長用于土地覆蓋物的幾何結(jié)構(gòu)之后,一些實(shí)施例使用各種操作來解決幾何結(jié)構(gòu)之間的交界。例如,當(dāng)組合來自不同來源的數(shù)據(jù)時(shí),指示對(duì)象交界的位置數(shù)據(jù)可能沒有完美地對(duì)齊并且因此可能存在對(duì)象幾何結(jié)構(gòu)之間的間隙或幾何結(jié)構(gòu)的重疊。一些實(shí)施例使用不同的操作來解決不同的幾何結(jié)構(gòu)之間的交界,這取決于對(duì)象的類型。另外,土地覆蓋物幾何結(jié)構(gòu)處理使用路段數(shù)據(jù)來填充土地覆蓋物幾何結(jié)構(gòu)并確保在土地覆蓋物與道路之間不留下間隙。一些實(shí)施例使土地覆蓋物幾何結(jié)構(gòu)朝向道路長出其所標(biāo)記的交界,在道路中心線位置處停止幾何結(jié)構(gòu)。雖然這創(chuàng)建了土地覆蓋物幾何結(jié)構(gòu)與道路幾何結(jié)構(gòu)之間的重疊,但在一些實(shí)施例中客戶端地圖繪制應(yīng)用包括用以渲染在土地覆蓋物幾何結(jié)構(gòu)頂部上的道路幾何結(jié)構(gòu)的指令。以下小節(jié)描述了用于解決各種土地覆蓋物交界之間的差異或不匹配的這些不同方法中的一些。
1.將土地覆蓋物合并至道路
圖67概念性地示出了過程6700,本發(fā)明的一些實(shí)施例執(zhí)行該過程以用于將土地覆蓋物多邊形合并至道路多邊形。在一些實(shí)施例中,執(zhí)行合并土地覆蓋物多邊形的過程以便解決因從不同數(shù)據(jù)源接收土地覆蓋物多邊形數(shù)據(jù)和道路多邊形數(shù)據(jù)而出現(xiàn)的數(shù)據(jù)不匹配。將參考圖68來描述合并土地覆蓋物的過程,圖68示出了在三個(gè)階段6801-6803中將土地覆蓋物合并至道路多邊形的一個(gè)實(shí)例。
如圖67所示,過程6700接收(在6705處)道路多邊形。過程6700然后接收(在6710處)至少兩個(gè)土地覆蓋物多邊形。在一些實(shí)施例中,道路多邊形和土地覆蓋物多邊形接收自兩個(gè)不同的數(shù)據(jù)源,而在其他實(shí)施例中,它們接收自相同的數(shù)據(jù)源。圖68中的階段6801示出了兩個(gè)此類土地覆蓋物多邊形6810和6820的實(shí)例。在該實(shí)例中,不同的土地覆蓋物類型通過每個(gè)土地覆蓋物多邊形示出。例如,土地覆蓋物6820可為湖泊,而土地覆蓋物6810可為公園。然而,在其他實(shí)施例中,土地覆蓋物多邊形6810和6820可為相同類型。此外,過程可接收不止兩個(gè)土地覆蓋物多邊形,為簡單起見,這未示出。第一階段6801還示出兩個(gè)土地覆蓋物多邊形之間的空白空間。由于土地覆蓋物表示除道路之外的所有區(qū)域,因此空白空間被假設(shè)為表示道路通常延伸的位置。然而,由于兩個(gè)土地覆蓋物6810和6820之間的空間的不規(guī)則性,如果在兩個(gè)土地覆蓋物多邊形之間繪制道路,則在道路與當(dāng)在用戶設(shè)備上渲染地圖時(shí)視覺上不美觀的土地覆蓋物之間將存在不規(guī)則的空白空間。因此,過程6700將土地覆蓋物合并至道路,如下所述。
過程6700在兩個(gè)土地覆蓋物多邊形之間的空白空間中繪制(在6715處)道路多邊形,如圖68的階段6801中的道路多邊形6830所示。在一些實(shí)施例中,該道路多邊形表示位于兩個(gè)土地覆蓋物多邊形之間的道路。在一些實(shí)施例中,道路可能未干凈利索地配合在空白空間的中心。道路的部分,或者整條道路,可能重疊一個(gè)或兩個(gè)多邊形。為簡單起見,在如下假設(shè)下描述過程6700:道路位于土地覆蓋物多邊形之間的空間中。
接下來,過程6700使土地覆蓋物多邊形增長(在6720處)一直到道路多邊形。例如,如圖68中階段6802所示,過程使土地覆蓋物多邊形6810的左邊擴(kuò)展直到多邊形到達(dá)道路多邊形6830的右邊。過程還使多邊形6820的右邊擴(kuò)展直到其到達(dá)道路多邊形6830的左邊。在一些實(shí)施例中,當(dāng)?shù)缆范噙呅挝凑w地位于土地覆蓋物多邊形之間的中心空間中時(shí),過程另選地使土地覆蓋物多邊形增長至間隙的中心。在其他實(shí)施例中,土地覆蓋物多邊形增長超過道路幾何結(jié)構(gòu),覆蓋道路幾何結(jié)構(gòu)的部分或全部。
為執(zhí)行步驟6720的這種擴(kuò)展,在一些實(shí)施例中,過程在擴(kuò)展之前使多邊形格柵化。通過使多邊形格柵化,過程針對(duì)每個(gè)土地覆蓋物多邊形內(nèi)的像素生成像素?cái)?shù)據(jù)。合并過程使用該像素?cái)?shù)據(jù)來以類似數(shù)據(jù)填充相鄰像素。例如,如果空像素與為表示已鋪筑區(qū)域的類型的土地覆蓋物多邊形的像素相鄰,則空像素也變成表示相同已鋪筑區(qū)域的類型。過程以此方式增長空像素,直到它們到達(dá)道路多邊形6830,該道路多邊形充當(dāng)障礙物以終止多邊形擴(kuò)展過程。
盡管圖68示出了僅繪制了一個(gè)道路多邊形的實(shí)例,但其他實(shí)施例包括表示兩個(gè)土地覆蓋物多邊形之間的不止一條道路的多個(gè)道路多邊形。在此類情況下,空白空間可保留在兩條道路之間,因?yàn)橥恋馗采w物多邊形未擴(kuò)展到兩條道路之間的空間中(即,道路充當(dāng)多邊形擴(kuò)展的障礙物)。
在空白空間保留在兩條道路之間時(shí),過程6700將道路之間的空白空間標(biāo)記(在6725處)為填充物。在一些實(shí)施例中,根據(jù)客戶端應(yīng)用上的不同指令來解譯和渲染所標(biāo)記的填充物。例如,在一些實(shí)施例中,用戶設(shè)備將這些空白空間渲染為道路分隔物。在其他實(shí)施例中,用戶設(shè)備將這些空白空間渲染為綠色空間、柏油等。
在標(biāo)記了可存在于兩條道路之間的任何空白空間之后,一些實(shí)施例將新增長的像素轉(zhuǎn)變成矢量以減少來自土地覆蓋物多邊形的頂點(diǎn)數(shù)量,以及所增長的像素與來自過程6700的步驟6710的原始接收多邊形的并集。過程然后在道路多邊形上繪制(在6730處)道路。在一些實(shí)施例中,所繪制的道路還可重疊靠近道路多邊形的多邊形。圖68的第三階段6803示出了過程6700的操作6730,其中過程在兩個(gè)多邊形6820和6810之間的道路多邊形上繪制道路6840。在該實(shí)例中,道路6840覆蓋道路多邊形并重疊多邊形6810和6820的部分。
接下來,過程任選地對(duì)某些土地覆蓋物多邊形類型執(zhí)行(在6735處)多邊形優(yōu)化以減少土地覆蓋物多邊形中的頂點(diǎn)數(shù)量。在一些實(shí)施例中,該過程涉及移除特定類型的某些土地覆蓋物多邊形并且在單獨(dú)層上繪制土地覆蓋物多邊形。例如,可對(duì)小水體諸如游泳池(或池塘)執(zhí)行這種優(yōu)化技術(shù),所述游泳池(或池塘)生成多邊形內(nèi)的對(duì)應(yīng)于池子及其周圍區(qū)域的大量頂點(diǎn)。例如,將由已鋪筑區(qū)域圍繞的四個(gè)游泳池表示為四個(gè)多邊形以表示池子自身。此外,將已鋪筑區(qū)域表示為其內(nèi)具有四個(gè)孔的多邊形。在一些實(shí)施例中,將對(duì)應(yīng)于游泳池及其對(duì)應(yīng)孔的多邊形移除并放置在單獨(dú)層中。繪制已鋪筑區(qū)域并且在其上繪制池子。以此方式,與池子相關(guān)的點(diǎn)數(shù)得以減少。
2.基于源數(shù)據(jù)的可靠性或質(zhì)量來合并交界
圖69概念性地示出了過程6900,在一些實(shí)施例中,該過程對(duì)從兩個(gè)不同來源接收的相鄰多邊形之間的交界進(jìn)行合并。在一些實(shí)施例中,執(zhí)行過程6900以解決從不同來源接收的不匹配的交界坐標(biāo),其中一個(gè)數(shù)據(jù)源被視為比另一個(gè)更可靠。將參考圖70和圖71描述合并交界坐標(biāo)的過程。圖70示出了本發(fā)明一些實(shí)施例的兩個(gè)階段7001和7002,所述兩個(gè)階段通過合并相鄰多邊形7020和7030之間的交界坐標(biāo)來解決所識(shí)別的間隙7010、7040和7060。圖71示出了本發(fā)明一些實(shí)施例中的兩個(gè)階段7101和7102,所述兩個(gè)階段對(duì)圍繞所識(shí)別的重疊7110和7140的多邊形7120和7130的交界坐標(biāo)進(jìn)行合并。
如圖69所示,過程6900接收(在6905處)彼此相鄰的兩個(gè)不同的土地覆蓋物類型的兩個(gè)多邊形。例如,這兩個(gè)土地覆蓋物類型可表示海洋和公園。過程還可接收表示其他地圖特征的若干其他土地覆蓋物類型。接下來,過程識(shí)別(在6910處)兩個(gè)多邊形的交界之間的任何間隙和重疊。
如圖70中的階段7001所示,在多邊形7020和7030之間存在間隙7010、7040和7060。如圖71所示,在多邊形7120和7130之間存在重疊區(qū)域7110和7140。盡管為簡單起見示出為單獨(dú)的圖,但本發(fā)明的一些實(shí)施例可合并圍繞間隙和重疊兩者的多邊形交界坐標(biāo),所述間隙和重疊在合并過程期間在相同的兩個(gè)多邊形之間出現(xiàn)。
重新參考圖69,在識(shí)別多邊形交界之間的間隙和重疊之后,過程6900確定(在6915處)哪個(gè)多邊形具有來自更可靠來源的交界坐標(biāo),從而具有更可靠的交界坐標(biāo)。例如,如果多邊形7120表示海洋且多邊形7130表示公園,并且提供海洋多邊形的供應(yīng)商或來源被視為更可靠或更好質(zhì)量的來源,則過程以偏向于更可靠數(shù)據(jù)的方式來解決(在6920處)重疊。在一些實(shí)施例中,過程以偏向于表示特定類型的多邊形的數(shù)據(jù)的方式來解決重疊。例如,在上述海洋/公園實(shí)例中,過程可確定海洋多邊形比公園多邊形更可靠并且以偏向于更可靠的海洋多邊形數(shù)據(jù)的方式來解決重疊。其他實(shí)施例以偏向于尺寸更大或更小的多邊形的方式來解決重疊。例如,一些實(shí)施例以偏向于具有最大周長或最大表面積的多邊形的方式來解決重疊,而其他實(shí)施例以偏向于具有最短周長或最小表面積的多邊形的方式來解決重疊。如在圖71的階段7102中所示,通過匹配較不可靠的多邊形7120的交界以與更可靠的多邊形7130的交界對(duì)齊,來移除重疊區(qū)域7110和7140。換句話說,使用更可靠的多邊形7130的坐標(biāo)來確定兩個(gè)區(qū)域之間的交界。
為解決間隙,針對(duì)具有較不可靠的交界坐標(biāo)(或更低質(zhì)量的數(shù)據(jù))的多邊形,過程基于多邊形的形狀來計(jì)算(在6925處)閾值。在一些實(shí)施例中,多邊形的形狀基于多邊形的面積除以多邊形的周長再乘以縮放系數(shù)。當(dāng)在具有較不可靠的坐標(biāo)的多邊形上超過預(yù)定數(shù)量的交界點(diǎn)比閾值更靠近更可靠的多邊形時(shí),過程(在6930處)使用更可靠的多邊形的交界坐標(biāo)并且延伸較不可靠的區(qū)域以接合更可靠的區(qū)域。一旦兩個(gè)多邊形之間的距離大于閾值,則兩個(gè)多邊形保留為分離。例如,如果圖70中的多邊形7030來自更可靠的來源(或具有更好的數(shù)據(jù)質(zhì)量),則通過將較不可靠的區(qū)域7020的交界延伸至區(qū)域7030的交界來封閉間隙7010和7060(其在該實(shí)例中小于所計(jì)算的閾值)。換句話說,區(qū)域7030的交界坐標(biāo)用于間隙7010和7060的區(qū)域中的兩個(gè)區(qū)域。另一方面,在該實(shí)例中,間隙7040的一部分中的兩個(gè)區(qū)域之間的距離大于所計(jì)算的閾值。因此,間隙7040僅部分地封閉。
在這些實(shí)例中,以偏向于更可靠的交界數(shù)據(jù)的方式來合并間隙和重疊。然而,其他實(shí)施例可以其他方式來合并圍繞間隙和重疊的交界坐標(biāo),所述其他方式包括以偏向于具有最多細(xì)節(jié)的多邊形或交界數(shù)據(jù)的方式來合并。
3.基于邊界數(shù)據(jù)的分析來合并區(qū)域交界
圖72概念性地示出了過程7200,該過程由本發(fā)明的一些實(shí)施例執(zhí)行以用于解決區(qū)域之間的邊界沖突。區(qū)域可為任何土地覆蓋物區(qū)域,諸如水體、公園、建筑物等。區(qū)域還可為行政區(qū)域,諸如州、市、縣、國家等。過程提取邊界以便在針對(duì)共同邊界給出兩個(gè)數(shù)據(jù)集合時(shí)解決不匹配。例如在從不同的來源獲得共同交界的區(qū)域邊界數(shù)據(jù)時(shí),可發(fā)生此類不匹配。過程7200嘗試以偏向于單個(gè)邊界的方式來解決不匹配。
如圖72所示,過程7200接收(在7205處)對(duì)應(yīng)于不同區(qū)域的多邊形。過程然后識(shí)別(在7210處)區(qū)域之間的重疊。過程通過將重疊區(qū)域包括(在7215處)在具有保持最多邊界數(shù)據(jù)點(diǎn)的邊界的區(qū)域中,來解決重疊。在一些實(shí)施例中,步驟7215涉及從第二多邊形中減去第一多邊形或者反之亦然。一些實(shí)施例基于前述哪個(gè)操作具有更多的邊界數(shù)據(jù)點(diǎn)來解決重疊,從而保持更多的邊界細(xì)節(jié)。
接下來,過程7200確定(在7220處)是否已檢查所有重疊區(qū)域。如果否,則過程返回至步驟7210以識(shí)別不同區(qū)域之間的另一重疊區(qū)域。
在已檢查所有重疊區(qū)域之后,過程7200繼續(xù)至步驟7225以識(shí)別相鄰區(qū)域之間的間隙。本發(fā)明的一些實(shí)施例通過獲取所有區(qū)域的并集并減去已經(jīng)檢查到重疊的所有區(qū)域,來獲得相鄰邊界之間的間隙的列表。
一旦過程識(shí)別了相鄰區(qū)域之間的間隙,過程7200便確定(在7230處)間隙是否在僅兩個(gè)區(qū)域之間。如果是,則過程使用(在7235處)沿交界保持最多點(diǎn)數(shù)的區(qū)域的邊界。否則,間隙在三個(gè)或更多個(gè)區(qū)域之間。在這種情況下,過程使用(在7240處)具有最長邊界的區(qū)域的邊界。然而,在一些實(shí)施例中,如果間隙在四個(gè)或更多個(gè)州之間,則過程可標(biāo)記該間隙以供人為分析。過程然后確定(在7245處)是否已檢查所有間隙。如果否,則過程返回至步驟7225以識(shí)別另一間隙。如果是,則過程結(jié)束。
圖73示出了通過執(zhí)行過程7200來解決兩個(gè)相鄰區(qū)域7350和7360之間的邊界沖突的實(shí)例。盡管為簡單起見圖73僅示出兩個(gè)區(qū)域,但可對(duì)若干區(qū)域之間的不匹配邊界執(zhí)行過程7200。如所示,區(qū)域7350和7360共享共同邊界7390。然而,兩個(gè)區(qū)域之間存在邊界沖突。圖73的第一階段7301示出了區(qū)域7350和7360之間的邊界7390的破裂部分7340。破裂部分7340示出了邊界沖突的實(shí)例,所述邊界沖突諸如可通過執(zhí)行過程7200來解決的重疊7310和間隙7330。
圖73的第二階段7302示出了在對(duì)邊界7390執(zhí)行過程7200之后邊界7370可能看起來的樣子的破裂部分。重新參考圖72,過程7200將首先識(shí)別(在7210處)重疊7310并通過包括(在7215處)區(qū)域的保持最多邊界數(shù)據(jù)點(diǎn)的部分來解決沖突。在圖73所示的實(shí)例中,過程7200確定圍繞區(qū)域7360的邊界7395保持更多邊界數(shù)據(jù)點(diǎn)并如階段7302所示包括該邊界。過程7200然后識(shí)別(在7225處)間隙7330必須被解決。過程嘗試也通過使用(在7235處)保持更多邊界數(shù)據(jù)點(diǎn)的邊界來移除區(qū)域7350和7360之間的間隙7330。在圖73所示的實(shí)例中,過程7200確定針對(duì)邊界的該部分,圍繞區(qū)域7350的邊界7397保持更多邊界數(shù)據(jù)點(diǎn)并如階段7302所示包括該邊界。在一些實(shí)施例中,由一個(gè)或多個(gè)軟件模塊來執(zhí)行過程67、69和72中定義的一些或所有操作。
e.圖塊生成
由生成地圖圖塊的服務(wù)器集合執(zhí)行的最后操作之一是圖塊切割操作,該圖塊切割操作生成地圖圖塊并在這些圖塊中對(duì)幾何和矢量數(shù)據(jù)進(jìn)行編碼。在一些實(shí)施例中,服務(wù)器集合以圖塊樹定義地圖,該圖塊樹具有對(duì)應(yīng)于用于查看地圖的多個(gè)縮放級(jí)別的多個(gè)級(jí)別。例如,在一些實(shí)施例中,圖塊樹數(shù)據(jù)結(jié)構(gòu)為四叉樹,該四叉樹具有對(duì)應(yīng)于用于查看地圖的二十一個(gè)縮放級(jí)別的二十一個(gè)級(jí)別。在四叉樹中,每個(gè)節(jié)點(diǎn)為一地圖圖塊,且每個(gè)非葉節(jié)點(diǎn)具有四個(gè)子圖塊節(jié)點(diǎn)。
圖塊切割操作具有若干新穎性。一個(gè)新穎性在于它用來將針對(duì)地圖生成的每個(gè)幾何結(jié)構(gòu)與圖塊四叉樹中的一個(gè)或多個(gè)圖塊相關(guān)聯(lián)的快速機(jī)制。在一些實(shí)施例中,該快速機(jī)制使用分布式計(jì)算來將地圖中的大量幾何結(jié)構(gòu)與大量地圖圖塊快速地相關(guān)聯(lián)。將確定是否應(yīng)將每個(gè)幾何結(jié)構(gòu)與圖塊相關(guān)聯(lián)的任務(wù)當(dāng)作獨(dú)立于其他類似任務(wù)的任務(wù),可將所述任務(wù)中的每一者分配至分布式計(jì)算環(huán)境中的不同計(jì)算資源。
例如,一個(gè)計(jì)算資源可確定一個(gè)幾何結(jié)構(gòu)是否與一個(gè)圖塊相交。如果相交,則針對(duì)每個(gè)圖塊的子圖塊,執(zhí)行單獨(dú)的相交操作,以便確定幾何結(jié)構(gòu)是否與子圖塊相交。單獨(dú)的計(jì)算資源可獨(dú)立于其他計(jì)算資源來執(zhí)行每個(gè)不同的相交操作。該過程可被視為沿圖塊四叉樹向下“投擲”幾何結(jié)構(gòu),從而識(shí)別幾何結(jié)構(gòu)所相交的每個(gè)圖塊節(jié)點(diǎn),然后將幾何結(jié)構(gòu)的相交部分發(fā)送至每個(gè)相交節(jié)點(diǎn)的每個(gè)子節(jié)點(diǎn)以確定子節(jié)點(diǎn)是否與幾何結(jié)構(gòu)相交。然后將針對(duì)每個(gè)圖塊節(jié)點(diǎn)識(shí)別的幾何結(jié)構(gòu)用于圖塊切割過程中以生成圖塊。
另一個(gè)新穎性涉及它用來對(duì)地圖圖塊中的道路矢量數(shù)據(jù)進(jìn)行重新編碼以移除不必要數(shù)據(jù)的快速機(jī)制。再次,圖塊切割操作使用分布式計(jì)算來分配該對(duì)矢量數(shù)據(jù)進(jìn)行重新編碼的任務(wù)。每個(gè)所分配的任務(wù)涉及在相同的畫布上初始地記錄每個(gè)圖塊的道路數(shù)據(jù)(其可能是重疊的)以便合并重疊的道路幾何結(jié)構(gòu)。任務(wù)然后涉及對(duì)該數(shù)據(jù)重新進(jìn)行矢量編碼以生成不重復(fù)的矢量數(shù)據(jù)。
一些實(shí)施例的這種圖塊切割操作在2012年6月10日提交的標(biāo)題為“scalableandefficientcuttingofmaptiles”的美國臨時(shí)專利申請61/657,872;2012年9月30日提交的標(biāo)題為“scalableprocessingforassociatinggeometrieswithmaptiles”的美國專利申請13/632,003;以及2012年9月30日提交的標(biāo)題為“scalableandefficientcuttingofmaptiles”的美國專利申請13/632,004中進(jìn)行了進(jìn)一步描述。臨時(shí)申請61/657,872以及非臨時(shí)申請13/632,003和13/632,004以引用方式并入本文。
iii.3d展示的客戶端側(cè)生成
一些實(shí)施例的地圖繪制應(yīng)用使用各種新穎技術(shù)來在地圖正在被瀏覽時(shí)或者在地圖正在提供導(dǎo)航展示時(shí)呈現(xiàn)地圖的3d展示。例如,如上所述,地圖繪制應(yīng)用根據(jù)虛擬相機(jī)的有利位置來渲染3d展示,并且使用在某些情形下自動(dòng)移動(dòng)虛擬相機(jī)(即,移動(dòng)視角渲染位置)的各種方法來實(shí)現(xiàn)所需的3d展示。當(dāng)一些實(shí)施例的地圖繪制應(yīng)用在設(shè)備即將沿路線轉(zhuǎn)彎時(shí)將虛擬相機(jī)的位置從移動(dòng)的設(shè)備的當(dāng)前位置后面的視角渲染位置移動(dòng)至當(dāng)前位置的自上而下視圖時(shí),一個(gè)此類實(shí)例發(fā)生。另一個(gè)實(shí)例是提供的放大/縮小動(dòng)畫,所述放大/縮小動(dòng)畫示出場景中的對(duì)象隨著放大操作和縮小操作而變大和收縮。
另外,在一些實(shí)施例中,地圖繪制應(yīng)用提供兩種不同類型的3d展示——沉浸式3d展示和非沉浸式3d展示。在一些實(shí)施例中的沉浸式展示不僅顯示更多幾何結(jié)構(gòu)而且還顯示在非沉浸式展示中顯示的幾何結(jié)構(gòu)的更多細(xì)節(jié)。地圖繪制應(yīng)用還提供非沉浸式展示與沉浸式展示之間的平滑過渡。
為了實(shí)現(xiàn)此類平滑過渡并生成其他新穎的效果,一些實(shí)施例的地圖繪制應(yīng)用使用新穎的圖像處理流水線。此流水線執(zhí)行各種預(yù)加載操作以下載、檢索和/或解壓縮可能為導(dǎo)航展示所需要的地圖圖塊,以為其渲染操作準(zhǔn)備好其渲染流水線,并且準(zhǔn)備復(fù)制流水線以在沉浸式3d展示與非沉浸式3d展示之間平滑地過渡。
下面的小節(jié)a描述了用于渲染3d展示的虛擬相機(jī)的自動(dòng)移動(dòng)。小節(jié)b然后進(jìn)一步描述了地圖繪制應(yīng)用的沉浸式3d展示和非沉浸式3d展示。小節(jié)c接下來描述了地圖繪制應(yīng)用的圖像處理流水線以及其相關(guān)聯(lián)的網(wǎng)格構(gòu)建流水線、虛擬相機(jī)和渲染引擎。
a.自動(dòng)虛擬相機(jī)移動(dòng)
如上所述,虛擬相機(jī)是3d地圖中的由地圖繪制應(yīng)用渲染以生成3d地圖視圖的位置的概念化。以下提供了對(duì)此類虛擬相機(jī)的自動(dòng)移動(dòng)的若干不同實(shí)例的描述。
1.路線導(dǎo)航期間的虛擬相機(jī)移動(dòng)
圖74概念性地示出了基于路線導(dǎo)航自動(dòng)圍繞3d地圖7435的區(qū)域移動(dòng)的虛擬相機(jī)7400的實(shí)例。圖74示出了在三個(gè)不同的階段7405-7415的虛擬相機(jī)7400的圍繞3d地圖7435的區(qū)域的移動(dòng)。在一些實(shí)施例中,地圖繪制應(yīng)用通過參考圖75來執(zhí)行下文所述的過程7500以渲染該圖中所描述的3d地圖視圖。如該圖所示,3d地圖7435的區(qū)域包括在橋梁上方延伸的道路。
第一階段7405示出了在3d地圖7435中的特位置置和位置處的虛擬相機(jī)7400。在一些實(shí)施例中,虛擬相機(jī)7400在3d地圖7435中正聚焦的點(diǎn)(即,從虛擬相機(jī)前方投射出的線與道路相交的點(diǎn))被稱為聚焦點(diǎn)。在一些實(shí)施例中,地圖繪制應(yīng)用將沿路線的在用戶位置(在該實(shí)例中由在頂部具有三角形的圓圈表示)前方定義距離(例如,5英尺、10英尺、25英尺、50英尺等)處的點(diǎn)用作虛擬相機(jī)7400的聚焦點(diǎn)。一些實(shí)施例的地圖繪制應(yīng)用基于用戶的行進(jìn)速度使用沿路線的在用戶位置前方的不同距離(例如,在用戶以較快的速度行進(jìn)時(shí),使用更長的距離,以及在用戶以較慢的速度行進(jìn)時(shí),使用更短的距離)。
在第一階段7405中,虛擬相機(jī)7400的聚焦點(diǎn)為沿橋梁斜升部的在用戶位置前方定義距離處的點(diǎn)。在該階段7405中,以虛擬相機(jī)7400的視角的3d地圖7435的示例性渲染圖像在3d地圖視圖7420中示出。該圖中所示的3d地圖視圖7420、7425和7430,以及在本節(jié)內(nèi)其他圖中所示的那些,不包括各種ui控件和特征(例如,道路指示牌、導(dǎo)航指示牌、浮動(dòng)控件等)以便突出顯示所渲染的地圖圖像。
第二階段7410示出了在3d地圖7435中的不同位置和位置處的虛擬相機(jī)7400。在該實(shí)例中,虛擬相機(jī)7400已向上移動(dòng),因?yàn)橛捎跇蛄旱母叨榷颂摂M相機(jī)7400的聚焦點(diǎn)。此外,虛擬相機(jī)7400已朝右移動(dòng)以沿循路線導(dǎo)航。從第一階段7405到第二階段7410,地圖繪制應(yīng)用自動(dòng)移動(dòng)虛擬相機(jī)7400,渲染來自虛擬相機(jī)7400沿路徑的視角的3d地圖的圖像,并在設(shè)備上顯示所述圖像。在該階段7410中,以虛擬相機(jī)7400的視角的3d地圖7435的示例性渲染圖像在3d地圖視圖7425中示出。
第三階段7415示出了在3d地圖7435中的另一不同位置和位置處的虛擬相機(jī)7400。對(duì)于該實(shí)例而言,虛擬相機(jī)7400已向下移動(dòng),因?yàn)樘摂M相機(jī)7400的聚焦點(diǎn)在道路上而不再是在橋梁上。此外,虛擬相機(jī)7400已朝右移動(dòng)以沿循路線導(dǎo)航。從第二階段7410到第三階段7415,地圖繪制應(yīng)用自動(dòng)移動(dòng)虛擬相機(jī)7400,渲染來自虛擬相機(jī)7400沿路徑的視角的3d地圖的圖像,并在設(shè)備上顯示所述圖像。在該階段7415中,以虛擬相機(jī)7400的視角的3d地圖7435的示例性渲染圖像在3d地圖視圖7430中示出。
在一些實(shí)施例中,地圖繪制應(yīng)用檢測沿路線的聚焦點(diǎn)的標(biāo)高改變的閾值量,或者標(biāo)高改變的閾值速率。在地圖繪制應(yīng)用檢測到用戶沿路線的位置在標(biāo)高上已降低并且已通過閾值中的一者或兩者時(shí),一些此類實(shí)施例的地圖繪制應(yīng)用響應(yīng)于沿路線的聚焦點(diǎn)的位置將延遲添加至虛擬相機(jī)的跟蹤調(diào)節(jié)的位置。在一些實(shí)施例中,在地圖繪制應(yīng)用檢測到用戶沿路線的位置在標(biāo)高上降低時(shí),地圖繪制應(yīng)用將虛擬相機(jī)的高度(例如,虛擬相機(jī)沿z軸的位置)保持一定義時(shí)間量。添加延遲并將高度保持一定義時(shí)間量是各自防止虛擬相機(jī)過近地接近道路或在一些情況下碰撞到道路的技術(shù)。這樣,地圖繪制應(yīng)用便在遍歷起伏道路的同時(shí)為用戶提供更好的地圖視圖。
圖75概念性地示出了一些實(shí)施例的用于在路線導(dǎo)航期間以動(dòng)畫方式顯示地圖視圖的過程。一些實(shí)施例的地圖繪制應(yīng)用以定義的時(shí)間間隔(例如,0.5秒、1秒、3秒、5秒等)來執(zhí)行過程7500。在一些實(shí)施例中,地圖繪制應(yīng)用重復(fù)地執(zhí)行過程7500而同時(shí)地圖繪制應(yīng)用在路線導(dǎo)航模式中操作。
過程7500以識(shí)別(在7510處)用于確定在時(shí)間段結(jié)束時(shí)虛擬相機(jī)的位置的屬性集合開始。在一些實(shí)施例中,時(shí)間段的結(jié)束是地圖繪制應(yīng)用接收到用戶的當(dāng)前位置的時(shí)間,并且時(shí)間段的開始是地圖繪制應(yīng)用接收到用戶的前一個(gè)位置的時(shí)間。在一些實(shí)施例中,屬性集合包括用于得出虛擬相機(jī)的位置和取向的數(shù)據(jù)。
在不同的實(shí)施例中,過程7500使用不同的屬性集合。以下描述了由一些實(shí)施例的過程7500使用的一些或所有屬性。例如,一些實(shí)施例的過程7500使用基準(zhǔn)點(diǎn)的位置(即,用戶的位置)。一些實(shí)施例的過程7500使用虛擬相機(jī)的聚焦點(diǎn)的位置,該位置在一些實(shí)施例中被用于確定虛擬相機(jī)應(yīng)面朝哪個(gè)方向。
在用戶偏離路線導(dǎo)航的路線的情況下,聚焦點(diǎn)是沿用戶行進(jìn)方向(如果該行進(jìn)方向可確定的話)的在用戶前方的固定距離處或者在不能確定用戶行進(jìn)方向時(shí)在用戶以北的固定距離處。在用戶相對(duì)于路線導(dǎo)航在路線上的情況下,聚焦點(diǎn)是沿路線的在用戶前方的固定距離處以允許虛擬相機(jī)在用戶實(shí)際轉(zhuǎn)彎之前敏銳地窺視轉(zhuǎn)彎。
一些實(shí)施例將角度限制在(1)通過基準(zhǔn)點(diǎn)和聚焦點(diǎn)定義的矢量與(2)以一定義的最大角度量指向用戶行進(jìn)方向的矢量之間。例如,如果路線在前方不久的拐角轉(zhuǎn)彎,則聚焦點(diǎn)將為從設(shè)備的當(dāng)前位置起圍繞拐角的點(diǎn)。由于轉(zhuǎn)動(dòng)虛擬相機(jī)以面朝實(shí)際點(diǎn)可能使虛擬相機(jī)直接面朝建筑物,因此虛擬相機(jī)為窺視拐角而轉(zhuǎn)動(dòng)的量是有限的,使得行進(jìn)方向的視圖始終部分地顯示。
一些實(shí)施例的過程7500使用的另一個(gè)虛擬相機(jī)位置指示符是興趣點(diǎn)的位置(例如,即將到來的交叉口的位置)。在一些實(shí)施例中,過程7500確定虛擬相機(jī)視圖樣式并使用該指示符來得出虛擬相機(jī)的位置和取向。虛擬相機(jī)視圖樣式的實(shí)例包括自上而下對(duì)中、自上而下朝前以及屋頂。在一些實(shí)施例中,自上而下對(duì)中的視圖樣式是指其中虛擬相機(jī)筆直地向下看著用戶位置使得用戶位置位置于屏幕的中心。在一些實(shí)施例中,自上而下朝前的視圖樣式是指其中虛擬相機(jī)筆直地向下看著用戶位置使得用戶位置朝著顯示器的底部位置。在一些實(shí)施例中,屋頂視圖樣式是指其中虛擬相機(jī)位置在用戶位置的后方并傾斜使得虛擬相機(jī)正沿從用戶位置到聚焦點(diǎn)的矢量朝前看。如果用戶偏離路線導(dǎo)航的路線或者用戶行進(jìn)方向不能確定(例如,在用戶停車時(shí)),則虛擬相機(jī)設(shè)置為自上而下對(duì)中的視圖樣式。否則,通過用戶已請求2d導(dǎo)航模式還是3d導(dǎo)航模式來確定視圖樣式。如果用戶已請求2d導(dǎo)航模式,則視圖樣式設(shè)置為自上而下朝前的視圖樣式。如果用戶已請求3d導(dǎo)航模式,則視圖樣式設(shè)置為屋頂視圖樣式。
在一些實(shí)施例中,過程7500確定虛擬相機(jī)的焦點(diǎn)樣式并使用該焦點(diǎn)樣式來確定虛擬相機(jī)的位置和取向。虛擬相機(jī)焦點(diǎn)樣式的實(shí)例包括巡航焦點(diǎn)樣式和硬焦點(diǎn)樣式。在一些實(shí)施例中,巡航焦點(diǎn)樣式是指其中虛擬相機(jī)被設(shè)置為預(yù)設(shè)高度和俯仰角。在一些實(shí)施例中,硬焦點(diǎn)樣式是指其中虛擬相機(jī)被設(shè)置為一高度(例如,在自上而下對(duì)中或自上而下朝前的視圖樣式中)和/或一俯仰(例如,在屋頂視圖樣式中)使得在屏幕上顯示給定興趣點(diǎn)(例如,在用戶接近興趣點(diǎn)時(shí),虛擬相機(jī)聚焦在該興趣點(diǎn)上)。
接下來,過程7500基于所識(shí)別的屬性確定(在7520處)虛擬相機(jī)的位置和取向。在確定了虛擬相機(jī)的位置和取向之后,過程7500基于虛擬相機(jī)的位置和取向識(shí)別(在7530處)在時(shí)間段結(jié)束時(shí)基準(zhǔn)點(diǎn)集合的位置?;鶞?zhǔn)點(diǎn)的實(shí)例包括相機(jī)的位置、虛擬相機(jī)的前向矢量與地面之間的相交、沿虛擬相機(jī)的右矢量的定義點(diǎn),等等。
過程7500然后識(shí)別(在7540處)先前基準(zhǔn)點(diǎn)的對(duì)應(yīng)集合的位置。在一些實(shí)施例中,地圖繪制應(yīng)用維持基準(zhǔn)點(diǎn)集合的位置的歷史,該歷史以與由過程7500在7520處識(shí)別的那些相同的方式來確定,過程7500訪問該歷史。
最后,過程7500基于在7530和7540處識(shí)別的基準(zhǔn)點(diǎn)集合來對(duì)動(dòng)畫地圖視圖渲染(在7550處)所述時(shí)間段。為渲染動(dòng)畫地圖視圖,一些實(shí)施例的過程7500使用與每個(gè)基準(zhǔn)點(diǎn)相關(guān)聯(lián)的三次多項(xiàng)式。過程7500通過(1)在動(dòng)畫期間沿基準(zhǔn)點(diǎn)的相關(guān)聯(lián)的三次多項(xiàng)式來遍歷虛擬相機(jī)的基準(zhǔn)點(diǎn)中的每一者,并同時(shí)(2)渲染虛擬相機(jī)的地圖視圖,來以動(dòng)畫方式顯示地圖視圖。
在渲染動(dòng)畫地圖視圖之前,在基準(zhǔn)點(diǎn)已相對(duì)于其對(duì)應(yīng)的前一個(gè)基準(zhǔn)點(diǎn)改變時(shí),一些實(shí)施例的過程7500更新與特定基準(zhǔn)點(diǎn)相關(guān)聯(lián)的三次多項(xiàng)式。在一些實(shí)施例中,過程7500用基于基準(zhǔn)點(diǎn)的位置、對(duì)應(yīng)的前一個(gè)基準(zhǔn)點(diǎn)的位置確定的三次多項(xiàng)式以及基于基準(zhǔn)點(diǎn)及其對(duì)應(yīng)的前一個(gè)基準(zhǔn)點(diǎn)的兩個(gè)切線,來更新三次多項(xiàng)式。在一些實(shí)施例中,過程7500使用在基準(zhǔn)點(diǎn)位置處結(jié)束并且從對(duì)應(yīng)的前一個(gè)基準(zhǔn)點(diǎn)的位置處開始的矢量的縮放型式作為所述切線中的一者。針對(duì)另一條切線,一些實(shí)施例的過程7500使用以與第一縮放矢量類似的方式確定的另一個(gè)縮放矢量,只不過該矢量在前一個(gè)基準(zhǔn)點(diǎn)的位置處以及其對(duì)應(yīng)的前一個(gè)基準(zhǔn)點(diǎn)的位置處結(jié)束。過程7500使用這兩個(gè)切線、基準(zhǔn)點(diǎn)的位置以及對(duì)應(yīng)的前一個(gè)基準(zhǔn)點(diǎn)的位置來擬合三次多項(xiàng)式,并將所擬合的三次多項(xiàng)式用作基準(zhǔn)點(diǎn)的當(dāng)前三次多項(xiàng)式。
2.圍繞交叉口的虛擬相機(jī)移動(dòng)
圖76概念性地示出了在路線導(dǎo)航期間在3d地圖7650中自動(dòng)操縱轉(zhuǎn)彎的虛擬相機(jī)7600的實(shí)例。圖76示出了在三個(gè)不同的階段7605-7615的虛擬相機(jī)7600的在3d地圖7650中的移動(dòng)。在一些實(shí)施例中,地圖繪制應(yīng)用通過參考圖77來執(zhí)行下文所述的過程7700以操縱轉(zhuǎn)彎。如圖所示,3d地圖7650的區(qū)域包括鄰接另一條道路的道路以及在丁字路口右邊的建筑物。
第一階段7605示出了在3d地圖7650中的特位置置和位置處的虛擬相機(jī)7600。在一些實(shí)施例中,虛擬相機(jī)7600在3d地圖7650中正聚焦的點(diǎn)(即,從虛擬相機(jī)前方投射出的線與道路相交的點(diǎn))被稱為聚焦點(diǎn)。在一些實(shí)施例中,地圖繪制應(yīng)用將沿路線的在用戶位置(在該實(shí)例中由在頂部具有三角形的圓圈表示)前方定義距離(例如,5英尺、10英尺、25英尺、50英尺等)處的點(diǎn)用作虛擬相機(jī)7600的聚焦點(diǎn)。一些實(shí)施例的地圖繪制應(yīng)用基于用戶的行進(jìn)速度使用沿路線的在用戶位置前方的不同距離(例如,在用戶以較快的速度行進(jìn)時(shí),使用更長的距離,以及在用戶以較慢的速度行進(jìn)時(shí),使用更短的距離)。對(duì)于該實(shí)例而言,虛擬相機(jī)7600的聚焦點(diǎn)為沿路線的在用戶位置前方的點(diǎn)。
在第一階段7605中,虛擬相機(jī)7600的聚焦點(diǎn)為在用戶正沿其行進(jìn)的道路上在用戶位置前方的點(diǎn)。第一階段7605還示出了虛擬相機(jī)7600和3d地圖7650的對(duì)應(yīng)的自上而下視圖7620。如圖所示,在該實(shí)例中,聚焦點(diǎn)由在用戶正沿其行進(jìn)的道路上位于用戶前方的黑色圓圈指示。在該階段7605中,以虛擬相機(jī)7600的視角的3d地圖7650的示例性渲染圖像在3d地圖視圖7635中示出。3d地圖視圖7635還示出了虛擬相機(jī)的聚焦點(diǎn)。
第二階段7610示出了在3d地圖7650中的不同位置和位置處的虛擬相機(jī)7600。如在第二階段7610中所示,虛擬相機(jī)7600已沿路線導(dǎo)航朝著交叉口向右移動(dòng)。為將焦點(diǎn)維持在聚焦點(diǎn)上,虛擬相機(jī)7600還已向上移動(dòng)(例如,沿z軸向上)以便在右轉(zhuǎn)期間提供更好的聚焦點(diǎn)視圖以防虛擬相機(jī)可能受阻。例如,當(dāng)附近或在交叉口處存在建筑物時(shí),聚焦點(diǎn)可能被建筑物遮擋,從而妨礙轉(zhuǎn)彎拐角前方的視野。
此外,虛擬相機(jī)7600在該階段已向下傾斜(例如,減少的俯仰)以便維持對(duì)聚焦點(diǎn)的瞄準(zhǔn)。第二階段7610處的自上而下視圖7625示出了虛擬相機(jī)7600已稍微向交叉口的右側(cè)旋轉(zhuǎn)(例如,圍繞z軸),因?yàn)榫劢裹c(diǎn)剛好朝向交叉口的右側(cè)。因此,從第一階段7605到第二階段7610,地圖繪制應(yīng)用已將虛擬相機(jī)7600沿路線導(dǎo)航(例如,沿x軸、y軸、或x軸和y軸兩者的組合等等)朝著交叉口自動(dòng)朝前移動(dòng),已將虛擬相機(jī)7600移動(dòng)得更高(例如,沿z軸向上),并且已將虛擬相機(jī)7600朝著交叉口的右側(cè)旋轉(zhuǎn)(例如,圍繞z軸)并同時(shí)將焦點(diǎn)維持在用戶位置前方的聚焦點(diǎn)上。在第二階段7610中,以虛擬相機(jī)7600的視角的3d地圖7650的示例性渲染圖像在3d地圖視圖7640中示出。
第三階段7615示出了在3d地圖7650中的另一不同位置和位置處的虛擬相機(jī)7600。這里,虛擬相機(jī)7600已向右移動(dòng)并處于沿路線導(dǎo)航的交叉口處。為將焦點(diǎn)維持在聚焦點(diǎn)上,虛擬相機(jī)7600還已向上移動(dòng)(例如,沿z軸向上)并在交叉口上方移動(dòng),以便在用戶正出于上文所述的相同或類似原因(例如,虛擬相機(jī)7600的聚焦點(diǎn)的視野的阻擋或遮擋)而進(jìn)行右轉(zhuǎn)的同時(shí)提供更好的聚焦點(diǎn)視圖。
在第三階段7615中,虛擬相機(jī)7600還已進(jìn)一步向下傾斜(例如,減少的俯仰)以將焦點(diǎn)維持在聚焦點(diǎn)上。第三階段7615中的自上而下視圖7630示出了虛擬相機(jī)7600已向右旋轉(zhuǎn)(例如,圍繞z軸),因?yàn)榫劢裹c(diǎn)現(xiàn)在轉(zhuǎn)為交叉口的右轉(zhuǎn)彎。如此,從第二階段7610到第三階段7615,地圖繪制應(yīng)用已將虛擬相機(jī)7600沿路線導(dǎo)航(例如,沿x軸、y軸、或x軸和y軸兩者的組合,等等)自動(dòng)朝前移動(dòng)至交叉口,已將虛擬相機(jī)7600移動(dòng)得更高(例如,沿z軸向上),并且已將虛擬相機(jī)7600朝著交叉口的右側(cè)旋轉(zhuǎn)(例如,圍繞z軸)并同時(shí)將焦點(diǎn)維持在用戶位置前方的聚焦點(diǎn)上。在第三階段7615中,以虛擬相機(jī)7600的視角的3d地圖7650的示例性渲染圖像在3d地圖視圖7645中示出。
出于說明和清楚的目的,圖76示出了3d地圖的自上而下視圖中的聚焦點(diǎn)以及3d地圖的渲染3d地圖視圖。在一些實(shí)施例中,地圖繪制應(yīng)用實(shí)際上不渲染3d地圖視圖中的聚焦點(diǎn),并且3d地圖不包含表示聚焦點(diǎn)的實(shí)際點(diǎn)。
圖77概念性地示出了一些實(shí)施例的用于在路線導(dǎo)航的轉(zhuǎn)彎期間以動(dòng)畫方式顯示地圖視圖的過程7700。在一些實(shí)施例中,在地圖繪制應(yīng)用正遍歷路線導(dǎo)航時(shí),地圖繪制應(yīng)用迭代地執(zhí)行過程7700。在地圖繪制應(yīng)用正遍歷路線導(dǎo)航時(shí),一些實(shí)施例的地圖繪制應(yīng)用以定義的時(shí)間間隔(例如,0.5秒、1秒、3秒等)來執(zhí)行過程7700。
過程7700以識(shí)別(在7710處)即將到來的交叉口開始。在一些實(shí)施例中,過程7700使用地圖數(shù)據(jù)來識(shí)別沿路線導(dǎo)航的即將到來的交叉口。
接下來,過程7700確定(在7720處)導(dǎo)航路線在即將到來的交叉口處是否具有轉(zhuǎn)彎。當(dāng)一些實(shí)施例的過程7700在交叉口附近或交叉口處識(shí)別到閾值變化或確定沿路線導(dǎo)航在交叉口處的街道名稱改變時(shí),過程7700確定導(dǎo)航路線在即將到來的交叉口處具有轉(zhuǎn)彎。附加技術(shù)和/或其他技術(shù)是可能的。
當(dāng)過程7700確定在下一個(gè)交叉口不存在轉(zhuǎn)彎時(shí),過程7700結(jié)束。否則,過程7700確定(在7730處)轉(zhuǎn)彎角度是否在閾值角度內(nèi)(例如,彎道是否偏離直線超過一定度數(shù))。閾值角度針對(duì)不同實(shí)施例不同地定義。在一些實(shí)施例中,閾值角度被定義為45度以下的值、45到90度之間的值、大于90度的值等等。
如果過程7700確定轉(zhuǎn)彎角度在閾值角度內(nèi),則過程7700結(jié)束。否則,過程7700在自上而下查看模式中顯示(在7740處)地圖視圖。在一些實(shí)施例中,自上而下模式是一查看模式,在該查看模式中,虛擬相機(jī)位于場景上方或“頂部”并且大部分或全部朝下指。在一些實(shí)施例中,自上而下查看模式被稱為硬焦點(diǎn)模式。在一些實(shí)施例中,自上而下查看模式為2d模式。在一些情況下,地圖繪制應(yīng)用已經(jīng)正在自上而下模式中顯示地圖視圖。在此類情況下,過程7700通過沿路線導(dǎo)航的轉(zhuǎn)彎在該查看模式中繼續(xù)。
接下來,過程7700確定(在7750處)轉(zhuǎn)彎是否已完成。在用戶的位置為越過交叉口一定義距離時(shí),過程7700確定轉(zhuǎn)彎已完成。在一些實(shí)施例中,在虛擬相機(jī)的位置已旋轉(zhuǎn)轉(zhuǎn)彎角度的角度量或轉(zhuǎn)彎角度內(nèi)的閾值角度范圍時(shí),過程7700確定轉(zhuǎn)彎已完成。在過程7700確定轉(zhuǎn)彎尚未完成時(shí),過程7700返回至7750以繼續(xù)檢查轉(zhuǎn)彎是否已完成。
在過程7700確定轉(zhuǎn)彎已完成時(shí),過程7700在原始查看模式中顯示(在7760處)地圖視圖。即,過程7700在地圖繪制應(yīng)用于接近轉(zhuǎn)彎之前正顯示地圖視圖的查看模式中顯示地圖視圖。然后過程7700結(jié)束。
盡管過程7700被描述為使用自上而下模式,但在一些實(shí)施例中,其他類似或相同過程使用非自上而下模式,相比在接近拐角之前其中已顯示地圖的無論何種模式,該非自上而下模式使拐角處的轉(zhuǎn)彎更容易看到。
3.平移時(shí)的虛擬相機(jī)移動(dòng)
圖78概念性地示出了在路線導(dǎo)航期間圍繞3d地圖7835的虛擬相機(jī)7800平移的實(shí)例。圖78示出了在三個(gè)不同的階段7805-7815的虛擬相機(jī)7800的圍繞3d地圖7835的區(qū)域的移動(dòng)。一些實(shí)施例的地圖繪制應(yīng)用通過參考圖79來執(zhí)行下文所述的過程7900以平移虛擬相機(jī)7800。如該圖所示,3d地圖7835的區(qū)域包括道路以及沿道路側(cè)邊的若干建筑物。
第一階段7805示出了在3d地圖7835中的特位置置和位置處的虛擬相機(jī)7800的自上而下視圖。在一些實(shí)施例中,虛擬相機(jī)7800在3d地圖7835中正聚焦的點(diǎn)(即,從虛擬相機(jī)前方投射出的線與道路相交的點(diǎn))被稱為聚焦點(diǎn)。在一些實(shí)施例中,地圖繪制應(yīng)用將沿路線的在用戶位置(在該實(shí)例中由在頂部具有三角形的圓圈表示)前方定義距離(例如,5英尺、10英尺、25英尺、50英尺等)處的點(diǎn)用作虛擬相機(jī)7800的聚焦點(diǎn)。一些實(shí)施例的地圖繪制應(yīng)用基于用戶的行進(jìn)速度使用沿路線的在用戶位置前方的不同距離(例如,在用戶以較快的速度行進(jìn)時(shí),使用更長的距離,以及在用戶以較慢的速度行進(jìn)時(shí),使用更短的距離)。
在第一階段7805中,虛擬相機(jī)7800的聚焦點(diǎn)為沿道路的在用戶位置前方一定義距離處的點(diǎn),如由3d地圖7835中的圓圈所指示。在第一階段7805中,以虛擬相機(jī)7800的視角的3d地圖7835的示例性渲染圖像在3d地圖視圖7820中示出。
第二階段7810示出了在3d地圖7835中的不同位置和位置處的虛擬相機(jī)7800的自上而下視圖。如圖所示,虛擬相機(jī)7800已朝右旋轉(zhuǎn)(例如,圍繞z軸)。在該實(shí)例中,一些實(shí)施例的地圖繪制應(yīng)用響應(yīng)于通過觸摸屏接收的手勢輸入(例如,向左劃動(dòng)手勢)而自動(dòng)將虛擬相機(jī)7800朝右旋轉(zhuǎn)。在該階段7810中,以虛擬相機(jī)7800的視角的3d地圖7835的示例性渲染圖像在3d地圖視圖7825中示出。
第三階段7815示出了在3d地圖7835的另一不同位置和位置處的虛擬相機(jī)7800的自上而下視圖。對(duì)于該實(shí)例而言,地圖繪制應(yīng)用已在一定義時(shí)間量(例如,0.5秒、1秒、2秒、3秒等)之后自動(dòng)將虛擬相機(jī)7800朝左旋轉(zhuǎn)回來。在一些實(shí)施例中,地圖繪制應(yīng)用在已行進(jìn)一定義距離量(例如,10碼、25碼、半英里等)之后將虛擬相機(jī)7800旋轉(zhuǎn)回來。在第三階段7815中,以虛擬相機(jī)7800的視角的3d地圖7835的示例性渲染圖像在3d地圖視圖7830中示出。
圖79概念性地示出了一些實(shí)施例的用于基于手勢輸入平移至地圖視圖側(cè)的過程7900。在一些實(shí)施例中,當(dāng)?shù)貓D繪制應(yīng)用處于路線導(dǎo)航模式中并且地圖繪制應(yīng)用通過地圖繪制應(yīng)用正于其上執(zhí)行的設(shè)備的觸摸屏接收到手勢時(shí),地圖繪制應(yīng)用執(zhí)行過程7900。
過程7900以接收(在7910處)用于平移至所述側(cè)的手勢開始。在一些實(shí)施例中,用于平移至所述側(cè)的手勢包括通過觸摸屏接收的觸摸手勢(例如,用手指將觸摸屏劃動(dòng)至一側(cè))。另選地或結(jié)合地,在一些實(shí)施例中,用于平移至所述側(cè)的手勢包括多點(diǎn)觸摸手勢(例如,用多個(gè)手指將觸摸屏劃動(dòng)至一側(cè))。
接下來,過程7900識(shí)別(在7920處)平移手勢的平移分量。一些實(shí)施例的過程7900將平移手勢的水平分量識(shí)別為平移分量。在其他實(shí)施例中,過程7900識(shí)別從手勢的初始觸摸處的位置(例如,手指觸摸屏幕的位置)到手勢結(jié)束處的位置(例如,手指不再觸摸觸摸屏的位置)定義的矢量。
在一些實(shí)施例中,過程7900限制平移手勢的平移分量。例如,如果過程7900確定(在7930處)平移分量超過閾值量(例如,平移分量的大小量超過閾值量),則過程7900將平移分量限制(在7940處)(例如,將平移分量的大小降低)至定義限制內(nèi)。
基于平移分量,過程7900然后平移(在7950處)正用于對(duì)沿路線導(dǎo)航的路線的3d地圖視圖進(jìn)行渲染的虛擬相機(jī)。一些實(shí)施例的過程7900以與上文參考圖78所述的平移虛擬相機(jī)類似的方式平移虛擬相機(jī)。即,過程7900圍繞z軸旋轉(zhuǎn)虛擬相機(jī)以平移虛擬相機(jī)。
接下來,過程7900確定(在7960處)是否已經(jīng)過一定義時(shí)間量(例如,0.5秒、1秒、2秒、5秒等)。在過程7900確定尚未經(jīng)過該定義時(shí)間量時(shí),過程7900返回至7960以繼續(xù)檢查將要經(jīng)過的時(shí)間量。在過程7900確定已經(jīng)過該定義時(shí)間量時(shí),過程7900前進(jìn)至7970。
最后,過程7900將虛擬相機(jī)平移(在7970處)回其原始位置。在一些實(shí)施例中,過程7900以與上文參考圖78所述的平移虛擬相機(jī)類似的方式平移虛擬相機(jī)。換句話說,過程7900圍繞z軸旋轉(zhuǎn)虛擬相機(jī)以平移虛擬相機(jī)。
4.視角調(diào)節(jié)期間的虛擬相機(jī)移動(dòng)
除了(或者代替)使導(dǎo)航應(yīng)用控制相機(jī)(例如,當(dāng)繞拐角行走時(shí)從3d轉(zhuǎn)向2d),一些實(shí)施例還允許用戶調(diào)節(jié)相機(jī)的水平高度。一些實(shí)施例允許用戶使用兩個(gè)手指做出命令手勢來調(diào)節(jié)相機(jī)的距離(高度)和角度。一些實(shí)施例甚至允許多種類型的手勢來控制相機(jī)。
圖80概念性地示出了由一些實(shí)施例的地圖繪制應(yīng)用提供的視角調(diào)節(jié)特征。具體地,圖80示出了在三個(gè)不同的階段8005-8015的虛擬相機(jī)8000,所述三個(gè)不同的階段示出了響應(yīng)于視角調(diào)節(jié)而進(jìn)行的對(duì)虛擬相機(jī)8000的位置的調(diào)節(jié)。如圖所示,圖80示出了包括四個(gè)對(duì)象的3d地圖8035中的位置,所述四個(gè)對(duì)象為兩個(gè)建筑物和兩條相交道路。
第一階段8005示出了第一視角位置處的虛擬相機(jī)8000,該虛擬相機(jī)以相對(duì)于水平線的第一角度(例如,45度)向下指向3d地圖8035。在該位置上,相機(jī)8000指向一位置,該位置可為設(shè)備的靜止位置或正探索的位置的靜止位置,或者可為在將地圖用于導(dǎo)航的情況下在設(shè)備的移動(dòng)位置前方的移動(dòng)位置。在一些實(shí)施例中,相機(jī)8000的默認(rèn)位置將處于相對(duì)于當(dāng)前位置的特定取向,但在用戶旋轉(zhuǎn)地圖時(shí),該取向可修改?;谔摂M相機(jī)8000的位置來渲染3d地圖視圖會(huì)得到3d地圖視圖8025。
第二階段8010示出了在不同的第二視角位置處的虛擬相機(jī)8000,該虛擬相機(jī)以相對(duì)于水平線的更小的第二角度(例如,30度)以更低的視角指向3d地圖8035。階段8010還示出了用戶已通過使兩個(gè)手指觸摸屏幕并在向上的方向上拖動(dòng)兩個(gè)手指(例如,劃動(dòng)手勢)來提供輸入以調(diào)節(jié)3d地圖8035的視圖的視角。場景平鋪通過虛擬相機(jī)8000降低和減小相對(duì)于水平線的查看角度來實(shí)現(xiàn)。使用以該角度位置的虛擬相機(jī)8000渲染3d地圖視圖會(huì)得到3d地圖視圖8030,其中建筑物和道路比它們在第一地圖視圖8025中的圖示更高。如由虛擬相機(jī)8000的虛線型式所指示,虛擬相機(jī)8000在進(jìn)一步向上傾斜(例如,俯仰)的同時(shí)沿弧線8050進(jìn)一步向下移動(dòng)。
第三階段8015示出了在不同的第三視角位置處的虛擬相機(jī)8000,該虛擬相機(jī)以相對(duì)于水平線的更大的第三角度(例如,80°)以更高的視角指向3d地圖8035上的位置(例如,虛擬相機(jī)8000的聚焦點(diǎn))。階段8015還示出了用戶已通過使兩個(gè)手指觸摸屏幕并在向下的方向上拖動(dòng)兩個(gè)手指(例如,劃動(dòng)手勢)來提供輸入以調(diào)節(jié)3d地圖8035的視圖的視角。場景下降通過虛擬相機(jī)8000升高和增加其相對(duì)于水平線的角度來實(shí)現(xiàn)。如圖所示,在該階段8015處,在一些實(shí)施例中,當(dāng)虛擬相機(jī)8000位置在自上而下或近乎自上而下的位置中時(shí),地圖繪制應(yīng)用在3d地圖8035中平鋪建筑物(例如,將多邊形的z軸分量降低至地面水平),使得使用虛擬相機(jī)8000渲染的3d地圖視圖看起來為2d。在第三階段8015中使用以該角度位置的虛擬相機(jī)8000渲染3d地圖視圖會(huì)得到3d地圖視圖8040,其中相比它們在第二地圖視圖8030中的圖示,建筑物看起來更小、更平且道路看起來更小。如由虛擬相機(jī)8000的虛線型式所示,虛擬相機(jī)8000在進(jìn)一步向下傾斜(例如,俯仰)的同時(shí)沿弧線8050進(jìn)一步向上移動(dòng)。
在一些實(shí)施例中,在地圖繪制應(yīng)用接收到用于調(diào)節(jié)用于查看3d地圖8035的視角的輸入時(shí),可使虛擬相機(jī)8000以這種方式移動(dòng)。在一些這樣的實(shí)施例中,在縮放級(jí)別達(dá)到特定縮小級(jí)別時(shí),地圖繪制應(yīng)用切換至產(chǎn)生2d地圖視圖的自上而下模式(其中渲染位置直接面朝下)。
圖80示出了沿著沿弧線的特定路徑移動(dòng)的虛擬相機(jī)。不同實(shí)施例的地圖繪制應(yīng)用在調(diào)節(jié)虛擬相機(jī)的視角時(shí)沿不同路徑移動(dòng)虛擬相機(jī)。例如,在一些實(shí)施例中,地圖繪制應(yīng)用使用與圖80所示的弧線類似的特定弧線,只不過在虛擬相機(jī)沿弧線向上移動(dòng)且移動(dòng)得更靠近(例如,放大)時(shí),該特定弧線更遠(yuǎn)并且是向上的(例如,縮小),并且在虛擬相機(jī)沿弧線向下移動(dòng)時(shí),該特定弧線是向下的。在一些實(shí)施例中,地圖繪制應(yīng)用針對(duì)虛擬相機(jī)使用一路徑,該路徑在虛擬相機(jī)沿弧線向上移動(dòng)時(shí)水平地平鋪。在其他實(shí)施例中,虛擬相機(jī)在其上移動(dòng)的其他路徑是可能的。
當(dāng)沿弧線中的一者移動(dòng)時(shí),虛擬相機(jī)旋轉(zhuǎn)以將地圖上的所需位置維持在相機(jī)的焦點(diǎn)處。在一些情況下,所需位置為設(shè)備的靜止位置或用戶正在地圖上瀏覽的靜止位置。在其他情況下,所需位置為當(dāng)用戶正與設(shè)備一起移動(dòng)時(shí)在設(shè)備的移動(dòng)位置前方的移動(dòng)位置。
圖81概念性地示出了一些實(shí)施例的用于調(diào)節(jié)虛擬相機(jī)的位置的過程8100,該虛擬相機(jī)用于響應(yīng)于視角調(diào)節(jié)而渲染地圖視圖。在一些實(shí)施例中,在地圖繪制應(yīng)用處于地圖查看模式(例如,位置瀏覽模式、導(dǎo)航模式等)中并且地圖繪制應(yīng)用通過地圖繪制應(yīng)用正于其上執(zhí)行的設(shè)備的觸摸屏接收到手勢時(shí),上文和下文參考圖1-108描述的地圖繪制應(yīng)用執(zhí)行過程8100。
過程8100以接收(在8110處)用于調(diào)節(jié)地圖視圖的視角的手勢開始。在一些實(shí)施例中,用于調(diào)節(jié)地圖視圖的視角的手勢包括通過觸摸屏接收的多點(diǎn)觸摸手勢(例如,用多個(gè)手指同時(shí)觸摸觸摸屏),諸如上文參考圖80所述的手勢。在該實(shí)例中,過程8100接收雙點(diǎn)觸摸劃動(dòng)手勢。
接下來,過程8100確定(在8120處)基于觸摸點(diǎn)的角度是否在閾值角度內(nèi)。在一些實(shí)施例中,由以下來定義角度:(1)從觸摸點(diǎn)中的一者的位置朝著另一觸摸點(diǎn)的位置的第一矢量,以及(2)從所述一個(gè)觸摸點(diǎn)的位置朝著水平方向的第二矢量。一些實(shí)施例的水平方向基于設(shè)備的取向,而其他實(shí)施例的水平方向基于設(shè)備的顯示器的取向。
當(dāng)過程8100確定角度在閾值角度內(nèi)時(shí),過程8100結(jié)束。否則,過程8100識(shí)別(在8130處)所接收手勢的平動(dòng)分量。在一些實(shí)施例中,過程8100通過識(shí)別手勢的觸摸點(diǎn)的垂直平動(dòng)的量來識(shí)別手勢的平動(dòng)分量。
過程8100然后基于所識(shí)別的平動(dòng)來調(diào)節(jié)(在8140處)地圖視圖的視角。如上文參考圖3-5和圖74-80所述,在一些實(shí)施例中,使用虛擬相機(jī)來渲染地圖視圖。一些實(shí)施例的過程8100通過調(diào)節(jié)虛擬相機(jī)的位置和取向來調(diào)節(jié)地圖視圖的視角。在一些實(shí)施例中,向下的垂直平動(dòng)使虛擬相機(jī)的位置在高度上增加并且在俯仰上降低(例如,進(jìn)一步向下指),同時(shí)維持虛擬相機(jī)的聚焦點(diǎn)(例如,虛擬相機(jī)的前向矢量與地面相交的點(diǎn))。換言之,相機(jī)沿弧線移動(dòng),并且當(dāng)相機(jī)沿著弧線向上移動(dòng)時(shí)向下旋轉(zhuǎn)得更多。
不同的實(shí)施例使用地圖的不同坐標(biāo)空間。例如,一些實(shí)施例的地圖使用墨卡托單位坐標(biāo)空間。在此類實(shí)施例中,過程8100相對(duì)于地圖來調(diào)節(jié)虛擬相機(jī)的位置以調(diào)節(jié)地圖視圖的視角。又如,在一些實(shí)施例中,地圖將世界測地系統(tǒng)(例如,wgs84)用作地圖的坐標(biāo)空間。在此類實(shí)施例中,過程8100相對(duì)于虛擬相機(jī)的位置來調(diào)節(jié)地圖以調(diào)節(jié)地圖視圖的視角。
在一些實(shí)施例中,向上的垂直平動(dòng)使虛擬相機(jī)的位置在高度上降低并且在俯仰上增加(例如,進(jìn)一步向上指),同時(shí)維持虛擬相機(jī)的聚焦點(diǎn)(例如,虛擬相機(jī)的前向矢量與地面相交的點(diǎn))。即,相機(jī)沿弧線移動(dòng),并且當(dāng)相機(jī)沿著弧線向下移動(dòng)時(shí)向上旋轉(zhuǎn)得更多。在不同的實(shí)施例中,垂直平動(dòng)引起對(duì)虛擬相機(jī)的位置的不同調(diào)節(jié)。例如,向下的垂直平動(dòng)可使虛擬相機(jī)的位置在高度上降低并且在俯仰上增加,同時(shí)維持虛擬相機(jī)的聚焦點(diǎn),并且向上的垂直平動(dòng)可使虛擬相機(jī)的位置在高度上增加并且在俯仰上降低,同時(shí)維持虛擬相機(jī)的聚焦點(diǎn)。
最后,過程8100基于地圖視圖的所調(diào)節(jié)的視角來渲染(在8150處)用于顯示的地圖視圖。然后過程8100結(jié)束。
如上所述,圖81所示的過程示出了基于手勢輸入來調(diào)節(jié)地圖視圖的視角。一些實(shí)施例的過程限制虛擬相機(jī)的移動(dòng)的范圍。在手勢輸入使虛擬相機(jī)的位置超出一定義范圍時(shí),一些實(shí)施例的過程將虛擬相機(jī)的位置修改為在該定義范圍內(nèi)。在一些此類實(shí)施例中,即使在手勢輸入(例如,用于觸摸點(diǎn)的手指仍在觸摸觸摸屏)期間虛擬相機(jī)的位置超出該定義范圍,過程仍渲染虛擬相機(jī)的位置的地圖視圖。在手勢輸入完成(例如,用于觸摸點(diǎn)的手指不再觸摸觸摸屏)時(shí),過程渲染被修改為在該定義范圍內(nèi)的虛擬相機(jī)位置的地圖視圖。在一些實(shí)施例中,在手勢輸入完成時(shí),過程顯示一動(dòng)畫,該動(dòng)畫從超出該定義范圍的虛擬相機(jī)位置的地圖視圖“跳轉(zhuǎn)”至被修改為在該定義范圍內(nèi)的虛擬相機(jī)位置的地圖視圖。在一些實(shí)施例中,此類動(dòng)畫以及所述限制特征可被稱為偏移橡皮筋特征或效果。
如圖80所示,不同的虛擬相機(jī)位置渲染地圖視圖的不同視角。具體地,圖80示出了地圖視圖從3d地圖視圖到2d地圖視圖的過渡。在過渡的不同階段中,建筑物看起來像陷入地面中。類似地,在地圖視圖從第三階段8015的2d視圖到第一階段8005的3d地圖視圖的過渡期間,建筑物將看起來像從地面升出。在一些實(shí)施例中,地圖繪制應(yīng)用對(duì)沿z軸的建筑物的頂點(diǎn)進(jìn)行縮放以便當(dāng)?shù)貓D視圖在類2d地圖視圖與3d地圖視圖的不同視角之間過渡時(shí)使建筑物看起來像上升和下降。以下為被一些實(shí)施例的地圖繪制應(yīng)用用于對(duì)沿z軸的頂點(diǎn)進(jìn)行縮放的方程式的實(shí)例:
new_scaled_vertex.z=scaled_vertex.z*u_scale
其中scaled_vertex.z是頂點(diǎn)的z分量,u_scale是確定要縮放的量的縮放系數(shù),并且new_scaled_vertex.z是頂點(diǎn)的z分量的新縮放值。此外,在放大/縮小3d地圖或者圍繞3d地圖移動(dòng)時(shí),一些實(shí)施例內(nèi)插用于融入和融出建筑物的α值以及內(nèi)插用于調(diào)節(jié)建筑物的高度的縮放值。
如上所述,圖80示出了若干示例性視角調(diào)節(jié)操作以及虛擬相機(jī)在3d地圖中的對(duì)應(yīng)移動(dòng),所述對(duì)應(yīng)移動(dòng)用于渲染3d地圖的3d地圖視圖。本領(lǐng)域的普通技術(shù)人員將理解,任何數(shù)量的不同視角調(diào)節(jié)是可能的。此外,一些實(shí)施例的地圖繪制應(yīng)用響應(yīng)于附加和/或不同類型的輸入而執(zhí)行視角調(diào)節(jié)操作。例如,在一些實(shí)施例中,向下拖動(dòng)兩個(gè)手指可降低虛擬相機(jī)的視角位置,并且向上拖動(dòng)兩個(gè)手指可增高虛擬相機(jī)的視角位置。
雖然圖80示出了虛擬相機(jī)沿弧線移動(dòng)以便改變虛擬相機(jī)的視角位置,但一些實(shí)施例的地圖繪制應(yīng)用以不同的縮放級(jí)別(例如,與3d地圖的距離)沿不同的弧線移動(dòng)虛擬相機(jī)。圖82概念性地示出了可以三個(gè)不同的縮放級(jí)別沿三條不同的弧線8215-8225移動(dòng)的虛擬相機(jī)8210。如圖所示,圖82示出了3d地圖8205中的位置,該3d地圖包括兩個(gè)建筑物和形成丁字路口的兩條道路。
在縮放級(jí)別18(該實(shí)例中的最低縮放級(jí)別)下,虛擬相機(jī)8210可針對(duì)指向3d地圖8205的虛擬相機(jī)8210的不同視角位置而沿弧線8215移動(dòng)。換句話說,該縮放級(jí)別下的一些實(shí)施例的地圖繪制應(yīng)用允許用戶將用于查看3d地圖8205的視角調(diào)節(jié)到虛擬相機(jī)8210可沿弧線8215移動(dòng)的范圍(例如,20度的角度范圍)內(nèi)。
在虛擬相機(jī)8210從縮放級(jí)別19過渡(例如,縮小)時(shí),地圖繪制應(yīng)用將虛擬相機(jī)8200的視角位置的范圍限制為沿弧線8215的范圍。在一些實(shí)施例中,地圖繪制應(yīng)用將虛擬相機(jī)8210位置在沿弧線8215的位置上,該位置對(duì)應(yīng)于虛擬相機(jī)8210在過渡至縮放級(jí)別18之前在縮放級(jí)別19下沿弧線8220所在的位置。如果當(dāng)從縮放級(jí)別19過渡至縮放級(jí)別18時(shí),在縮放級(jí)別19下虛擬相機(jī)8210的位置超出弧線8215的范圍(例如,沿弧線8220的更低視角端的位置),則在一些實(shí)施例中,地圖繪制應(yīng)用將虛擬相機(jī)8210位置在盡可能近的位置處。在其他實(shí)施例中,地圖繪制應(yīng)用將虛擬相機(jī)8210逐漸朝弧線8215上最近的對(duì)應(yīng)位置移動(dòng),同時(shí)當(dāng)從縮放級(jí)別19過渡至縮放級(jí)別18時(shí)處于縮放級(jí)別18與19之間的過渡區(qū)域中,以提供虛擬相機(jī)8210從縮放級(jí)別19到縮放級(jí)別18的移動(dòng)的平滑過渡。
在下一個(gè)縮放級(jí)別19下,虛擬相機(jī)8210可針對(duì)指向3d地圖8205的虛擬相機(jī)8210的不同視角位置而沿弧線8220移動(dòng)。如圖所示,在一些實(shí)施例中,該縮放級(jí)別下的地圖繪制應(yīng)用允許用戶將用于查看3d地圖8205的視角調(diào)節(jié)到虛擬相機(jī)8210可沿弧線8220移動(dòng)的范圍(例如,45度的角度范圍)內(nèi)。因此,較之于縮放級(jí)別18,在縮放級(jí)別19下,地圖繪制應(yīng)用允許虛擬相機(jī)8210沿更大的范圍移動(dòng)。
在虛擬相機(jī)8210從縮放級(jí)別18或縮放級(jí)別20過渡(例如,放大或縮小)時(shí),地圖繪制應(yīng)用將虛擬相機(jī)8200的視角位置的范圍限制為沿弧線8220的范圍。一些實(shí)施例的地圖繪制應(yīng)用將虛擬相機(jī)8210位置在沿弧線8220的位置上,該位置對(duì)應(yīng)于虛擬相機(jī)8210在過渡至縮放級(jí)別19之前分別在縮放級(jí)別18或20下沿弧線8215或8225所在的位置。如果當(dāng)從縮放級(jí)別20過渡至縮放級(jí)別19時(shí),在縮放級(jí)別20下虛擬相機(jī)8210的位置超出弧線8220的范圍(例如,沿弧線8225的更低視角端的位置),則在一些實(shí)施例中,地圖繪制應(yīng)用將虛擬相機(jī)位置在盡可能近的位置處。其他實(shí)施例的地圖繪制應(yīng)用將虛擬相機(jī)8210逐漸朝弧線8220上最近的對(duì)應(yīng)位置移動(dòng),同時(shí)當(dāng)從縮放級(jí)別20過渡至縮放級(jí)別19時(shí)處于縮放級(jí)別19與20之間的過渡區(qū)域中,以提供虛擬相機(jī)8210從縮放級(jí)別20到縮放級(jí)別19的移動(dòng)的平滑過渡。
在縮放級(jí)別20(該實(shí)例中的最高縮放級(jí)別)下,虛擬相機(jī)8210可針對(duì)指向3d地圖8205的虛擬相機(jī)8210的不同視角位置而沿弧線8225移動(dòng)。即,在一些實(shí)施例中,該縮放級(jí)別下的地圖繪制應(yīng)用允許用戶將用于查看3d地圖8205的視角調(diào)節(jié)到虛擬相機(jī)8210可沿弧線8225移動(dòng)的范圍(例如,85度的角度范圍)內(nèi)。因此,相比縮放級(jí)別18和19,在縮放級(jí)別20下,地圖繪制應(yīng)用允許虛擬相機(jī)8210沿更大的范圍移動(dòng)。當(dāng)虛擬相機(jī)8210從縮放級(jí)別19過渡(例如,放大)時(shí),地圖繪制應(yīng)用將虛擬相機(jī)8200的視角位置的范圍限制為沿弧線8225的范圍。
上述圖82示出了可以不同縮放級(jí)別沿不同弧線移動(dòng)的虛擬相機(jī)的實(shí)例,所述不同縮放級(jí)別允許虛擬相機(jī)的視角位置的不同范圍。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,不同實(shí)施例的地圖繪制應(yīng)用針對(duì)不同縮放級(jí)別下的虛擬相機(jī)將任意數(shù)量的不同弧線與視角位置的數(shù)值范圍一起使用。
圖83概念性地示出了一些實(shí)施例的用于確定虛擬相機(jī)可沿其移動(dòng)的弧線的過程8300。在一些實(shí)施例中,當(dāng)在3d查看模式(例如,3d導(dǎo)航模式、3d地圖瀏覽模式等)中調(diào)節(jié)縮放級(jí)別(例如,放大或縮小)時(shí),在本申請中上文和下文參考圖1-108描述的地圖繪制應(yīng)用執(zhí)行過程8300。
過程8300以確定(在8310處)是否將當(dāng)前縮放級(jí)別調(diào)節(jié)為新縮放級(jí)別開始。在一些實(shí)施例中,在過程8300接收到用于調(diào)節(jié)3d地圖的視圖的縮放級(jí)別的輸入(例如,下文參考圖85所述的輸入類型)時(shí),過程8300確定將當(dāng)前縮放級(jí)別調(diào)節(jié)為新縮放級(jí)別。在過程8300確定不調(diào)節(jié)當(dāng)前縮放級(jí)別時(shí),過程8300返回至8310以繼續(xù)檢查針對(duì)新縮放級(jí)別的調(diào)節(jié)。
當(dāng)過程8300確定接收到針對(duì)新縮放級(jí)別的調(diào)節(jié)時(shí),過程8300識(shí)別(在8320處)新縮放級(jí)別的弧線。如上所述,一些實(shí)施例的地圖繪制應(yīng)用在不同縮放級(jí)別下使用不同弧線。如此,過程8300識(shí)別針對(duì)新縮放級(jí)別定義的弧線。
接下來,過程8300確定(在8330處)新縮放級(jí)別的弧線是否具有與虛擬相機(jī)沿前一個(gè)縮放級(jí)別的前一條弧線的位置相對(duì)應(yīng)的位置。當(dāng)虛擬相機(jī)沿前一條弧線的位置在新縮放級(jí)別的弧線的角度范圍內(nèi)時(shí),一些實(shí)施例的過程8300確定新縮放級(jí)別的弧線具有對(duì)應(yīng)位置。參考圖82作為實(shí)例,如果縮放級(jí)別是從縮放級(jí)別19過渡至縮放級(jí)別18,則當(dāng)虛擬相機(jī)沿縮放級(jí)別19的弧線8220的位置在弧線8220的大約上三分之一內(nèi)時(shí),過程8300確定縮放級(jí)別18的弧線8215具有對(duì)應(yīng)位置。
在確定新縮放級(jí)別的弧線具有對(duì)應(yīng)位置時(shí),過程8300將沿新縮放級(jí)別的弧線的對(duì)應(yīng)位置識(shí)別(在8340處)為虛擬相機(jī)的新位置。否則,過程8300將沿新縮放級(jí)別的弧線的、最靠近虛擬相機(jī)沿前一個(gè)縮放級(jí)別的前一條弧線的位置的位置識(shí)別(在8350處)為虛擬相機(jī)的新位置。參考圖82為實(shí)例,如果虛擬相機(jī)的位置在弧線8220的更低視角端,如圖82所示,則在從縮放級(jí)別19過渡至縮放級(jí)別18時(shí),過程8300將圖82所示的虛擬相機(jī)沿縮放級(jí)別18的弧線8215的位置識(shí)別為虛擬相機(jī)的新位置。
最后,過程8300將虛擬相機(jī)位置(在8360處)在沿新縮放級(jí)別的弧線的所識(shí)別的新位置上。然后過程8300結(jié)束。
雖然圖82和圖83描述了可以不同縮放級(jí)別沿不同弧線移動(dòng)的虛擬相機(jī),但一些實(shí)施例針對(duì)一系列不同縮放級(jí)別使用特定弧線(例如,針對(duì)縮放級(jí)別10-13的弧線、針對(duì)縮放級(jí)別14-16的弧線,等等)。在一些實(shí)施例中,定義縮放級(jí)別的不同范圍以包括相同或不同數(shù)量的縮放級(jí)別。
如上所討論,在一些實(shí)施例中,地圖繪制應(yīng)用使用一特定弧線,在將虛擬相機(jī)位置在特定縮放級(jí)別下時(shí),虛擬相機(jī)可沿該特定弧線在沿弧線的特定定義角度范圍內(nèi)移動(dòng)。一些實(shí)施例的地圖繪制應(yīng)用使用以下技術(shù)來將虛擬相機(jī)沿弧線移動(dòng)。
圖84概念性地示出了由一些實(shí)施例的地圖繪制應(yīng)用提供的特征,該特征用于維持虛擬相機(jī)在沿弧線的定義范圍內(nèi)的位置。具體地,圖84示出了在三個(gè)不同的階段8405-8415的虛擬相機(jī)8400,所述三個(gè)不同的階段示出了虛擬相機(jī)8400的維持在弧線8450的定義范圍內(nèi)的位置。如圖84所示,3d地圖8435中的位置包括兩個(gè)建筑物和形成丁字路口的兩條道路。
第一階段8405示出了在沿弧線8450的特定位置處的虛擬相機(jī)8400。如圖所示,弧線8450表示一定義范圍(例如,角度范圍),虛擬相機(jī)8400可在該定義范圍內(nèi)移動(dòng)。第一階段8405還示出了沿弧線8450的三個(gè)位置8455-8465(例如,視角查看角度)。在該實(shí)例中,地圖繪制應(yīng)用以類似于上文參考圖80所述的方式沿弧線8450在弧線8450的高視角端(例如,當(dāng)虛擬相機(jī)8400最大程度地向下傾斜時(shí)沿弧線8450的位置)與位置8455之間移動(dòng)虛擬相機(jī)8400。在第一階段8405中,基于虛擬相機(jī)8400的位置來渲染3d地圖視圖會(huì)得到3d地圖視圖8425。
當(dāng)虛擬相機(jī)8400通過位置8455同時(shí)朝著弧線8450的低視角端移動(dòng)時(shí),地圖繪制應(yīng)用降低虛擬相機(jī)8400朝著弧線8450的低視角端移動(dòng)的速度(例如,減速),而不管用戶提供的輸入。在一些實(shí)施例中,地圖繪制應(yīng)用以恒定速率降低虛擬相機(jī)8400的速度,而在一些實(shí)施例中,地圖繪制應(yīng)用以指數(shù)級(jí)速率降低虛擬相機(jī)8400的速度。在一些實(shí)施例中,使用降低虛擬相機(jī)8400的速度的附加方法和/或不同方法。
第二階段8410示出了虛擬相機(jī)8400已移動(dòng)至沿弧線8450的在弧線8450的低視角端處或附近的位置。如圖所示,用戶正通過使兩個(gè)手指觸摸屏幕并在向上的方向上拖動(dòng)兩個(gè)手指(例如,劃動(dòng)手勢)來提供輸入以調(diào)節(jié)3d地圖8435的視圖的視角。響應(yīng)于輸入,地圖繪制應(yīng)用將虛擬相機(jī)8400朝著弧線8450的低視角端移動(dòng)同時(shí)向上傾斜虛擬相機(jī)8450。在虛擬相機(jī)到達(dá)沿弧線8450的位置8465時(shí),地圖繪制應(yīng)用防止虛擬相機(jī)8400移動(dòng)至低于位置8465,而同時(shí)用戶繼續(xù)提供用于降低3d地圖8435的視圖的視角的輸入(例如,用戶繼續(xù)在觸摸屏上向上拖動(dòng)兩個(gè)手指)。
在一些實(shí)施例中,在用戶停止提供用于降低3d地圖8435的視圖的視角的輸入(例如,用戶將兩個(gè)手指抬離觸摸屏)時(shí),地圖繪制應(yīng)用使虛擬相機(jī)8400的位置從位置8465向上“回彈”或“跳轉(zhuǎn)”至沿弧線8450的位置8460。由于地圖繪制應(yīng)用正在基于虛擬相機(jī)8400在回彈或跳轉(zhuǎn)運(yùn)動(dòng)期間的視圖而生成或渲染3d地圖8435的3d地圖視圖,因此所生成的3d地圖視圖提供顯示快速向下回彈或跳轉(zhuǎn)的3d地圖視圖的回彈動(dòng)畫,以便向用戶指示該地圖視圖的視角不能進(jìn)一步降低。使用以該角度位置的虛擬相機(jī)8400渲染3d地圖視圖會(huì)得到3d地圖視圖8430,其中較之于地圖視圖8425,建筑物和道路更高。
第三階段8415示出了在地圖繪制應(yīng)用響應(yīng)于用戶終止提供輸入而將虛擬相機(jī)8400的位置回彈或跳轉(zhuǎn)至位置8460之后的虛擬相機(jī)8400。不同的實(shí)施例使用不同的技術(shù)來實(shí)現(xiàn)虛擬相機(jī)8400的回彈或跳轉(zhuǎn)。例如,一些實(shí)施例的地圖繪制應(yīng)用針對(duì)一定義距離或者在虛擬相機(jī)8400達(dá)到一定義速度之前,開始快速地加速沿弧線8450的虛擬相機(jī)8400。然后,地圖繪制應(yīng)用針對(duì)沿弧線8450的至位置8460的剩余距離使虛擬相機(jī)8400減速。在一些實(shí)施例中,使用了其他方式來實(shí)現(xiàn)回彈或跳轉(zhuǎn)效果。在第三階段8415中,使用沿弧線8450位置在位置8460處的虛擬相機(jī)8400渲染3d地圖視圖會(huì)得到3d地圖視圖8440,其中相比地圖視圖8430,建筑物看起來更小點(diǎn)、更平點(diǎn)且道路看起來更小點(diǎn)。
如上所述,圖84示出了用于防止虛擬相機(jī)移動(dòng)超過弧線的低視角端的技術(shù)。另選地或者結(jié)合防止虛擬相機(jī)移動(dòng)超過弧線的低視角端,一些實(shí)施例的地圖繪制應(yīng)用使用類似的技術(shù)來防止虛擬相機(jī)移動(dòng)超過弧線的高視角端。此外,圖84示出了以下位置的實(shí)例:沿弧線的于其處使虛擬相機(jī)減慢的位置、沿弧線的用于防止虛擬相機(jī)移動(dòng)越過的位置以及沿弧線的虛擬相機(jī)所跳轉(zhuǎn)或回彈回到的位置。不同實(shí)施例以任意數(shù)量的不同方式來定義位置。例如,在一些實(shí)施例中,沿弧線的于其處使虛擬相機(jī)減慢的位置與沿弧線的虛擬相機(jī)所跳轉(zhuǎn)或回彈回到的位置相同或者在其附近。
5.縮放期間的虛擬相機(jī)移動(dòng)
另選地或者結(jié)合視角調(diào)節(jié)特征,一些實(shí)施例的地圖繪制應(yīng)用允許用戶放大和縮小3d地圖的視圖(例如,通過用兩個(gè)手指提供手勢輸入)。圖85示出了由一些實(shí)施例的地圖繪制應(yīng)用提供的縮放調(diào)節(jié)特征。具體地,圖85示出了在三個(gè)不同的階段8501-8503的虛擬相機(jī)8512,所述三個(gè)不同的階段示出了虛擬相機(jī)8512響應(yīng)于縮放調(diào)節(jié)的移動(dòng)。如圖所示,圖85示出了3d地圖8510中的位置包括兩個(gè)建筑物和形成丁字路口的兩條道路。
在第一階段8501中,用在特定位置處的指向3d地圖8510的虛擬相機(jī)8512來顯示3d地圖8510。在該位置上,相機(jī)8512指向一位置,該位置可為設(shè)備的靜止位置或正探索的位置的靜止位置,或者可為在將地圖用于導(dǎo)航的情況下在設(shè)備的移動(dòng)位置前方的移動(dòng)位置?;谔摂M相機(jī)8512的位置來渲染3d地圖視圖會(huì)得到3d地圖視圖8514。
第二階段8502示出了在不同的縮放級(jí)別位置處的指向3d地圖8510的虛擬相機(jī)8512。階段8502示出了用戶已通過使兩個(gè)手指彼此靠近地觸摸設(shè)備的屏幕并在手指正觸摸屏幕的同時(shí)將手指移動(dòng)分開(例如,展開手勢)來提供輸入以增加3d地圖8510的視圖的縮放級(jí)別。
放大調(diào)節(jié)是通過沿線8550移動(dòng)虛擬相機(jī)8512更靠近3d地圖8510來實(shí)現(xiàn)。在一些實(shí)施例中,地圖繪制應(yīng)用用來移動(dòng)虛擬相機(jī)8512所沿的線8550是由虛擬相機(jī)8512的前部和虛擬相機(jī)8512的聚焦點(diǎn)形成的線。一些實(shí)施例的地圖繪制應(yīng)用基于用于放大3d地圖8510的視圖的用戶輸入來沿由虛擬相機(jī)8512的前部和3d地圖8510中的位置形成的線移動(dòng)虛擬相機(jī)8512。
在該位置處使用虛擬相機(jī)8512渲染3d地圖視圖會(huì)得到3d地圖視圖8524,其中建筑物和道路看起來比3d地圖視圖8514中所示的位置更近。如由虛擬相機(jī)8512的虛線型式所指示,虛擬相機(jī)8512沿線8550移動(dòng)得更靠近3d地圖8510。
第三階段8503示出了在不同的縮放級(jí)別位置處的指向3d地圖8510的虛擬相機(jī)8512。在該階段8503中,用戶已通過使兩個(gè)手指彼此遠(yuǎn)離地觸摸設(shè)備的屏幕并在手指正觸摸屏幕的同時(shí)將手指移動(dòng)得更靠近在一起(例如,捏合手勢)來提供輸入以降低3d地圖8510的縮放級(jí)別。
縮小調(diào)節(jié)是通過沿線8555移動(dòng)虛擬相機(jī)8512更遠(yuǎn)離3d地圖8510來實(shí)現(xiàn)。在一些實(shí)施例中,地圖繪制應(yīng)用用來移動(dòng)虛擬相機(jī)8512所沿的線8555是由虛擬相機(jī)8512的前部和虛擬相機(jī)8512的聚焦點(diǎn)形成的線。一些實(shí)施例的地圖繪制應(yīng)用基于用于放大3d地圖8510的視圖的用戶輸入來沿由虛擬相機(jī)8512的前部和3d地圖8510中的位置形成的線移動(dòng)虛擬相機(jī)8512。
在該位置處使用虛擬相機(jī)8512渲染3d地圖視圖會(huì)得到3d地圖視圖8534,其中建筑物和道路看起來比3d地圖視圖8524中所示的位置更遠(yuǎn)。如由虛擬相機(jī)8512的虛線型式所示,虛擬相機(jī)8512沿線8555移動(dòng)得更遠(yuǎn)離3d地圖8510。
如上所述,圖85示出了若干示例性縮放調(diào)節(jié)操作以及虛擬相機(jī)在3d地圖中的對(duì)應(yīng)移動(dòng),所述對(duì)應(yīng)移動(dòng)用于渲染3d地圖的3d地圖視圖。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,任何數(shù)量的不同縮放調(diào)節(jié)是可能的。此外,一些實(shí)施例的地圖繪制應(yīng)用響應(yīng)于附加類型和/或不同類型的輸入(例如,觸擊屏幕、雙觸擊屏幕等)而執(zhí)行縮放調(diào)節(jié)操作。
圖86概念性地示出了一些實(shí)施例的用于調(diào)節(jié)虛擬相機(jī)的位置的過程8600,該虛擬相機(jī)用于響應(yīng)于縮放級(jí)別調(diào)節(jié)而渲染地圖視圖。在一些實(shí)施例中,在地圖繪制應(yīng)用處于地圖查看模式(例如,位置瀏覽模式、導(dǎo)航模式等)中并且地圖繪制應(yīng)用通過地圖繪制應(yīng)用正于其上執(zhí)行的設(shè)備的觸摸屏接收到手勢時(shí),上文和下文參考圖1-108描述的地圖繪制應(yīng)用執(zhí)行過程8600。
過程8600以接收(在8610處)用于調(diào)節(jié)地圖視圖的縮放級(jí)別的手勢開始。在一些實(shí)施例中,用于調(diào)節(jié)地圖視圖的縮放級(jí)別的手勢包括通過觸摸屏接收的多點(diǎn)觸摸手勢(例如,用多個(gè)手指同時(shí)觸摸觸摸屏),諸如上文參考圖85所述的手勢。在該實(shí)例中,過程8600接收雙點(diǎn)觸摸捏合或展開手勢。
接下來,過程8600基于所接收的手勢來確定(在8620處)縮放位置。在一些實(shí)施例中,縮放位置是地圖中朝著其調(diào)節(jié)縮放級(jí)別(例如,針對(duì)放大調(diào)節(jié))或者遠(yuǎn)離其調(diào)節(jié)縮放級(jí)別(例如,針對(duì)縮小調(diào)節(jié))的位置。在一些實(shí)施例中,過程8600通過以下操作來確定縮放位置:(1)識(shí)別手勢的初始兩個(gè)觸摸點(diǎn)的位置,以及(2)將沿著由兩個(gè)觸摸點(diǎn)的位置形成的線的中點(diǎn)識(shí)別為縮放位置。一些實(shí)施例的過程8600使用附加技術(shù)和/或不同的技術(shù)來確定縮放位置。例如,在一些實(shí)施例中,過程8600將地圖視圖的中心用作縮放位置。
然后過程8600基于所接收的手勢來確定(在8630處)縮放量。一些實(shí)施例的過程8600基于以下線之間的長度差來確定縮放量:(1)由手勢的初始兩個(gè)觸摸點(diǎn)的位置(例如,用戶用兩個(gè)手指觸摸觸摸屏的位置)形成的第一線以及(2)由手勢的結(jié)束兩個(gè)觸摸點(diǎn)的位置(例如,用戶將兩個(gè)手指抬離觸摸屏的位置)形成的第二線。在一些實(shí)施例中,在第二線的長度大于第一線的長度時(shí)過程8600確定正縮放量(例如,放大調(diào)節(jié)),而在第二線的長度小于第一線的長度時(shí)過程8600確定負(fù)縮放量(例如,縮小調(diào)節(jié))。在第二線的長度與第一線的長度之間的差相等或在閾值長度量內(nèi)時(shí),一些實(shí)施例的過程8600確定縮放量為零(例如,無縮放調(diào)節(jié))。在一些實(shí)施例中,過程8600使用附加技術(shù)和/或不同的技術(shù)來確定縮放量。
接下來,過程8600基于所識(shí)別的縮放位置和縮放量來調(diào)節(jié)(在8640處)地圖視圖的縮放級(jí)別。如上文參考圖3-5和圖74-80所述,在一些實(shí)施例中,使用虛擬相機(jī)來渲染地圖視圖。一些實(shí)施例的過程8600通過將虛擬相機(jī)的位置(1)沿由虛擬相機(jī)的前部和縮放位置形成的線并且(2)以基于縮放量的量移動(dòng)來調(diào)節(jié)地圖視圖的縮放級(jí)別。
最后,過程8600基于地圖視圖的所調(diào)節(jié)的縮放級(jí)別來渲染(在8650處)用于顯示的地圖視圖。然后過程8600結(jié)束。
6.旋轉(zhuǎn)期間的虛擬相機(jī)移動(dòng)
圖87概念性地示出了根據(jù)本發(fā)明一些實(shí)施例的3d地圖視圖的旋轉(zhuǎn)操作。具體地,圖87示出了在兩個(gè)不同的階段8705和8710的旋轉(zhuǎn)操作。在一些實(shí)施例中,地圖繪制應(yīng)用通過參考圖90來執(zhí)行下文所述的過程9000以執(zhí)行旋轉(zhuǎn)操作。
第一階段8705示出了兩條道路的對(duì)角線交叉口以及交叉口附近的三個(gè)建筑物的3d地圖視圖8715。如圖所示,三個(gè)建筑物位于3d地圖視圖8715中對(duì)角線交叉口的頂部和側(cè)部。第一階段8705還示出了用戶正執(zhí)行用于旋轉(zhuǎn)3d地圖視圖8715的手勢。如圖所示,用戶已使用兩個(gè)手指在觸摸屏上觸摸在3d地圖視圖8715的中心附近的兩個(gè)位置并且已在順時(shí)針方向上旋轉(zhuǎn)這兩個(gè)位置。
第二階段8710示出了響應(yīng)于第一階段8705中所示的旋轉(zhuǎn)手勢的虛擬相機(jī)8700圍繞3d地圖8725的對(duì)應(yīng)移動(dòng),所述對(duì)應(yīng)移動(dòng)用于渲染3d地圖視圖8715。在該實(shí)例中,在兩條道路的交叉口附近或處接收到旋轉(zhuǎn)手勢。如圖所示,地圖繪制應(yīng)用已通過圍繞位于旋轉(zhuǎn)手勢的中心處或附近的z軸旋轉(zhuǎn)虛擬相機(jī)8700,來將虛擬相機(jī)8700從3d地圖8725的左側(cè)朝著3d地圖8725的底部移動(dòng)。3d地圖視圖8720示出了在旋轉(zhuǎn)虛擬相機(jī)8700之后3d地圖8725的示例性渲染。如圖所示,3d地圖視圖現(xiàn)在被旋轉(zhuǎn)使得三個(gè)建筑物和道路響應(yīng)于在第一階段8705中所示的順時(shí)針旋轉(zhuǎn)手勢而在順時(shí)針方向上旋轉(zhuǎn)。
雖然圖87示出了在3d地圖視圖的中心附近或處執(zhí)行的旋轉(zhuǎn)手勢,但旋轉(zhuǎn)手勢可在所顯示的3d地圖視圖中任何位置處執(zhí)行。在一些實(shí)施例中,地圖繪制應(yīng)用完全基于或部分地基于旋轉(zhuǎn)手勢的位置來旋轉(zhuǎn)3d地圖。例如,如果在3d地圖視圖的右上角執(zhí)行旋轉(zhuǎn)手勢,則一些實(shí)施例的地圖繪制應(yīng)用圍繞位于3d地圖中對(duì)應(yīng)于旋轉(zhuǎn)手勢位置的位置處或附近的z軸旋轉(zhuǎn)虛擬相機(jī)。
在一些實(shí)施例中,地圖繪制應(yīng)用提供位置指示符特征,該位置指示符特征在激活時(shí)將3d地圖視圖重新位置在用戶位置(例如,設(shè)備在3d地圖中的位置)處。當(dāng)繼位置指示符特征的激活之后執(zhí)行3d地圖視圖的旋轉(zhuǎn)時(shí),一些此類實(shí)施例的地圖繪制應(yīng)用以不同的方式執(zhí)行3d地圖視圖的旋轉(zhuǎn)。
圖88概念性地示出了根據(jù)本發(fā)明一些實(shí)施例的在激活此類位置指示符特征之后3d地圖視圖的旋轉(zhuǎn)操作。具體地,圖88示出了在兩個(gè)不同階段8805和8810的旋轉(zhuǎn)操作。
第一階段8805示出了兩條道路的對(duì)角線交叉口以及交叉口附近的三個(gè)建筑物的3d地圖視圖8815。如圖所示,三個(gè)建筑物位于3d地圖視圖8815中對(duì)角線交叉口的頂部和側(cè)部。第一階段8805示出了在用戶已激活位置指示符特征之后的3d地圖視圖,該位置指示符特征使地圖繪制應(yīng)用將3d地圖視圖重新位置在用戶位置上,該用戶位置在該實(shí)例中由圓圈表示。此外,第一階段8805示出了用戶正執(zhí)行用于在3d地圖視圖8815的上部旋轉(zhuǎn)3d地圖視圖8815的手勢。如圖所示,用戶已使用兩個(gè)手指在觸摸屏上觸摸在3d地圖視圖8815的上部中的兩個(gè)位置并且已在順時(shí)針方向上旋轉(zhuǎn)這兩個(gè)位置。
第二階段8810示出了響應(yīng)于第一階段8805中所示的旋轉(zhuǎn)手勢的虛擬相機(jī)8800圍繞3d地圖8825的對(duì)應(yīng)移動(dòng),所述對(duì)應(yīng)移動(dòng)用于渲染3d地圖視圖8815。在該實(shí)例中,在激活了位置指示符特征之后,在中間建筑物后方在3d地圖視圖8815的上部中接收旋轉(zhuǎn)手勢。
在一些實(shí)施例中,當(dāng)在激活了位置指示符特征之后地圖繪制應(yīng)用接收到旋轉(zhuǎn)手勢時(shí),地圖繪制應(yīng)用圍繞用戶位置旋轉(zhuǎn)3d地圖。一些實(shí)施例的地圖繪制應(yīng)用僅當(dāng)在已激活位置指示符特征之后地圖繪制應(yīng)用接收到旋轉(zhuǎn)手勢并且地圖繪制應(yīng)用尚未接收到任何干預(yù)性非旋轉(zhuǎn)手勢時(shí),才執(zhí)行圖88所示的旋轉(zhuǎn)操作。在一些實(shí)施例中,地圖繪制應(yīng)用在激活了位置指示符特征之后執(zhí)行圖88所示的旋轉(zhuǎn)操作一定義時(shí)間量然后恢復(fù)回到圖87所示的旋轉(zhuǎn)操作。
如在第二階段8810中所示,地圖繪制應(yīng)用已通過圍繞位于用戶位置處或附近的z軸旋轉(zhuǎn)虛擬相機(jī)8800來將虛擬相機(jī)8800從3d地圖8825的左側(cè)朝著3d地圖8825的底部移動(dòng),所述用戶位置由黑點(diǎn)指示且在兩條道路的交叉口處。3d地圖視圖8820示出了在旋轉(zhuǎn)虛擬相機(jī)8800之后3d地圖8825的示例性渲染。如圖所示,3d地圖視圖現(xiàn)在被旋轉(zhuǎn)使得三個(gè)建筑物和道路響應(yīng)于在第一階段8805中所示的順時(shí)針旋轉(zhuǎn)手勢而在順時(shí)針方向上圍繞用戶位置旋轉(zhuǎn)。
上述圖87和圖88示出了在于3d視角視圖中查看3d地圖的同時(shí)旋轉(zhuǎn)3d地圖。在一些實(shí)施例中,地圖繪制應(yīng)用還允許用戶在于2d視角視圖中查看3d地圖的同時(shí)旋轉(zhuǎn)3d地圖。圖89概念性地示出了根據(jù)本發(fā)明一些實(shí)施例的從3d地圖的2d視角視圖起的3d地圖視圖的旋轉(zhuǎn)操作。具體地,圖89示出了在三個(gè)不同的階段8905-8915的連同旋轉(zhuǎn)操作的慣性效果一起的旋轉(zhuǎn)操作。在一些實(shí)施例中,地圖繪制應(yīng)用通過參考圖90來執(zhí)行下文所述的過程9000以執(zhí)行旋轉(zhuǎn)操作。
第一階段8905示出了3d地圖的3d地圖視圖8920。如圖所示,3d地圖視圖8920包括在平行或垂直的方向上延伸的若干街道。第一階段8905還示出了用戶正提供用于旋轉(zhuǎn)3d地圖視圖8920的輸入。具體地,用戶正通過使兩個(gè)手指觸摸觸摸屏上的兩個(gè)位置并且如兩個(gè)箭頭所示在順時(shí)針方向上旋轉(zhuǎn)兩個(gè)手指來執(zhí)行用于旋轉(zhuǎn)3d地圖視圖8920的手勢。
第二階段8910示出了緊接用戶已完成用于旋轉(zhuǎn)3d地圖的輸入之后的3d地圖。對(duì)于該實(shí)例而言,用戶已通過將兩個(gè)手指抬離設(shè)備的觸摸屏來完成輸入。此外,第二階段8910示出了由地圖繪制應(yīng)用渲染的3d地圖的3d地圖視圖8925。如圖所示,地圖繪制應(yīng)用已在順時(shí)針方向上將3d地圖從3d地圖視圖8920旋轉(zhuǎn)至3d地圖視圖8925。第一階段8905中所示的街道已在順時(shí)針方向上旋轉(zhuǎn)了大約45度。
不同實(shí)施例的地圖繪制應(yīng)用使用不同的方法來實(shí)現(xiàn)旋轉(zhuǎn)操作的慣性效果。例如,在一些實(shí)施例中,地圖繪制應(yīng)用基于其中一個(gè)手指或兩個(gè)手指的平均值來確定在用戶將手指抬離觸摸屏的時(shí)刻或在靠近該時(shí)刻時(shí)用戶輸入的角速度。地圖繪制應(yīng)用使用該角速度來確定慣性效果的角度量并確定用于查看3d地圖的虛擬相機(jī)使角速度減速(例如,恒定、指數(shù)級(jí)、對(duì)數(shù)級(jí)等)以旋轉(zhuǎn)所確定的角度量的方式。在一些實(shí)施例中,地圖繪制應(yīng)用渲染并顯示慣性效果的動(dòng)畫(例如,3d地圖的從將3d地圖旋轉(zhuǎn)所確定的角度量的3d地圖視圖8925起的減速旋轉(zhuǎn))。一些實(shí)施例的地圖繪制應(yīng)用不實(shí)現(xiàn)慣性效果。相反,由地圖繪制應(yīng)用所操作的操作系統(tǒng)的框架來實(shí)現(xiàn)慣性效果。
第三階段8915示出了在地圖繪制應(yīng)用已渲染并顯示慣性效果的動(dòng)畫之后的3d地圖。如圖所示,顯示了由地圖繪制應(yīng)用渲染的3d地圖的3d地圖視圖8930。在第三階段8915中,在用戶完成第二階段8910中的輸入之后,地圖繪制應(yīng)用已進(jìn)一步順時(shí)針旋轉(zhuǎn)3d地圖。如圖所示,第三階段8915中的3d地圖視圖8930示出了從3d地圖視圖8925中所示的街道起進(jìn)一步順時(shí)針旋轉(zhuǎn)的街道。
圖90概念性地示出了一些實(shí)施例的用于基于手勢輸入旋轉(zhuǎn)地圖視圖的過程9000。在一些實(shí)施例中,在地圖繪制應(yīng)用處于地圖查看模式(例如,位置瀏覽模式、導(dǎo)航模式、2d查看模式、3d查看模式等)中并且地圖繪制應(yīng)用通過地圖繪制應(yīng)用正于其上執(zhí)行的設(shè)備的觸摸屏接收到手勢時(shí),地圖繪制應(yīng)用執(zhí)行過程9000。
過程9000以接收(在9010處)用于旋轉(zhuǎn)地圖視圖的手勢開始。在一些實(shí)施例中,用于旋轉(zhuǎn)地圖視圖的手勢包括通過觸摸屏接收的多點(diǎn)觸摸手勢(例如,用多個(gè)手指同時(shí)觸摸觸摸屏)。在該實(shí)例中,過程9000接收雙點(diǎn)觸摸旋轉(zhuǎn)手勢。
接下來,過程9000識(shí)別(在9020處)所接收手勢的旋轉(zhuǎn)分量。一些實(shí)施例的過程9000通過識(shí)別手勢的觸摸點(diǎn)的旋轉(zhuǎn)量來識(shí)別手勢的旋轉(zhuǎn)分量。例如,在一些此類實(shí)施例中,過程9000通過以下操作來識(shí)別手勢的觸摸點(diǎn)的旋轉(zhuǎn)量:(1)確定從一個(gè)觸摸點(diǎn)的初始位置到另一個(gè)觸摸點(diǎn)的初始位置的第一矢量,(2)確定從所述一個(gè)觸摸點(diǎn)的第二位置到所述另一個(gè)觸摸點(diǎn)的第二位置的第二矢量,以及(3)基于觸摸點(diǎn)的初始位置和觸摸點(diǎn)的第二位置來確定旋轉(zhuǎn)方向。
過程9000然后確定(在9030處)旋轉(zhuǎn)量是否在閾值量內(nèi)。在過程9000確定旋轉(zhuǎn)量不在閾值量內(nèi)時(shí),過程9000結(jié)束。否則,過程9000基于手勢確定(在9040處)旋轉(zhuǎn)軸。在一些實(shí)施例中,過程9000通過以下操作來確定旋轉(zhuǎn)軸:(1)沿從一個(gè)觸摸點(diǎn)的初始位置到另一個(gè)觸摸點(diǎn)的初始位置的矢量識(shí)別一點(diǎn),以及(2)在地圖視圖上確定與沿該矢量的該點(diǎn)對(duì)應(yīng)的點(diǎn)(例如,地圖上的與沿該矢量的該點(diǎn)重合的點(diǎn))。過程9000將地圖視圖上的所確定的點(diǎn)用作地圖視圖圍繞其旋轉(zhuǎn)的軸(例如,z軸)的位置。
接下來,過程9000隨后基于旋轉(zhuǎn)軸和旋轉(zhuǎn)量來調(diào)節(jié)(在9050處)地圖視圖。在一些實(shí)施例中,過程9000通過將地圖視圖圍繞所確定的旋轉(zhuǎn)軸在所確定的旋轉(zhuǎn)方向上旋轉(zhuǎn)所確定的旋轉(zhuǎn)量來調(diào)節(jié)地圖視圖。不同的實(shí)施例使用地圖的不同坐標(biāo)空間。例如,一些實(shí)施例的地圖使用墨卡托單位坐標(biāo)空間。在此類實(shí)施例中,過程9000相對(duì)于地圖來調(diào)節(jié)虛擬相機(jī)的位置以調(diào)節(jié)地圖視圖。又如,在一些實(shí)施例中,地圖將世界測地系統(tǒng)(例如,wgs84)用作地圖的坐標(biāo)空間。在此類實(shí)施例中,過程9000相對(duì)于虛擬相機(jī)的位置來調(diào)節(jié)地圖以調(diào)節(jié)地圖視圖。
最后,過程9000渲染(在9060處)所調(diào)節(jié)的地圖視圖以用于在設(shè)備上顯示。在一些實(shí)施例中,所渲染的地圖視圖是表示所調(diào)節(jié)的地圖視圖的圖像。然后過程9000結(jié)束。
上文所述的圖87-90示出了對(duì)3d地圖執(zhí)行的旋轉(zhuǎn)操作的各種實(shí)例。在一些實(shí)施例中,可以縮放級(jí)別的定義范圍和/或集合來旋轉(zhuǎn)3d地圖。例如,在一些實(shí)施例中,地圖繪制應(yīng)用允許3d地圖在定義數(shù)量的最高縮放級(jí)別(例如,縮放級(jí)別10-20)下旋轉(zhuǎn)并防止3d地圖在其余更低的縮放級(jí)別(例如,縮放級(jí)別1-10)下旋轉(zhuǎn)。在一些此類實(shí)施例中,當(dāng)?shù)貓D繪制應(yīng)用接收到在被定義為不允許旋轉(zhuǎn)操作的縮放級(jí)別下旋轉(zhuǎn)3d地圖的輸入時(shí),地圖繪制應(yīng)用不生成旋轉(zhuǎn)3d地圖的指令。在其他此類實(shí)施例中,當(dāng)?shù)貓D繪制應(yīng)用接收到在被定義為不允許旋轉(zhuǎn)操作的縮放級(jí)別下旋轉(zhuǎn)3d地圖的輸入時(shí),地圖繪制應(yīng)用生成旋轉(zhuǎn)3d地圖的指令,但是地圖繪制應(yīng)用只是忽略所述指令。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,在不同實(shí)施例中,可以任意數(shù)量的不同方式來定義允許對(duì)3d地圖執(zhí)行旋轉(zhuǎn)操作的縮放級(jí)別。
b.沉浸式和非沉浸式查看模式
上文和下文所述的許多圖示出了提供逐向?qū)Ш教卣鞯牡貓D繪制應(yīng)用。在一些實(shí)施例中,地圖繪制應(yīng)用為此類導(dǎo)航特征提供若干查看模式。例如,一些實(shí)施例的地圖繪制應(yīng)用提供沉浸式查看模式和非沉浸式查看模式。在一些實(shí)施例中,這兩種查看模式用于查看相同地理區(qū)域的不同3d地圖。即,可使用沉浸式查看模式查看的一個(gè)3d地圖和可使用非沉浸式查看模式查看的另一個(gè)3d地圖是相同地理區(qū)域的3d地圖。然而,一些實(shí)施例的沉浸式和非沉浸式查看模式不限于逐向?qū)Ш教卣?。例如,在地圖瀏覽模式中(即,在不使用導(dǎo)航時(shí)),沉浸式和非沉浸式查看模式兩者均可用。此外,一些實(shí)施例針對(duì)逐向?qū)Ш侥J绞褂贸两讲榭茨J讲⑨槍?duì)地圖瀏覽模式使用非沉浸式查看模式。
在一些實(shí)施例中,非沉浸式和沉浸式查看模式是用于查看具有不同構(gòu)造和/或幾何結(jié)構(gòu)的不同3d地圖的查看模式。例如,一些實(shí)施例的非沉浸式查看模式用于查看由建筑物圖塊和道路圖塊描述的3d地圖。在一些實(shí)施例中,建筑物圖塊針對(duì)位于建筑物圖塊所表示的3d地圖的區(qū)域中的每個(gè)建筑物包含多邊形數(shù)據(jù)(例如,建筑物的覆蓋區(qū)的多邊形以及建筑物的高度值)。在一些實(shí)施例中,道路圖塊存儲(chǔ)與位于道路圖塊所表示的3d地圖的區(qū)域中的各條道路和土地有關(guān)的信息。在一些實(shí)施例中,道路由表示道路中心(例如,中心線)的道路矢量定義,且土地由多邊形數(shù)據(jù)定義。
一些實(shí)施例的沉浸式查看模式用于查看由建筑物圖塊和導(dǎo)航圖塊描述的3d地圖。在一些實(shí)施例中,用于非沉浸式查看模式的相同建筑物圖塊被用于沉浸式查看模式,而在一些實(shí)施例中,用于沉浸式查看模式的建筑物圖塊是不同的(例如,沉浸式建筑物圖塊包括建筑物的更高分辨率多邊形數(shù)據(jù))。
在一些實(shí)施例中,導(dǎo)航圖塊包括道路的多邊形數(shù)據(jù)以及土地的多邊形數(shù)據(jù)。通過使用多邊形數(shù)據(jù)來定義道路,可更充分地定義導(dǎo)航圖塊。例如,道路看起來是3d的和/或看起來像柏油,可沿著街道兩邊定義路緣,可為立交橋和橋梁指定陰影,等等。然而,在一些實(shí)施例中,較之于道路圖塊,導(dǎo)航圖塊需要更多信息來描述道路。
在一些實(shí)施例中,使用在下文更詳細(xì)地描述的樣式表數(shù)據(jù)來指定3d地圖中構(gòu)造(例如,建筑物、街道、公路、土地覆蓋物、樹葉、標(biāo)簽、陰影、道路路緣等)的外觀。例如,樣式表數(shù)據(jù)可指定應(yīng)用于不同構(gòu)造的紋理、應(yīng)用于構(gòu)造的紋理的顏色,等等。在一些實(shí)施例中,樣式表數(shù)據(jù)用于指定道路的紋理以便讓道路看起來像柏油。
如上所述,在一些實(shí)施例中,兩個(gè)查看模式均使用相同的建筑物圖塊來針對(duì)查看模式渲染建筑物。在一些實(shí)施例中,樣式表數(shù)據(jù)定義不同查看模式中建筑物的不同樣式(例如,不同的紋理、顏色、細(xì)節(jié)水平等)。例如,在一些實(shí)施例中,非沉浸式查看模式中的建筑物的樣式被設(shè)計(jì)為灰色,并且城市街區(qū)的輪廓具有尖銳的拐角。一些實(shí)施例的沉浸式查看模式中的相同建筑物的樣式被設(shè)計(jì)為淺灰色或白色,并且城市街區(qū)的輪廓具有圓拐角。在一些實(shí)施例中,可針對(duì)不同的查看模式,以不同方式設(shè)計(jì)附加構(gòu)造和/或不同構(gòu)造的樣式。例如,一些實(shí)施例為不同查看模式中的相同建筑物指定不同紋理。
此外,樣式表數(shù)據(jù)可為在不同縮放級(jí)別下的3d地圖中的相同或類似元件指定不同樣式。例如,一些實(shí)施例為低縮放級(jí)別下的建筑物指定簡單的紋理,因?yàn)檫@些建筑物更遠(yuǎn)并且細(xì)節(jié)可能難以注意到或可能根本就是不明顯的。針對(duì)更高的縮放級(jí)別,一些實(shí)施例為建筑物指定更詳細(xì)的樣式,諸如建筑物屋頂?shù)亩x形狀(與所有建筑物的平屋頂相反)。
此外,非沉浸式和沉浸式查看模式可被定義用于查看在縮放級(jí)別的不同范圍下的3d地圖。例如,一些實(shí)施例的非沉浸式查看模式被定義用于查看在縮放級(jí)別0-14下的3d地圖,而一些實(shí)施例的沉浸式查看模式被定義用于查看在縮放級(jí)別15-21下的3d地圖。在不同實(shí)施例中,查看模式可被定義用于查看任意數(shù)量的不同縮放級(jí)別。在一些情況下,將沉浸式查看模式的縮放級(jí)別的范圍定義為比為非沉浸式查看模式定義的縮放級(jí)別更高的縮放級(jí)別、比為非沉浸式查看模式定義的縮放級(jí)別更低的縮放級(jí)別、與為非沉浸式查看模式定義的縮放級(jí)別相同的縮放級(jí)別或者與為非沉浸式查看模式定義的縮放級(jí)別重疊的縮放級(jí)別。例如,在一些實(shí)施例中,非沉浸式查看模式被定義用于在所有縮放級(jí)別(例如,縮放級(jí)別0-21)下查看,而沉浸式查看模式被定義用于高縮放級(jí)別的子集(例如,縮放級(jí)別15-21)。
在一些實(shí)施例中,縮放級(jí)別是與3d地圖相距的距離的定義范圍。例如,可將第一縮放級(jí)別定義為沿z軸與3d地圖相距的6-10個(gè)距離單位(例如,英尺、碼、米等),可將第二縮放級(jí)別定義為沿z軸與3d地圖相距的11-15個(gè)距離單位,可將第三縮放級(jí)別定義為沿z軸與3d地圖相距的16-20個(gè)距離單位等等。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,可使用任意數(shù)量的不同距離單位來將縮放級(jí)別定義為包括任意數(shù)量的不同距離范圍。在一些實(shí)施例中,縮放級(jí)別是與2d地圖(例如,3d地圖的2d型式)相距的距離的定義范圍。
在一些實(shí)施例中,地圖服務(wù)提供方(例如,地圖服務(wù)器)針對(duì)不同的縮放級(jí)別生成并提供3d地圖的3d地圖圖塊的不同集合。例如,地圖服務(wù)提供方生成針對(duì)縮放級(jí)別0的3d地圖圖塊集合、針對(duì)縮放級(jí)別1的3d地圖圖塊集合、針對(duì)縮放級(jí)別2的3d地圖圖塊集合等等(例如,針對(duì)非沉浸式查看模式)。在一些實(shí)施例中,地圖服務(wù)提供方僅生成3d地圖的一個(gè)3d地圖圖塊集合(例如,針對(duì)沉浸式查看模式)。一些此類實(shí)施例的地圖繪制應(yīng)用通過修改(例如,按比例放大和/或縮小)3d地圖圖塊中的數(shù)據(jù)(例如,頂點(diǎn)、多邊形等)來在不同縮放級(jí)別下渲染3d地圖的3d地圖視圖。
在一些實(shí)施例中,地圖服務(wù)提供方針對(duì)不同縮放級(jí)別生成的3d地圖圖塊的不同集合具有不同的細(xì)節(jié)水平。例如,針對(duì)最高縮放級(jí)別生成的3d地圖圖塊集合包括高分辨率3d構(gòu)造(例如,這些3d構(gòu)造包括更多頂點(diǎn))以更準(zhǔn)確地表示這些構(gòu)造。針對(duì)最低縮放級(jí)別生成的3d地圖圖塊集合包括低分辨率3d構(gòu)造(例如,這些3d構(gòu)造圖塊包括更少頂點(diǎn)),因?yàn)閷倪h(yuǎn)距離來渲染3d。在此類遠(yuǎn)距離處,包括在更高分辨率3d地圖圖塊中的任何附加細(xì)節(jié)都是不明顯的。
一些實(shí)施例的非沉浸式和沉浸式查看模式的構(gòu)造和/或幾何結(jié)構(gòu)在3d地圖圖塊的不同集合中單獨(dú)地定義。3d地圖圖塊的不同集合由地圖服務(wù)提供方基于地圖服務(wù)提供方所生成或者從3d地圖數(shù)據(jù)提供方所導(dǎo)入的3d地圖生成。一些實(shí)施例的地圖繪制應(yīng)用使用不同的3d地圖圖塊來針對(duì)3d地圖的不同查看模式渲染3d地圖視圖。在一些情況下,地圖服務(wù)提供方針對(duì)相同查看模式生成多個(gè)3d地圖圖塊集合。例如,在一些實(shí)施例中,地圖服務(wù)提供方針對(duì)非沉浸式查看模式生成3d建筑物圖塊集合和3d道路圖塊集合。針對(duì)沉浸式查看模式,一些實(shí)施例的地圖服務(wù)提供方生成3d建筑物圖塊集合(和/或用于非沉浸式查看模式的相同3d建筑物圖塊集合)和3d導(dǎo)航圖塊集合。
圖91概念性地示出了地圖繪制應(yīng)用9100的實(shí)例,該地圖繪制應(yīng)用針對(duì)不同查看模式的不同縮放級(jí)別渲染3d地圖視圖。如該實(shí)例所示,非沉浸式查看模式被定義用于查看在縮放級(jí)別1到n-1下的3d地圖,而沉浸式查看模式被定義用于查看在縮放級(jí)別n到n+m下的3d地圖。在一些實(shí)施例中,應(yīng)用9100實(shí)現(xiàn)上文和下文參考圖1-108描述的地圖繪制應(yīng)用的一部分或全部。如圖所示,圖91包括地圖繪制應(yīng)用9100、地圖服務(wù)提供方9110、3d地圖圖塊集合9120以及3d地圖視圖集合9130。
如上所述,在一些實(shí)施例中,地圖服務(wù)提供方(例如,地圖服務(wù)器)針對(duì)不同的縮放級(jí)別生成并提供3d地圖的3d地圖圖塊的不同集合。如所示,地圖服務(wù)提供方9110針對(duì)縮放級(jí)別1-n中的每一者生成并提供3d地圖圖塊9120的集合。在一些實(shí)施例中,由下文參考圖108更詳細(xì)地描述的地圖服務(wù)來實(shí)現(xiàn)地圖服務(wù)提供方9110。地圖繪制應(yīng)用9100基于從地圖服務(wù)提供方9110接收的3d地圖圖塊來生成3d地圖視圖9130。
一些實(shí)施例的地圖繪制應(yīng)用9100基于針對(duì)特定縮放級(jí)別定義的3d地圖圖塊來生成該特定縮放級(jí)別下的3d地圖視圖。例如,如圖91所示,地圖繪制應(yīng)用9100使用針對(duì)縮放級(jí)別1定義的3d地圖圖塊集合9120來為非沉浸式查看模式生成縮放級(jí)別1下的3d地圖視圖集合9130。類似地,地圖繪制應(yīng)用9100通過針對(duì)對(duì)應(yīng)縮放級(jí)別定義的3d地圖圖塊9130的集合來為非沉浸式和沉浸式查看模式生成其他縮放級(jí)別下的3d地圖視圖9130的集合。
在一些實(shí)施例中,地圖繪制應(yīng)用9100基于針對(duì)單個(gè)縮放級(jí)別定義的3d地圖圖塊來生成針對(duì)若干縮放級(jí)別的3d地圖視圖。如該實(shí)例所示,地圖繪制應(yīng)用9100使用針對(duì)縮放級(jí)別n定義的3d地圖圖塊集合9120來為沉浸式查看模式生成縮放級(jí)別n到n+m下的3d地圖圖塊集合9120。一些實(shí)施例的地圖繪制應(yīng)用9100通過修改(例如,按比例放大和/或縮小)針對(duì)縮放級(jí)別n定義的3d地圖圖塊的數(shù)據(jù)(例如,3d構(gòu)造)來生成n+1到n+m縮放級(jí)別下的3d地圖視圖。
如圖91所示,地圖繪制應(yīng)用9100基于針對(duì)特定縮放級(jí)別定義的3d地圖圖塊來生成該特定縮放級(jí)別下的用于非沉浸式查看模式的3d地圖視圖,而地圖繪制應(yīng)用9100基于針對(duì)特定縮放級(jí)別定義的3d地圖圖塊來生成該特定縮放級(jí)別下的用于沉浸式查看模式的3d地圖視圖。雖然圖91示出了基于針對(duì)特定縮放級(jí)別的3d地圖圖塊集合來為沉浸式查看模式生成多個(gè)不同縮放級(jí)別下的3d地圖視圖的地圖繪制應(yīng)用,在一些實(shí)施例中,地圖繪制應(yīng)用為非沉浸式查看模式生成附加縮放級(jí)別。
此外,圖91示出了存儲(chǔ)在地圖服務(wù)提供方9110的單個(gè)存儲(chǔ)裝置上的3d地圖圖塊集合9120。在一些實(shí)施例中,3d地圖圖塊9120的不同集合存儲(chǔ)在不同存儲(chǔ)裝置中。例如,可將非沉浸式查看模式的一些3d地圖圖塊9120(在該實(shí)例中,來自縮放級(jí)別1到n-1中每一者的一些3d地圖圖塊9120)存儲(chǔ)在第一存儲(chǔ)裝置(例如,3d道路圖塊存儲(chǔ)裝置)中,并且將沉浸式查看模式的一些3d地圖圖塊9120(例如,來自縮放級(jí)別n的一些3d地圖圖塊9120)存儲(chǔ)在第二存儲(chǔ)裝置(例如,3d導(dǎo)航圖塊存儲(chǔ)裝置)中。在一些實(shí)施例中,將一些3d地圖圖塊(例如,來自縮放級(jí)別1到n中每一者的一些3d地圖圖塊)存儲(chǔ)在另一個(gè)存儲(chǔ)裝置(例如,3d建筑物圖塊存儲(chǔ)裝置)中。
圖92示出了在三個(gè)不同的階段9205-9215的虛擬相機(jī)9200的圍繞3d地圖9235的區(qū)域的移動(dòng)。具體地,3d地圖9235為被定義為由一些實(shí)施例的沉浸式查看模式查看的示例性3d地圖。如上所指出,在一些實(shí)施例中,地圖繪制應(yīng)用從其檢索圖塊的地圖服務(wù)提供方僅提供特定縮放級(jí)別(例如,縮放級(jí)別15)下的3d地圖9235的一個(gè)3d地圖圖塊集合。為基于這些3d地圖圖塊來渲染更高級(jí)別的縮放級(jí)別(例如,縮放級(jí)別16-21),一些此類實(shí)施例的地圖繪制應(yīng)用通過修改(例如,按比例放大和/或縮小)3d地圖圖塊中的數(shù)據(jù)(例如,頂點(diǎn)、多邊形等)來在不同縮放級(jí)別下渲染3d地圖視圖。如圖所示,3d地圖9235的區(qū)域包括兩個(gè)建筑物以及鄰接另一條道路的道路。
第一階段9205示出了在3d地圖9235中的特位置置和位置處的虛擬相機(jī)9200。在一些實(shí)施例中,虛擬相機(jī)9200在3d地圖9235中正聚焦的點(diǎn)(即,從虛擬相機(jī)前方投射出的線與道路相交的點(diǎn))被稱為聚焦點(diǎn)。在第一階段9205中,虛擬相機(jī)9200的聚焦點(diǎn)靠近由兩條道路形成的交叉口。在該階段9205中,以虛擬相機(jī)9200的視角的3d地圖9235的示例性渲染圖像在3d地圖視圖9220中示出。如圖所示,3d地圖9235的3d地圖視圖9220包括詳細(xì)的構(gòu)造,如樹木、車道標(biāo)志物、柏油(在該實(shí)例中由道路的泛灰色表示)。
第二階段9210示出了在3d地圖9235中的不同位置和位置處的虛擬相機(jī)9200。如在第二階段9210中所示,地圖繪制應(yīng)用已將虛擬相機(jī)9200向下并朝著3d地圖9235的左側(cè)移動(dòng)。對(duì)于該實(shí)例而言,地圖繪制應(yīng)用已響應(yīng)于用于放大3d地圖9235的輸入(例如,手勢輸入,諸如捏合手勢或雙觸擊手勢)而移動(dòng)虛擬相機(jī)9200。從第一階段9205到第二階段9210,地圖繪制應(yīng)用以所描述的方式自動(dòng)地移動(dòng)了虛擬相機(jī)9200以便放大3d地圖9235。在第二階段9210中,以虛擬相機(jī)9200的視角的3d地圖9235的示例性渲染圖像在3d地圖視圖9225中示出。3d地圖視圖9225示出了,相比第一階段9205中所示的那些,建筑物和樹木更大且更高并且道路和車道標(biāo)志物更寬。
第三階段9215示出了在3d地圖9235中的另一不同位置和位置處的虛擬相機(jī)9200。在該階段9215處,地圖繪制應(yīng)用已從第二階段9210中所示的虛擬相機(jī)9200的位置將虛擬相機(jī)9200進(jìn)一步向下并朝著3d地圖9235的左側(cè)移動(dòng)。繼續(xù)上述實(shí)例,地圖繪制應(yīng)用已響應(yīng)于用于放大3d地圖9235的輸入(例如,手勢輸入,諸如捏合手勢或雙觸擊手勢)而移動(dòng)虛擬相機(jī)9200。在第二階段9210與第三階段9215之間,地圖繪制應(yīng)用以所描述的方式自動(dòng)地移動(dòng)了虛擬相機(jī)9200以便放大3d地圖9235。在該階段9215中,以虛擬相機(jī)9200的視角的3d地圖9235的示例性渲染圖像在3d地圖視圖9230中示出。如在3d地圖視圖9230中所示,相比第二階段9210中所示的那些,建筑物和樹木更大且更高并且道路和車道標(biāo)志物更寬。
圖93示出了在三個(gè)不同的階段9305-9315的虛擬相機(jī)9300的圍繞3d地圖9335和3d地圖9340的區(qū)域的移動(dòng)。具體地,3d地圖9335類似于上文參考圖92描述的3d地圖9235。在該實(shí)例中,3d地圖9340是與3d地圖9335相同的地理區(qū)域的3d地圖,但被定義為由一些實(shí)施例的非沉浸式查看模式查看。如此,3d地圖9340的區(qū)域類似地包括兩個(gè)建筑物以及鄰接另一條道路的道路。
第一階段9305示出了在3d地圖9335中的特位置置和位置處的虛擬相機(jī)9300。在一些實(shí)施例中,虛擬相機(jī)9300在3d地圖9335中正聚焦的點(diǎn)(即,從虛擬相機(jī)前方投射出的線與道路相交的點(diǎn))被稱為聚焦點(diǎn)。在第一階段9305中,虛擬相機(jī)9300的聚焦點(diǎn)靠近由兩條道路形成的交叉口。在該階段9305中,以虛擬相機(jī)9300的視角的3d地圖9335的示例性渲染圖像在3d地圖視圖9320中示出。如圖所示,3d地圖9335的3d地圖視圖9320包括詳細(xì)的構(gòu)造,如樹木、車道標(biāo)志物、柏油(在該實(shí)例中由道路的泛灰色表示)。
第二階段9310示出了在3d地圖9335中的不同位置和位置處的虛擬相機(jī)9300。如第二階段9310中所示,地圖繪制應(yīng)用已將虛擬相機(jī)9300向上并朝著3d地圖9335的右側(cè)移動(dòng)。對(duì)于該實(shí)例而言,地圖繪制應(yīng)用已響應(yīng)于用于從3d地圖9335縮小的輸入(例如,手勢輸入,諸如展開手勢或雙點(diǎn)觸摸觸擊手勢)而移動(dòng)虛擬相機(jī)9300。從第一階段9305到第二階段9310,地圖繪制應(yīng)用以所描述的方式自動(dòng)地移動(dòng)了虛擬相機(jī)9300以便縮小3d地圖9335。在第二階段9310中,以虛擬相機(jī)9300的視角的3d地圖9335的示例性渲染圖像在3d地圖視圖9325中示出。3d地圖視圖9325示出了,相比第一階段9305中所示的那些,建筑物和樹木更小且更短并且道路和車道標(biāo)志物更窄。
第三階段9315示出了在3d地圖9235中的另一不同位置和位置處的虛擬相機(jī)9300。在該階段9215處,地圖繪制應(yīng)用已從沉浸式查看模式切換至非沉浸式查看模式。在一些實(shí)施例中,特定縮放級(jí)別被定義為沉浸式查看模式與非沉浸式查看模式之間的過渡點(diǎn)。例如,一些實(shí)施例的地圖繪制應(yīng)用使用沉浸式查看模式來查看縮放級(jí)別15-21下的3d地圖的區(qū)域并使用非沉浸式查看模式來查看縮放級(jí)別0-14下的3d地圖的區(qū)域。因此,在地圖繪制應(yīng)用接收到用于從縮放級(jí)別15縮放至縮放級(jí)別14的輸入時(shí),地圖繪制應(yīng)用自動(dòng)地從沉浸式查看模式切換至非沉浸式查看模式。類似地,在地圖繪制應(yīng)用接收到用于從縮放級(jí)別14縮放至縮放級(jí)別15的輸入時(shí),地圖繪制應(yīng)用自動(dòng)地從非沉浸式查看模式切換至沉浸式查看模式。不同實(shí)施例可以不同的方式定義在兩個(gè)縮放級(jí)別之間切換的縮放級(jí)別。
此外,一些實(shí)施例不基于縮放級(jí)別來在沉浸式和非沉浸式查看模式之間切換。例如,不同實(shí)施例針對(duì)逐向?qū)Ш绞褂贸两讲榭茨J讲⑨槍?duì)地圖瀏覽使用非沉浸式查看模式,或者包括允許用戶在非沉浸式查看模式與沉浸式查看模式之間切換的ui控件。
圖94概念性地示出了地圖繪制應(yīng)用9400的實(shí)例,該地圖繪制應(yīng)用針對(duì)不同查看模式的不同縮放級(jí)別渲染3d地圖視圖。如該實(shí)例所示,非沉浸式查看模式被定義用于查看在縮放級(jí)別1到x下的3d地圖,而沉浸式查看模式被定義用于查看在縮放級(jí)別x-k到x下的3d地圖。因此,應(yīng)用可在沉浸式或非沉浸式模式中顯示縮放級(jí)別x-k到x下的地圖。如圖所示,圖94包括地圖繪制應(yīng)用9400和地圖服務(wù)提供方9410,它們的功能類似于上文參考圖91描述的功能(即,地圖服務(wù)提供方9410生成并提供地圖圖塊9420,并且地圖繪制應(yīng)用通過使用這些圖塊來渲染地圖視圖9430)。
在這種情況下,如圖91所示,地圖服務(wù)提供方9410針對(duì)每個(gè)非沉浸式縮放級(jí)別生成并提供3d地圖圖塊9420的不同集合,并同時(shí)針對(duì)沉浸式查看模式僅生成并提供3d地圖圖塊9420的單個(gè)集合。地圖繪制應(yīng)用9400使用縮放級(jí)別x-k地圖圖塊來生成針對(duì)縮放級(jí)別x-k到x的地圖視圖。在一些實(shí)施例中,地圖繪制應(yīng)用當(dāng)在地圖瀏覽、路線顯示、路線檢查和自動(dòng)步進(jìn)模式中時(shí)使用非沉浸式3d地圖圖塊來生成地圖視圖,并且當(dāng)在逐向?qū)Ш侥J街袝r(shí)使用沉浸式3d地圖圖塊來生成地圖視圖。下文參考圖105更詳細(xì)地描述了這些模式。
在圖93的上述實(shí)例中,地圖繪制應(yīng)用接收用于從針對(duì)沉浸式查看模式定義的縮放級(jí)別縮小至針對(duì)非沉浸式查看模式的另一縮放級(jí)別的輸入。如此,地圖繪制應(yīng)用執(zhí)行預(yù)加載操作以準(zhǔn)備渲染3d地圖9340的針對(duì)非沉浸式查看模式定義的3d地圖視圖。下文參考圖97、95和102描述了預(yù)加載操作的實(shí)例。
在預(yù)加載操作之后,地圖繪制應(yīng)用已將虛擬相機(jī)9300進(jìn)一步向上并朝著3d地圖9335的右側(cè)從第二階段9310中所示的位置移動(dòng)至一相對(duì)位置。繼續(xù)上述實(shí)例,地圖繪制應(yīng)用已響應(yīng)于用于放大3d地圖9335的輸入(例如,手勢輸入,諸如捏合手勢或雙觸擊手勢)而移動(dòng)虛擬相機(jī)9300。在第二階段9310與第三階段9315之間,地圖繪制應(yīng)用以所描述的方式自動(dòng)地預(yù)加載3d地圖9340并移動(dòng)虛擬相機(jī)9300以便縮小3d地圖9335。在該階段9315中,以虛擬相機(jī)9300的視角的3d地圖9335的示例性渲染圖像在3d地圖視圖9330中示出。如圖所示,3d地圖視圖9330包含相同的建筑物和道路,但不包含3d地圖視圖9320和9325中所示的任何構(gòu)造和/或細(xì)節(jié),因?yàn)榈貓D繪制應(yīng)用現(xiàn)在正渲染來自3d地圖9340的用于更不詳細(xì)的非沉浸式查看模式的3d地圖視圖。
如圖92和93所示,沉浸式查看模式和非沉浸式查看模式基于區(qū)域查看的縮放級(jí)別來提供3d地圖的區(qū)域的不同細(xì)節(jié)水平。在一些實(shí)施例中,地圖繪制應(yīng)用針對(duì)不同縮放級(jí)別下的建筑物渲染不同紋理。例如,一些實(shí)施例的地圖繪制應(yīng)用針對(duì)沉浸式查看模式中的建筑物渲染更詳細(xì)的紋理(例如,顏色、圖案等)并且針對(duì)非沉浸式查看模式中的相同建筑物渲染更簡單的紋理(例如,純色等)。在一些實(shí)施例中,地圖繪制應(yīng)用針對(duì)沉浸式查看模式中不同縮放級(jí)別下的相同建筑物渲染不同紋理。此外,或結(jié)合基于不同縮放級(jí)別為建筑物渲染不同紋理,一些實(shí)施例的地圖繪制應(yīng)用還基于其他因素(例如,日期時(shí)間、地理區(qū)域、一年中的季節(jié)、假日等)來為建筑物渲染不同紋理。
圖95概念性地示出了一些實(shí)施例的地圖繪制應(yīng)用的處理流水線9500,該處理流水線用于基于不同的3d地圖圖塊9540-9550來渲染3d地圖視圖9560。如圖所示,處理流水線9500包括地圖渲染引擎9510、虛擬相機(jī)模塊9520、網(wǎng)格構(gòu)建器9530、圖塊處理器9570、3d地圖圖塊的三個(gè)不同的存儲(chǔ)裝置9540-9550以及樣式表存儲(chǔ)裝置9555。在一些實(shí)施例中,導(dǎo)航圖塊存儲(chǔ)裝置9540存儲(chǔ)用于沉浸式查看模式的3d地圖圖塊(還稱為導(dǎo)航圖塊),并且道路圖塊(還稱為道路圖塊)存儲(chǔ)裝置9545存儲(chǔ)用于非沉浸式查看模式的3d地圖圖塊。一些實(shí)施例的建筑物圖塊存儲(chǔ)裝置9550存儲(chǔ)用于沉浸式和非沉浸式查看模式兩者的3d地圖圖塊(還稱為建筑物圖塊)。樣式表存儲(chǔ)裝置9555存儲(chǔ)用于渲染3d地圖視圖9560的紋理的定義以及用于渲染3d地圖視圖9560的其他樣式設(shè)計(jì)信息。
虛擬相機(jī)9520識(shí)別從其查看3d地圖的位置和取向(例如,視角位置、縮放級(jí)別等)。虛擬相機(jī)9520將3d地圖的視場(還稱為視圖截錐)發(fā)送至圖塊處理器9570以供處理。
圖塊處理器9570從虛擬相機(jī)9520接收3d地圖的視場。在一些實(shí)施例中,圖塊處理器9570在向網(wǎng)格構(gòu)建器9530發(fā)送“空的”虛擬3d地圖圖塊之前,對(duì)3d地圖視圖執(zhí)行任何必要的剔選(例如,移除太遠(yuǎn)的表面區(qū)域、移除將完全在其他對(duì)象后方的對(duì)象,等等)。一些實(shí)施例的圖塊處理器9570從網(wǎng)格構(gòu)建器9530接收“已構(gòu)建的”虛擬3d地圖圖塊并將它們發(fā)送至地圖渲染引擎9510以供渲染。在一些實(shí)施例中,圖塊處理器9570由下文參考圖98和102描述的控制器和圖塊提供器實(shí)現(xiàn)。
在一些實(shí)施例中,網(wǎng)格構(gòu)建器9530為圖塊處理器9570準(zhǔn)備虛擬3d地圖圖塊。網(wǎng)格構(gòu)建器9530基于將要針對(duì)3d地圖的視場而渲染的查看模式來請求來自3d地圖圖塊存儲(chǔ)裝置9540-9550的3d地圖圖塊(例如,已解壓的3d地圖圖塊)。例如,在查看模式為沉浸式查看模式時(shí),一些實(shí)施例的網(wǎng)格構(gòu)建器9530請求來自存儲(chǔ)裝置9540的導(dǎo)航地圖圖塊以及來自存儲(chǔ)裝置9550的建筑物圖塊。在一些實(shí)施例中,網(wǎng)格構(gòu)建器9530請求來自存儲(chǔ)裝置9545的道路圖塊以及來自存儲(chǔ)裝置9550的建筑物圖塊。
一旦網(wǎng)格構(gòu)建器9530接收到地圖圖塊,網(wǎng)格構(gòu)建器9530便使用這些圖塊中存儲(chǔ)的矢量數(shù)據(jù)來構(gòu)建多邊形網(wǎng)格。網(wǎng)格構(gòu)建器9530還基于從樣式表存儲(chǔ)裝置9555檢索的樣式設(shè)計(jì)信息來提供紋理信息。在一些實(shí)施例中,網(wǎng)格構(gòu)建器9530在逐個(gè)圖塊的基礎(chǔ)上構(gòu)建多邊形網(wǎng)格并發(fā)送虛擬3d地圖圖塊,所述虛擬3d地圖圖塊在一些實(shí)施例中是由網(wǎng)格構(gòu)建器9530從圖塊處理器9570接收的虛擬3d地圖圖塊的多邊形網(wǎng)格型式。
地圖渲染引擎9510負(fù)責(zé)基于從虛擬相機(jī)9520接收的視場來生成繪圖(例如,3d地圖的3d地圖視圖)以輸出至顯示設(shè)備。下文參考圖98和圖102進(jìn)一步詳細(xì)地描述了網(wǎng)格構(gòu)建器9530、虛擬相機(jī)9520、圖塊處理器9570和地圖渲染引擎9510的附加細(xì)節(jié)。
現(xiàn)在將描述處理流水線9500的示例性操作。虛擬相機(jī)9520識(shí)別虛擬相機(jī)9520從其查看3d地圖的位置和取向。虛擬相機(jī)9520基于所識(shí)別的位置和取向向圖塊處理器9570發(fā)送3d地圖的視場。
在圖塊處理器9570接收到視場時(shí),一些實(shí)施例的圖塊處理器9570剔選視場。圖塊處理器9570然后將虛擬地圖圖塊發(fā)送至網(wǎng)格構(gòu)建器9530以供處理。
當(dāng)?shù)貓D繪制應(yīng)用在沉浸式查看模式中生成3d地圖視圖時(shí),網(wǎng)格構(gòu)建器9530從導(dǎo)航圖塊存儲(chǔ)裝置9540檢索導(dǎo)航圖塊并從建筑物圖塊存儲(chǔ)裝置9550檢索建筑物圖塊。然而,當(dāng)?shù)貓D繪制應(yīng)用在非沉浸式查看模式中生成3d地圖視圖時(shí),網(wǎng)格構(gòu)建器9530反而從道路圖塊存儲(chǔ)裝置9545檢索道路圖塊并從建筑物圖塊存儲(chǔ)裝置9550檢索建筑物圖塊。即,處理流水線9500使用3d地圖圖塊的不同集合來在這些不同查看模式中渲染3d地圖視圖。
在一些實(shí)施例中,將3d地圖圖塊在存儲(chǔ)裝置9540中高速緩存一時(shí)間段。因此,在一些此類實(shí)施例中,如果在存儲(chǔ)裝置9540中3d地圖圖塊不可用,則從地圖服務(wù)檢索所需的3d地圖圖塊。
一旦網(wǎng)格構(gòu)建器9530具有所有合適的3d地圖圖塊,網(wǎng)格構(gòu)建器9530便基于3d地圖圖塊中的矢量數(shù)據(jù)來構(gòu)建多邊形網(wǎng)格。網(wǎng)格構(gòu)建器9530然后將3d地圖圖塊的虛擬地圖圖塊型式發(fā)送至圖塊處理器9570。
在圖塊處理器9570從網(wǎng)格構(gòu)建器9530接收虛擬地圖圖塊時(shí),圖塊處理器9570將它們發(fā)送至地圖渲染引擎9510以供渲染。地圖渲染引擎9510從圖塊處理器9570接收虛擬地圖圖塊并基于虛擬地圖圖塊來渲染3d地圖視圖9560。
上文和下文的對(duì)若干圖(例如,圖95、98和102)的描述討論了用于渲染3d地圖的3d地圖視圖的處理流水線。在一些實(shí)施例中,處理流水線生成并存儲(chǔ)用于渲染地圖視圖的數(shù)據(jù)結(jié)構(gòu)。圖96概念性地示出了由一些實(shí)施例的處理流水線使用的數(shù)據(jù)結(jié)構(gòu)9600。
如圖所示,數(shù)據(jù)結(jié)構(gòu)9600包括虛擬相機(jī)id9605、虛擬相機(jī)位置數(shù)據(jù)9610、查看模式9615、3d地圖圖塊9620、樣式表數(shù)據(jù)9625、3d地圖圖塊高速緩存9630、虛擬地圖圖塊9635、3d地圖視圖9640以及其他數(shù)據(jù)9645。
虛擬相機(jī)id9605是用于識(shí)別用于渲染3d地圖視圖的虛擬相機(jī)的唯一標(biāo)識(shí)符。如上文和下文所述,一些實(shí)施例的處理流水線將若干虛擬相機(jī)實(shí)例化以用于識(shí)別3d地圖的視圖。如圖96所示,虛擬相機(jī)9650的集合可供處理流水線使用。在該實(shí)例中,虛擬相機(jī)id9605正識(shí)別供處理流水線用于渲染3d地圖視圖的虛擬相機(jī)2。
虛擬相機(jī)位置數(shù)據(jù)9610存儲(chǔ)與由虛擬相機(jī)id9605識(shí)別的虛擬相機(jī)的位置有關(guān)的信息。此類信息的實(shí)例包括虛擬相機(jī)的坐標(biāo)(例如,x、y和z坐標(biāo))、虛擬相機(jī)的平移角度、虛擬相機(jī)的傾斜角度、虛擬相機(jī)的滾轉(zhuǎn)角度、虛擬相機(jī)縮放級(jí)別等。
查看模式9615是指示渲染3d地圖視圖的查看模式的數(shù)據(jù)。例如,查看模式9615可能存儲(chǔ)指示非沉浸式查看模式、沉浸式查看模式、衛(wèi)星查看模式、混合查看模式等的數(shù)據(jù)。
3d地圖圖塊9620是表示3d地圖的從其渲染3d地圖的部分的3d地圖圖塊的集合。一些實(shí)施例的處理流水線使用虛擬相機(jī)位置數(shù)據(jù)9610和查看模式9615來識(shí)別該部分并檢索對(duì)應(yīng)的3d地圖圖塊。
樣式表數(shù)據(jù)9625包含處理流水線用于構(gòu)建網(wǎng)格的樣式設(shè)計(jì)信息。在一些實(shí)施例中,處理流水線使用樣式表數(shù)據(jù)9625來確定紋理數(shù)據(jù)、陰影數(shù)據(jù)、三角測量數(shù)據(jù)等。
3d地圖圖塊高速緩存9630用于對(duì)3d地圖圖塊進(jìn)行高速緩存。在一些實(shí)施例中,處理流水線對(duì)近期使用的3d地圖圖塊、經(jīng)常使用的3d地圖圖塊、處理流水線確定可能在不久的將來使用的3d地圖圖塊等等進(jìn)行高速緩存。
虛擬地圖圖塊9635存儲(chǔ)包括已構(gòu)建的地圖構(gòu)造的地圖圖塊。如圖所示,虛擬地圖圖塊包括建筑物構(gòu)造、道路/導(dǎo)航構(gòu)造、標(biāo)簽構(gòu)造、土地覆蓋物構(gòu)造以及其他構(gòu)造。具體地,一些實(shí)施例的虛擬地圖圖塊9635當(dāng)將要在非沉浸式查看模式中渲染3d地圖視圖時(shí)存儲(chǔ)包括道路構(gòu)造的地圖圖塊,并且當(dāng)將要在沉浸式查看模式中渲染3d地圖視圖時(shí)存儲(chǔ)包括導(dǎo)航構(gòu)造的地圖圖塊。
3d地圖視圖9640包含處理流水線基于一些實(shí)施例的地圖繪制應(yīng)用所顯示的數(shù)據(jù)結(jié)構(gòu)9600中的各種信息而渲染的3d地圖視圖。其他數(shù)據(jù)9645存儲(chǔ)處理流水線在一些實(shí)施例中為渲染3d地圖視圖而可能需要的信息(例如,將要使用的網(wǎng)格構(gòu)建器的數(shù)量、將要使用的圖塊提供器的數(shù)量等等)。
本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,數(shù)據(jù)結(jié)構(gòu)9600是一些實(shí)施例的處理流水線為存儲(chǔ)所需信息以渲染3d地圖視圖而使用的僅一個(gè)可能的數(shù)據(jù)結(jié)構(gòu)。例如,不同實(shí)施例可能存儲(chǔ)附加或更少的信息,以不同順序存儲(chǔ)信息,使用不同結(jié)構(gòu)來存儲(chǔ)數(shù)據(jù),等等。
圖97概念性地示出了一些實(shí)施例的地圖繪制應(yīng)用的狀態(tài)圖9700。如圖所示,狀態(tài)圖9700包括當(dāng)?shù)貓D繪制應(yīng)用在路線導(dǎo)航期間在第一查看模式與第二查看模式之間切換時(shí)地圖繪制應(yīng)用的狀態(tài)9710-9770。在一些實(shí)施例中,第一和第二查看模式為非沉浸式查看模式和沉浸式查看模式。一些實(shí)施例的第一和第二查看模式用于查看相同地理區(qū)域的不同3d地圖。即,使用第一查看模式查看的第一3d地圖和使用第二查看模式查看的第二3d地圖均用于查看相同地理區(qū)域。
在狀態(tài)9710下,地圖繪制應(yīng)用在第一地圖查看模式中渲染3d地圖視圖。在一些實(shí)施例中,在地圖繪制應(yīng)用進(jìn)入導(dǎo)航模式(例如,通過選擇用于發(fā)起路線導(dǎo)航的ui項(xiàng))時(shí),地圖繪制應(yīng)用進(jìn)入狀態(tài)9710。對(duì)于該實(shí)例而言,在地圖繪制應(yīng)用進(jìn)入狀態(tài)9710時(shí),地圖繪制應(yīng)用使用第一虛擬相機(jī)來查看第一3d地圖并針對(duì)非沉浸式查看模式中的地圖查看模式來渲染3d地圖視圖。
在狀態(tài)9710下,一些實(shí)施例的地圖繪制應(yīng)用接收各種命令(例如,縮放命令、平移命令、旋轉(zhuǎn)命令、傾斜命令等)以圍繞第一3d地圖移動(dòng)虛擬相機(jī)并基于虛擬相機(jī)在第一3d地圖中的位置來渲染3d地圖視圖。在虛擬相機(jī)圍繞第一3d地圖移動(dòng)時(shí),當(dāng)虛擬相機(jī)對(duì)著第一3d地圖的區(qū)域時(shí),地圖繪制應(yīng)用從地圖服務(wù)檢索圖塊,其中地圖繪制應(yīng)用不具有與所述區(qū)域有關(guān)的數(shù)據(jù)。
在狀態(tài)9710下,如果地圖繪制應(yīng)用確定向第二查看模式的過渡是可能的,則地圖繪制應(yīng)用過渡至狀態(tài)9720以針對(duì)第二查看模式執(zhí)行預(yù)加載操作以便提供從第一查看模式到第二查看模式的平滑過渡(例如,以防止當(dāng)在模式之間過渡時(shí)的任何停頓或延遲)。在該實(shí)例中,第二查看模式是沉浸式查看模式。一些實(shí)施例的地圖繪制應(yīng)用基于任意數(shù)量的不同因素來確定過渡至第二查看模式是可能的。此類因素的一個(gè)實(shí)例包括虛擬相機(jī)在查看第一3d地圖時(shí)的縮放級(jí)別。例如,如果地圖視圖的所識(shí)別的縮放級(jí)別是道路顯示為黃色標(biāo)線的縮放級(jí)別(例如,非沉浸式或標(biāo)準(zhǔn)查看模式),并且該縮放級(jí)別在來自為在非沉浸式模式與沉浸式模式之間過渡而定義的縮放級(jí)別的縮放級(jí)別閾值量內(nèi),則地圖繪制應(yīng)用確定向第二查看模式的過渡是可能的。地圖繪制應(yīng)用考慮的附加和/或其他因素包括指示向第二查看模式的過渡是可能的啟發(fā)的集合。
在狀態(tài)9720下,地圖繪制應(yīng)用為地圖繪制應(yīng)用針對(duì)第二查看模式生成的第二加載器下載數(shù)據(jù)。在一些實(shí)施例中,數(shù)據(jù)包括第二查看模式所需的3d地圖圖塊和樣式設(shè)計(jì)信息(例如,樣式表)(例如,包括用戶位置周圍并且沿路線導(dǎo)航的區(qū)域的3d地圖圖塊)。加載器加載與第二3d地圖相關(guān)的數(shù)據(jù)。此外,地圖繪制應(yīng)用生成第二虛擬相機(jī)以用于查看第二3d地圖并生成第二3d地圖的3d地圖視圖。在生成第二虛擬相機(jī)和加載器并且下載數(shù)據(jù)之后,地圖繪制應(yīng)用過渡至狀態(tài)9730。
在地圖繪制應(yīng)用過渡至狀態(tài)9730時(shí),地圖繪制應(yīng)用對(duì)用于第二3d地圖的3d地圖圖塊進(jìn)行解碼。在一些實(shí)施例中,對(duì)數(shù)據(jù)解碼還包括針對(duì)第二3d地圖中的幾何結(jié)構(gòu)創(chuàng)建網(wǎng)格,檢索樣式設(shè)計(jì)信息,將樣式設(shè)計(jì)信息與所生成的網(wǎng)格相關(guān)聯(lián)以及確定網(wǎng)格的繪制順序。在一些實(shí)施例中,在對(duì)所下載的數(shù)據(jù)進(jìn)行解碼時(shí),地圖繪制應(yīng)用執(zhí)行附加和/或其他操作。一旦地圖繪制應(yīng)用對(duì)數(shù)據(jù)解碼,地圖繪制應(yīng)用便過渡至狀態(tài)9740。
在狀態(tài)9740下,地圖繪制應(yīng)用使用第二虛擬相機(jī)來準(zhǔn)備渲染引擎以渲染第二3d地圖的3d地圖視圖。為準(zhǔn)備渲染引擎,一些實(shí)施例的地圖繪制應(yīng)用生成紋理預(yù)處理器,預(yù)編譯渲染著色器,針對(duì)附近的幾何結(jié)構(gòu)構(gòu)建樣式設(shè)計(jì)信息,生成樣式資源,基于樣式設(shè)計(jì)信息生成紋理以及創(chuàng)建幾何結(jié)構(gòu)所需的任何資源。例如,如果在用戶位置附近有公園,則過程9700確定與公園相關(guān)的樣式設(shè)計(jì)信息然后生成對(duì)公園進(jìn)行樣式設(shè)計(jì)所必需的任何及所有資源。在準(zhǔn)備渲染引擎之后,地圖繪制應(yīng)用過渡至狀態(tài)9750。
在狀態(tài)9750下,地圖繪制應(yīng)用使用第一虛擬相機(jī)來繼續(xù)渲染第一3d地圖的3d地圖視圖。這里,地圖繪制應(yīng)用還確定是否開始從第一查看模式過渡至第二查看模式。如果地圖繪制應(yīng)用確定不可能需要從第一查看模式到第二查看模式的過渡(例如,在已經(jīng)過一定義時(shí)間量之后,第一查看模式的縮放級(jí)別已改變閾值量以指示過渡不大可能或?qū)⒉粫?huì)發(fā)生,等等),則地圖繪制應(yīng)用過渡至狀態(tài)9710。如果地圖繪制應(yīng)用確定從第一查看模式過渡至第二查看模式(例如,地圖繪制應(yīng)用進(jìn)入需要第二查看模式的縮放級(jí)別,應(yīng)用進(jìn)入導(dǎo)航模式,等等),則地圖繪制應(yīng)用過渡至狀態(tài)9760。
在地圖繪制應(yīng)用過渡至狀態(tài)9760時(shí),地圖繪制應(yīng)用通過對(duì)使用第一虛擬相機(jī)渲染的第一3d地圖的3d地圖視圖與使用第二虛擬相機(jī)渲染的第二3d地圖的3d地圖視圖執(zhí)行交叉融合,來執(zhí)行融合操作。在一些實(shí)施例中,地圖繪制應(yīng)用首先渲染第一3d地圖的3d地圖視圖,然后渲染第二3d地圖的3d地圖視圖。一些實(shí)施例的地圖繪制應(yīng)用反復(fù)地在渲染第一3d地圖的3d地圖視圖與渲染第二3d地圖的3d地圖視圖之間交替,以進(jìn)行融合操作。一旦完成融合操作,地圖繪制應(yīng)用便過渡至狀態(tài)9770。
在狀態(tài)9770下,地圖繪制應(yīng)用將第二查看模式設(shè)置為第一查看模式然后過渡回狀態(tài)9710。由于地圖繪制應(yīng)用可以任意數(shù)量的次數(shù)在第一查看模式和第二查看模式之間切換,因此地圖繪制應(yīng)用返回至狀態(tài)9710,以便預(yù)加載第二查看模式以繼續(xù)提供兩個(gè)查看模式之間的無縫過渡。
c.圖像處理流水線
圖98概念性地示出了處理流水線9800,該處理流水線由一些實(shí)施例的地圖繪制應(yīng)用執(zhí)行以便渲染用于在客戶端設(shè)備處(例如,在客戶端設(shè)備的顯示器上)顯示的地圖。如所示,處理流水線9800包括請求器9805、加載器/解壓縮器9810、圖塊處理器9850、網(wǎng)格構(gòu)建器9815的集合、圖塊提供器9820、虛擬相機(jī)9880以及地圖渲染引擎9825。
一些實(shí)施例的圖塊處理器9850接收來自網(wǎng)格構(gòu)建器9815的對(duì)地圖圖塊的請求并在轉(zhuǎn)發(fā)請求之前執(zhí)行復(fù)用操作。網(wǎng)格構(gòu)建器9815,如將在下文所述,識(shí)別為構(gòu)建相應(yīng)網(wǎng)格所需的現(xiàn)有地圖圖塊(在地圖繪制服務(wù)服務(wù)器上或在執(zhí)行處理流水線9800的設(shè)備上的高速緩存中存儲(chǔ)的地圖圖塊)。在一些實(shí)施例中,地圖圖塊被引用為四叉樹的節(jié)點(diǎn)。在多個(gè)網(wǎng)格構(gòu)建器請求相同的圖塊時(shí),圖塊處理器充當(dāng)復(fù)用器。在網(wǎng)格構(gòu)建器請求圖塊時(shí),在一些實(shí)施例中,圖塊處理器9850將這些圖塊存儲(chǔ)在其隊(duì)列中。在特定時(shí)間段之后或者在已請求特定數(shù)量的圖塊之后,圖塊處理器9850清除隊(duì)列并將圖塊列表發(fā)送至加載器/解壓縮器9810。
加載器/解壓縮器9810從圖塊處理器9850接收多路復(fù)用的圖塊列表9835并處理解壓縮圖塊9845至圖塊處理器9850的返回。在一些實(shí)施例中,加載器/解壓縮器9810首先檢查一個(gè)或多個(gè)高速緩存以確定所述高速緩存是否具有在地圖繪制應(yīng)用于其上操縱的設(shè)備上存儲(chǔ)的所請求圖塊。如圖所示,一些實(shí)施例包括存儲(chǔ)在非易失性存儲(chǔ)器(例如,磁盤、閃存存儲(chǔ)器等)上的第一圖塊高速緩存9853以及存儲(chǔ)在易失性存儲(chǔ)器(例如,隨機(jī)存取存儲(chǔ)器)上的第二圖塊高速緩存9854。當(dāng)加載器/解壓縮器9810在高速緩存9853和9854中的一者中找到圖塊時(shí),它便將這些圖塊發(fā)送回圖塊處理器9850(以用于返回至請求網(wǎng)格構(gòu)建器9815)。
當(dāng)加載器/解壓縮器9810在其高速緩存中不具有圖塊時(shí),它便向請求器9805發(fā)送對(duì)其余圖塊的請求。在以壓縮格式接收到這些地圖圖塊9840時(shí),加載器/解壓縮器對(duì)所接收的圖塊解壓縮以生成解壓縮圖塊9845。在一些實(shí)施例中,在生成如上所述的地圖圖塊之后,地圖繪制服務(wù)還使用編碼技術(shù)來壓縮圖塊。不同的實(shí)施例使用不同的編碼技術(shù)。加載器/解壓縮器9810將這些解壓縮圖塊9845返回至圖塊處理器9850,并且在一些情況下還將它們存儲(chǔ)在圖塊高速緩存9853和9854中的一者或兩者中。
請求器9805,在一些實(shí)施例中,接收來自加載器/解壓縮器9810(其繼而接收來自圖塊處理器9850的請求)的對(duì)地圖圖塊的請求。這些地圖圖塊,在一些實(shí)施例中,存儲(chǔ)在服務(wù)器(例如,用戶設(shè)備所連接至的地圖繪制服務(wù)的服務(wù)器)上。請求器發(fā)送從地圖繪制服務(wù)中識(shí)別所需(并且在圖塊高速緩存9853和9854中不可用的)圖塊的圖塊列表9836(從加載器/解壓縮器9810接收)。在一些實(shí)施例中,請求器利用操作設(shè)備的網(wǎng)絡(luò)連接(例如,wi-fi連接、gsm連接等)來通過互聯(lián)網(wǎng)聯(lián)系地圖繪制服務(wù)以檢索所需的地圖圖塊。在從地圖繪制服務(wù)接收到圖塊(為壓縮形式)時(shí),請求器9805將壓縮圖塊9840返回至加載器/解壓縮器。
在一些實(shí)施例中,請求器9805(或圖塊處理器9850,或流水線的不同部分)識(shí)別附加縮放級(jí)別下的覆蓋與初始請求的圖塊相同的地理區(qū)域的圖塊,并將這些圖塊添加至請求列表9836使得在不久的將來有需要時(shí)圖塊將是可用的。此外,一些實(shí)施例針對(duì)附近的地理區(qū)域自動(dòng)地請求相同(或不同)縮放級(jí)別下的圖塊,以便使圖塊在用戶平移地圖的情況下是可用的。在一些實(shí)施例中,請求器9805、加載器/解壓縮器9810以及圖塊處理器9850用作處理流水線的獨(dú)立部分,而網(wǎng)格構(gòu)建器9815用作該部分的“客戶端”。
一些實(shí)施例的網(wǎng)格構(gòu)建器9815(還稱為圖塊源)由圖塊提供器9820實(shí)例化以便構(gòu)建虛擬地圖圖塊的不同層。取決于正由地圖繪制應(yīng)用顯示的地圖的類型,圖塊提供器9820可將不同數(shù)量和不同類型的網(wǎng)格構(gòu)建器9815實(shí)例化。例如,針對(duì)立交橋(或衛(wèi)星)視圖地圖,圖塊提供器9820可能僅對(duì)一個(gè)網(wǎng)格構(gòu)建器9815實(shí)例化,因?yàn)橐恍?shí)施例的立交橋地圖圖塊不包括多個(gè)數(shù)據(jù)層。實(shí)際上,在一些實(shí)施例中,立交橋地圖圖塊包含在地圖繪制服務(wù)處生成的已經(jīng)構(gòu)建的網(wǎng)格,針對(duì)該地圖繪制服務(wù),立交橋圖像(由衛(wèi)星、飛機(jī)、直升機(jī)等拍攝)被用作紋理。然而,在一些實(shí)施例中,可對(duì)附加網(wǎng)格構(gòu)建器實(shí)例化以用于在應(yīng)用處于混合模式中時(shí)生成標(biāo)簽以覆蓋立交橋圖像。在標(biāo)題為“3dstreets”的pct申請pct/ep2011/054155中描述了一些實(shí)施例的立交橋地圖的生成。pct申請pct/ep2011/054155以引用的方式并入本文。針對(duì)2d或3d渲染矢量地圖(即,非衛(wèi)星圖像地圖),一些實(shí)施例對(duì)單獨(dú)的網(wǎng)格構(gòu)建器9815實(shí)例化以為土地覆蓋物多邊形數(shù)據(jù)(例如,公園、水體等)、道路、興趣點(diǎn)標(biāo)志物、點(diǎn)標(biāo)簽(例如,用于公園的標(biāo)簽等)、道路標(biāo)簽(例如,在地圖瀏覽模式中的道路標(biāo)簽以及導(dǎo)航模式中的道路指示牌)、交通(如果顯示交通的話)、建筑物、光柵數(shù)據(jù)(針對(duì)某些縮放級(jí)別下的某些對(duì)象)以及將要結(jié)合到地圖中的其他數(shù)據(jù)層構(gòu)建網(wǎng)格。
一些實(shí)施例的網(wǎng)格構(gòu)建器9815從圖塊提供器9820接收“空的”虛擬地圖圖塊9860并將“已構(gòu)建的”虛擬地圖圖塊9865返回至圖塊提供器9820。即,圖塊提供器9820向網(wǎng)格構(gòu)建器9815中的每一者發(fā)送一個(gè)或多個(gè)虛擬地圖圖塊9860。虛擬地圖圖塊9860中的每一者指示世界的針對(duì)其繪制網(wǎng)格的區(qū)域。在接收到此類虛擬地圖圖塊9860時(shí),網(wǎng)格構(gòu)建器9815從地圖繪制服務(wù)中識(shí)別所需的地圖圖塊,并將其列表發(fā)送至圖塊處理器9850。
在接收到從圖塊處理器9850返回的圖塊時(shí),網(wǎng)格構(gòu)建器使用存儲(chǔ)在圖塊中的矢量數(shù)據(jù)來為虛擬地圖圖塊所描述的區(qū)域構(gòu)建多邊形網(wǎng)格。在一些實(shí)施例中,網(wǎng)格構(gòu)建器9815使用若干不同的功能來構(gòu)建網(wǎng)格。這些功能包括網(wǎng)格生成器9816、三角測量器9817、陰影生成器9818以及紋理解碼器9819。在一些實(shí)施例中,這些功能(以及附加網(wǎng)格構(gòu)建功能)對(duì)于每個(gè)網(wǎng)格構(gòu)建器而言都是可用的,其中不同的網(wǎng)格構(gòu)建器9815使用不同的功能。例如,負(fù)責(zé)建筑物層的網(wǎng)格構(gòu)建器可使用網(wǎng)格生成器9816和三角測量器9817。此外,若干不同類型的陰影生成器可對(duì)于網(wǎng)格構(gòu)建器9815而言是可用的,包括用于創(chuàng)建動(dòng)態(tài)陰影(其隨著地圖旋轉(zhuǎn)而改變)的第一陰影生成器以及用于創(chuàng)建光柵圖像投射陰影的第二陰影生成器。
在一些實(shí)施例中,網(wǎng)格生成器9816使用圖塊矢量數(shù)據(jù)來生成頂點(diǎn)的網(wǎng)格。三角測量器9817從網(wǎng)格生成三角形,以簡化最終渲染。陰影生成器9818將陰影添加至網(wǎng)格(例如,通過用向渲染器指示繪制陰影或?qū)⒁L制的陰影的暗度的值來標(biāo)記頂點(diǎn)和/或多邊形)。紋理解碼器9819對(duì)(例如,來自樣式表的)紋理信息解碼并將該紋理信息應(yīng)用于網(wǎng)格。在不同的實(shí)施例中,紋理信息可指示在渲染時(shí)將要添加至多邊形的顏色、圖案等,所述紋理信息被編碼到網(wǎng)格中。在構(gòu)建其網(wǎng)格之后,每個(gè)網(wǎng)格構(gòu)建器9815在其網(wǎng)格層已填充的情況下將其虛擬地圖圖塊9865返回至圖塊提供器9820。
在一些實(shí)施例中,可基于樣式表數(shù)據(jù)9855來確定紋理信息。此外,一些實(shí)施例還使用該樣式表數(shù)據(jù)9855來確定陰影、三角測量和/或網(wǎng)格構(gòu)造數(shù)據(jù)。使用樣式表驅(qū)動(dòng)的渲染能夠?qū)Φ貓D輸出的許多方面進(jìn)行簡單修改,因?yàn)榭赏ㄟ^對(duì)樣式表的小修改來進(jìn)行對(duì)紋理、顏色等的改變。因此,可快速動(dòng)態(tài)地創(chuàng)建紋理。樣式表驅(qū)動(dòng)的渲染的示例性有益效果是,促進(jìn)了針對(duì)某些類型的對(duì)象在不同縮放級(jí)別或地理區(qū)域處使用不同紋理。例如,當(dāng)在低縮放級(jí)別(更少的細(xì)節(jié))下查看時(shí),一些實(shí)施例可能將公園著色為簡單的淺綠色。另一方面,在用戶放大至更高的縮放級(jí)別(更多的細(xì)節(jié))時(shí),樣式表指示將圖案(例如,樹葉圖案)應(yīng)用于公園區(qū)域。類似地,可將更高縮放級(jí)別下的圖案添加至建筑物、水體、柏油、城市土地覆蓋物等。這種信息可被編碼到樣式表中,然后網(wǎng)格構(gòu)建器基于圖塊的縮放級(jí)別簡單地將適當(dāng)?shù)募y理信息添加至圖塊網(wǎng)格。
通過對(duì)道路(例如,如城市、郊區(qū)或鄉(xiāng)村道路)加標(biāo)簽,地圖繪制服務(wù)可引起客戶端應(yīng)用針對(duì)圍繞這些道路的土地覆蓋物區(qū)域使用不同紋理。此外,可由服務(wù)器基于指示由土地覆蓋物區(qū)域覆蓋的區(qū)域的種類的指標(biāo)來更新土地覆蓋物區(qū)域標(biāo)簽。例如,一些實(shí)施例(在地圖繪制服務(wù)端上)確定區(qū)域內(nèi)移動(dòng)設(shè)備的密度(例如,基于訪問地圖繪制服務(wù)的設(shè)備的數(shù)量)并為土地覆蓋物生成標(biāo)簽。由客戶端設(shè)備存儲(chǔ)的樣式表(在一些實(shí)施例中,其可由地圖繪制服務(wù)更新)然后指示如何繪制這些土地覆蓋物區(qū)域。類似地,不同樣式可用于渲染不同區(qū)域的方面(例如,針對(duì)土地覆蓋物的沙漠、森林、巖石等;針對(duì)不同州中的標(biāo)簽的不同顏色;針對(duì)不同道路的不同顏色、紋理和/或框,或其他此類區(qū)別)。
圖99示出了針對(duì)一些實(shí)施例將不同紋理應(yīng)用于不同類型的道路。具體地,該圖示出了在一些實(shí)施例的地圖繪制應(yīng)用中的示出了高速公路入口匝道的地圖展示9900。在這種情況下,應(yīng)用識(shí)別標(biāo)記為高速公路的道路以及標(biāo)記為入口匝道或岔道的道路,并使用樣式表來為不同類型的道路提供不同紋理(在這種情況下,為柏油陰影)。
一些實(shí)施例將道路指示為主要或非主要,并相應(yīng)地以不同的方式渲染道路。例如,相比于連接(例如,居住區(qū))道路,干線道路可能被視為主要的。圖100示出了包括一條干線道路和兩條連接道路的地圖展示10000。在這種情況下,干線道路被視為主要道路,因此應(yīng)用將干線道路繪制得更大并具有不同的更明顯的框。此外,在一些實(shí)施例中,應(yīng)用將干線道路著色得更深使得干線道路更明顯地突出。在一些實(shí)施例中,圖99和100示出了使用沉浸式導(dǎo)航圖塊來渲染道路,其中道路被定義為3d多邊形。在一些此類實(shí)施例中,導(dǎo)航圖塊通過道路多邊形頂點(diǎn)的注釋來指示應(yīng)顯示什么道路框。
一些實(shí)施例的地圖圖塊(用于非沉浸式地圖瀏覽視圖,而不是沉浸式導(dǎo)航視圖),另一方面,將道路數(shù)據(jù)存儲(chǔ)為矢量(即,一維構(gòu)造)。但是地圖繪制應(yīng)用以不同的方式來渲染所述道路中的一些,包括以不同于非主要道路的方式來渲染主要道路(例如,干線道路)。圖101示出了非沉浸式地圖展示10100,其示出了在地圖瀏覽視圖中以地圖圖塊渲染道路。在這種情況下,道路中的一者被分類為主要的,并且因此為道路構(gòu)建的網(wǎng)格不同于其他周圍道路。在一些實(shí)施例中,相比其他周圍道路,主要道路被顯示得更深且更粗。
一些實(shí)施例動(dòng)態(tài)地確定地圖內(nèi)的哪些道路是主要的并以不同于地圖內(nèi)的非主要道路的方式顯示主要道路(例如,通過以不同的方式對(duì)道路著色,將主要道路繪制得比非主要道路更粗,為主要道路使用不同的框等等)。為確定地圖內(nèi)的哪些道路是主要的,一些實(shí)施例使用所提供的與將要為地圖繪制的道路的類型有關(guān)的數(shù)據(jù)。例如,道路可被分類為公路、干線道路以及非干線道路,并在一些實(shí)施例中具有子分類。一般來說,干線道路是比非干線道路更大的道路并且承載更多的交通,并且往往在具有非干線道路的交叉口處具有通行權(quán)。因此,在地圖顯示具有干線道路和非干線道路兩者時(shí),一些實(shí)施例將干線道路繪制為主要的。另一方面,在地圖顯示不具有干線道路時(shí),一些實(shí)施例的地圖繪制應(yīng)用把將要繪制的非干線道路中的一些選擇作為主要道路。然而,一些實(shí)施例不是僅檢查地圖的將要為干線道路顯示的實(shí)際部分,而是還識(shí)別位于地圖周圍特定距離的區(qū)域內(nèi)的道路。如果在該區(qū)域內(nèi)存在干線道路,則應(yīng)用不將任何非干線道路繪制為主要的,以便避免在干線道路進(jìn)入地圖顯示時(shí)必須突然改變道路的外觀。
圖塊提供器9820從控制器9875接收特定視圖(即,體積或視圖截錐),該特定視圖表示將要顯示的地圖視圖(即,從虛擬相機(jī)9880可見的體積)。圖塊提供器執(zhí)行任何剔選(例如,識(shí)別將要在虛擬地圖圖塊中顯示的表面區(qū)域),然后將這些虛擬地圖圖塊9860發(fā)送至網(wǎng)格構(gòu)建器9815。
圖塊提供器9820然后從網(wǎng)格構(gòu)建器接收已構(gòu)建的虛擬地圖圖塊9865,并且在一些實(shí)施例中,使用來自虛擬相機(jī)9880的特定視圖來對(duì)已構(gòu)建的網(wǎng)格執(zhí)行剔選(例如,移除太遠(yuǎn)的表面區(qū)域、移除將完全在其他對(duì)象后方的對(duì)象等等)。在一些實(shí)施例中,圖塊提供器9820在不同的時(shí)間從不同的網(wǎng)格構(gòu)建器接收已構(gòu)建的虛擬地圖圖塊9865(例如,由于為完成更多或更少復(fù)雜網(wǎng)格的不同處理時(shí)間,在從圖塊處理器9850接收到必要地圖圖塊之前所經(jīng)過的不同時(shí)間等等)。一旦已返回虛擬地圖圖塊的所有層,一些實(shí)施例的圖塊提供器9820便將這些層放在一起并將數(shù)據(jù)釋放至控制器9875以用于渲染。
在一些實(shí)施例中,圖塊提供器9820可能在網(wǎng)格構(gòu)建器已返回它們的數(shù)據(jù)之前,已經(jīng)接收到將要針對(duì)其構(gòu)建網(wǎng)格的新的虛擬相機(jī)體積。例如,在用戶快速平移或縮放地圖時(shí),由網(wǎng)格構(gòu)建器返回的數(shù)據(jù)可能已過期。在一些實(shí)施例中,圖塊提供器丟棄已構(gòu)建的虛擬地圖圖塊層,或者將它們存儲(chǔ)在存儲(chǔ)器中。在不同實(shí)施例中,是否丟棄已構(gòu)建的虛擬地圖圖塊取決于是否可能將很快需要已構(gòu)建的圖塊(例如,用戶已將虛擬相機(jī)移動(dòng)了多少,導(dǎo)航是否正在運(yùn)行使得應(yīng)用將不可能顯示更舊的數(shù)據(jù))以及存儲(chǔ)器的當(dāng)前正使用的量。
虛擬相機(jī)9880為流水線9800生成將要渲染的體積或表面,并將這種信息發(fā)送至控制器9875。基于地圖將渲染的特位置置和取向(即,3d空間中的用戶從其“查看”地圖的點(diǎn)),虛擬相機(jī)識(shí)別用于實(shí)際發(fā)送至圖塊提供器9820的視場。在一些實(shí)施例中,在地圖繪制應(yīng)用正渲染用于導(dǎo)航的3d視角視圖時(shí),虛擬相機(jī)的視場根據(jù)一算法來確定,該算法基于用戶設(shè)備的移動(dòng)來以定期的時(shí)間間隔生成新的虛擬相機(jī)位置和取向。
在一些實(shí)施例中,控制器9875負(fù)責(zé)管理圖塊提供器9820、虛擬相機(jī)9880和地圖渲染引擎9825。在一些實(shí)施例中,可實(shí)際上對(duì)多個(gè)圖塊提供器實(shí)例化,并且控制器將若干虛擬地圖圖塊(例如,地圖圖塊和建筑物圖塊)放在一起以創(chuàng)建移交至地圖渲染引擎9825的場景。
地圖渲染引擎9825負(fù)責(zé)基于從虛擬相機(jī)發(fā)送的網(wǎng)格圖塊9865來生成繪圖以輸出至顯示設(shè)備。如圖所示,一些實(shí)施例的地圖渲染引擎9825具有若干子過程。在一些實(shí)施例中,由不同的子過程渲染每個(gè)不同的元素,其中渲染引擎9825處理對(duì)不同層的對(duì)象的遮擋(例如,將標(biāo)簽放在不同建筑物上方或后方,在土地覆蓋物的頂部生成道路,等等)。該圖示出了道路渲染過程9826、建筑物渲染過程9827以及標(biāo)簽渲染過程9828。附加過程的實(shí)例包括植被渲染過程、光柵交通渲染過程、光柵道路渲染過程、衛(wèi)星渲染過程、多邊形渲染過程、背景光柵渲染過程等。
渲染過程中的每一者包括渲染參數(shù)集合;所示為道路參數(shù)9836、建筑物參數(shù)9837及標(biāo)簽參數(shù)9838。在一些實(shí)施例中,該數(shù)據(jù)包括關(guān)于如何渲染道路的信息(例如,著色器信息、將要針對(duì)不同類型的道路使用的紋理,等等)。
在一些實(shí)施例中,至少部分地由渲染引擎準(zhǔn)備操作9870來生成這些渲染參數(shù)集合。渲染引擎準(zhǔn)備操作9870包括著色器編譯器9871以及紋理加載器9872,等等。著色器編譯器9871編譯渲染引擎將使用的著色器,并且紋理加載器9872加載紋理信息(例如,加載到渲染參數(shù)中)。在一些實(shí)施例中,這種紋理信息可來自樣式表數(shù)據(jù)9855。
現(xiàn)在將描述一些實(shí)施例中的渲染流水線9800的操作。基于用于以特定縮放級(jí)別查看特定地圖區(qū)域的用戶輸入,虛擬相機(jī)9880指定用于查看地圖區(qū)域的位置和取向,并將該視圖截錐或體積發(fā)送至控制器9875??刂破?875對(duì)一個(gè)或多個(gè)圖塊提供器實(shí)例化。雖然該圖中示出一個(gè)圖塊提供器9820,但一些實(shí)施例允許同時(shí)對(duì)多個(gè)圖塊提供器實(shí)例化(例如,如下面在圖102中所示)。例如,一些實(shí)施例針對(duì)建筑物圖塊以及針對(duì)地圖圖塊對(duì)單獨(dú)的圖塊提供器實(shí)例化。
圖塊提供器9820執(zhí)行任何必要的剔選以生成對(duì)地圖區(qū)域的需要構(gòu)建網(wǎng)格的區(qū)域進(jìn)行識(shí)別的空的虛擬地圖圖塊,并將空的虛擬地圖圖塊9860發(fā)送至網(wǎng)格構(gòu)建器9815,所述網(wǎng)格構(gòu)建器針對(duì)所繪制的地圖的不同層(例如,道路、土地覆蓋物、poi標(biāo)簽等)而被實(shí)例化。網(wǎng)格構(gòu)建器9815使用從地圖繪制服務(wù)接收的對(duì)地圖繪制服務(wù)服務(wù)器上可用的不同圖塊進(jìn)行識(shí)別(即,識(shí)別為四叉樹的節(jié)點(diǎn))的清單。網(wǎng)格構(gòu)建器9815請求來自圖塊處理器9850的特定地圖圖塊,該圖塊處理器移除任何重復(fù)的請求并將圖塊列表9835發(fā)送至加載器/解壓縮器9810。
加載器/解壓縮器9810確定所請求的圖塊是否存儲(chǔ)在圖塊高速緩存(非易失性存儲(chǔ)高速緩存9853或易失性存儲(chǔ)高速緩存9854)中,并將任何此類圖塊返回至圖塊處理器9850以用于分配至請求網(wǎng)格構(gòu)建器9815。針對(duì)尚未本地存儲(chǔ)的任何圖塊,加載器/解壓縮器9810向請求器9805發(fā)送請求,該請求器將圖塊列表9836(圖塊列表9835的精減型式)發(fā)送至遠(yuǎn)程地圖繪制服務(wù)服務(wù)器。請求器9805從地圖繪制服務(wù)接收壓縮形式9840的所請求的地圖圖塊,并將所述所請求的地圖圖塊轉(zhuǎn)發(fā)至加載器/解壓縮器9810。加載器/解壓縮器9810對(duì)這些圖塊解壓縮(例如,解碼),將它們存儲(chǔ)在其高速緩存中,并將解壓縮的圖塊9845發(fā)送至圖塊處理器9850以用于返回至網(wǎng)格構(gòu)建器9815。
一旦特定網(wǎng)格構(gòu)建器9815已接收到其地圖圖塊,其便開始使用存儲(chǔ)在地圖圖塊中的矢量數(shù)據(jù)來為從圖塊提供器9820發(fā)送的虛擬地圖圖塊構(gòu)建網(wǎng)格。在針對(duì)其地圖層構(gòu)建網(wǎng)格之后,網(wǎng)格構(gòu)建器9815將已構(gòu)建的虛擬地圖圖塊9865發(fā)送回圖塊提供器9820。圖塊提供器9820等待直到其從各個(gè)網(wǎng)格構(gòu)建器9815接收到所有虛擬地圖圖塊,然后將這些虛擬地圖圖塊層疊在一起,并將已完成的虛擬地圖圖塊發(fā)送至控制器9875。控制器將來自其所有圖塊提供器的已返回圖塊(例如,虛擬地圖圖塊和虛擬建筑物圖塊)縫合在一起,并將該場景發(fā)送至渲染引擎9825。地圖渲染引擎9825使用地圖圖塊中的信息來繪制用于顯示的場景。
上述流水線針對(duì)來自單個(gè)虛擬相機(jī)的單個(gè)場景而示出。一些實(shí)施例,實(shí)際上,同時(shí)對(duì)若干虛擬相機(jī)和若干圖塊提供器進(jìn)行實(shí)例化,能夠快速地從一個(gè)場景切換至另一個(gè)場景或者從場景的一個(gè)視圖切換至另一個(gè)視圖(例如,在不同縮放級(jí)別之間切換,或者從非沉浸式3d地圖視圖切換成沉浸式3d地圖視圖以便進(jìn)入導(dǎo)航)。圖102概念性地示出了對(duì)用于地圖區(qū)域的兩個(gè)不同視圖的兩個(gè)虛擬相機(jī)10205和10210實(shí)例化的控制器10200。如圖所示,第一虛擬相機(jī)提供第一地圖區(qū)域的非沉浸式3d視圖,而第二虛擬相機(jī)提供第二地圖區(qū)域的沉浸式3d視圖。第一地圖區(qū)域和第二地圖區(qū)域可能僅是相同地圖區(qū)域的不同視圖,或者地圖的不同區(qū)域的視圖。在不同實(shí)施例中,兩個(gè)虛擬相機(jī)10205和10210可能正提供地圖區(qū)域的來自不同縮放級(jí)別的視圖,從而指定查看地圖區(qū)域的不同位置和取向。
首先,控制器10200正接收來自第一虛擬相機(jī)10205的場景,并對(duì)非沉浸式3d地圖圖塊提供器10215和建筑物圖塊提供器10220進(jìn)行實(shí)例化以便顯示具有建筑物的非沉浸式3d地圖。這些圖塊提供器中的每一者對(duì)其所需的網(wǎng)格構(gòu)建器10225和10230的集合進(jìn)行實(shí)例化以便為非沉浸式3d場景構(gòu)建虛擬地圖圖塊。一旦控制器已從圖塊提供器10215和10220接收到這些虛擬圖塊,控制器10200便將這些虛擬圖塊拼接在一起以形成場景10235。一旦控制器接收到應(yīng)用可能正從非沉浸式查看模式切換至沉浸式查看模式(例如,當(dāng)用戶借助用于進(jìn)入導(dǎo)航的選項(xiàng)進(jìn)入路線時(shí))的指示,控制器10200便對(duì)第二虛擬相機(jī)10210實(shí)例化以提供地圖區(qū)域的視圖?;诖?,控制器對(duì)沉浸式3d圖塊提供器10240實(shí)例化,該沉浸式3d圖塊提供器繼而對(duì)其網(wǎng)格構(gòu)建器10245的集合實(shí)例化。在對(duì)沉浸式3d流水線實(shí)例化時(shí),控制器繼續(xù)將非沉浸式3d場景10235提供至渲染引擎10250。一旦控制器10200已(i)從沉浸式3d圖塊提供器10240接收到已構(gòu)建的虛擬地圖圖塊并且(ii)接收到進(jìn)入沉浸式3d模式的命令(例如,由于用戶已開始路線的導(dǎo)航),控制器便開始將沉浸式3d場景10255提供至渲染引擎10250。在一些實(shí)施例中,從建筑物圖塊提供器10220接收的虛擬建筑物圖塊用于沉浸式和非沉浸式3d場景兩者。
圖103概念性地示出了一些實(shí)施例的用于預(yù)加載導(dǎo)航圖塊以進(jìn)入導(dǎo)航的過程10300。將參考圖104描述過程10300,圖104示出了經(jīng)過六個(gè)階段10405-10430在應(yīng)用從針對(duì)地圖瀏覽的非沉浸式地圖視圖過渡到針對(duì)導(dǎo)航的沉浸式地圖視圖顯示地圖繪制應(yīng)用的設(shè)備10400。
如圖所示,過程10300以請求(在10305處)路線指令開始。在一些實(shí)施例中,當(dāng)用戶選擇地圖上的位置然后選擇“路線”按鈕(例如,針對(duì)該位置顯示的標(biāo)簽中汽車形狀的按紐)以用于請求從用戶當(dāng)前位置到所選擇位置的路線時(shí),可能發(fā)生這種情況。用戶還可能使用搜索字段來搜索從用戶當(dāng)前位置到所選擇位置的路線。響應(yīng)于用戶輸入,地圖繪制應(yīng)用向地圖繪制服務(wù)發(fā)出對(duì)路線指令的請求。圖104的第一階段10405示出了用戶選擇位置“pizzaplace”的快速路線按鈕以便生成從用戶當(dāng)前位置(靠近設(shè)備10400的屏幕的中心)到所選擇位置的路線。
在傳輸請求之后,過程10310針對(duì)路線的至少一部分接收(在10310處)路線指令和導(dǎo)航圖塊。地圖繪制服務(wù)器接收路線請求,生成從開始點(diǎn)(例如,用戶位置)到結(jié)束點(diǎn)的最佳路線,并將路線指令下載至用戶。在一些實(shí)施例中,服務(wù)器假設(shè)用戶可能進(jìn)入導(dǎo)航模式以沿路線行進(jìn),并且因此還下載導(dǎo)航圖塊(即,用于以細(xì)節(jié)縮放級(jí)別的特定高級(jí)別來渲染沿路線的區(qū)域的圖塊)。
一些實(shí)施例的地圖繪制應(yīng)用包括自適應(yīng)圖塊加載機(jī)制。在一些實(shí)施例中,自適應(yīng)圖塊加載機(jī)制在路線導(dǎo)航開始時(shí)下載針對(duì)定義距離的地圖圖塊。一旦用戶開始沿路線導(dǎo)航行進(jìn),地圖繪制應(yīng)用便基于指示用戶致力于完成路線的因素來增加所下載的圖塊量。例如,在經(jīng)過了一定義距離間隔時(shí),一些實(shí)施例的地圖繪制應(yīng)用增加將要下載的圖塊量。例如,在沿路線導(dǎo)航行進(jìn)每10英里之后,地圖繪制應(yīng)用針對(duì)前方的路線下載漸增的地圖圖塊量(例如,前方接下來10英里的圖塊、前方接下來20英里的圖塊等)??墒褂闷渌夹g(shù)來自適應(yīng)地下載圖塊以便提高節(jié)能(并且,如果用戶未完成路線,還節(jié)省下載時(shí)間)。
返回圖103,過程10300接下來對(duì)用于導(dǎo)航圖塊的渲染流水線實(shí)例化(在10315處)并同時(shí)顯示路線信息。在下載路線時(shí),地圖繪制應(yīng)用顯示靜態(tài)圖(在一些實(shí)施例中,為2d或3d),其中路線被覆蓋。然而,在后臺(tái)中,應(yīng)用準(zhǔn)備開始使用導(dǎo)航地圖圖塊來以動(dòng)畫方式顯示。因此,過程對(duì)虛擬相機(jī)、一個(gè)或多個(gè)圖塊提供器以及一系列網(wǎng)格構(gòu)建器進(jìn)行實(shí)例化以用于導(dǎo)航渲染,并且開始基于所下載的導(dǎo)航圖塊生成虛擬圖塊。
此外,過程準(zhǔn)備(在10320處)用于導(dǎo)航圖塊的渲染引擎。如上所述,這種準(zhǔn)備可包括編譯供渲染引擎使用的著色器并且加載也供渲染引擎使用的紋理。圖104的第二階段10410示出了地圖繪制應(yīng)用顯示到達(dá)位置“pizzaplace”的路線10435。這時(shí),地圖繪制應(yīng)用將已開始下載沿路線的沉浸式3d圖塊,并且在用戶選擇進(jìn)入該路線的導(dǎo)航的情況下,開始對(duì)用于這些圖塊的渲染流水線進(jìn)行實(shí)例化。
過程10300然后確定(在10325處)是否進(jìn)入導(dǎo)航。一些實(shí)施例的地圖繪制應(yīng)用在顯示路線時(shí),顯示可選用戶界面項(xiàng),用戶可用該用戶界面項(xiàng)來開始路線上的導(dǎo)航。在用戶選擇開始項(xiàng)時(shí),應(yīng)用然后進(jìn)入導(dǎo)航(只要導(dǎo)航圖塊被下載并且渲染可開始)。在用戶尚未進(jìn)入導(dǎo)航時(shí),過程確定(在10330處)是否已取消路線。如果用戶進(jìn)行另一個(gè)搜索(針對(duì)不同的位置或不同的路線),在不進(jìn)入導(dǎo)航的情況下關(guān)閉所顯示的路線,關(guān)閉地圖繪制應(yīng)用等等,則可能發(fā)生這種情況。在用戶尚未取消路線時(shí),過程返回10325以確定是否進(jìn)入導(dǎo)航。這兩個(gè)操作有效地用作“等待”狀態(tài),在該狀態(tài)中,地圖繪制應(yīng)用顯示路線并等待用于開始路線或取消路線的用戶輸入(并同時(shí)還可能響應(yīng)于用于查看路線指令、沿路線移動(dòng)地圖等的用戶輸入)。
在用戶選擇進(jìn)入導(dǎo)航時(shí),過程10300開始(在10335處)在路線開始處渲染用于導(dǎo)航圖塊的動(dòng)畫。由于渲染流水線已生成網(wǎng)格并已準(zhǔn)備渲染引擎,因此開始動(dòng)畫的滯后時(shí)間應(yīng)是最小的。上文詳細(xì)描述了用于基于用戶位置確定虛擬相機(jī)的路徑以便確定動(dòng)畫的過程。當(dāng),另一方面,用戶取消路線時(shí),過程在假設(shè)用戶將不會(huì)導(dǎo)航路線時(shí),對(duì)渲染流水線去實(shí)例化(在10340處)。一些實(shí)施例還將虛擬導(dǎo)航圖塊從存儲(chǔ)器中移除,但其他實(shí)施例則在可能時(shí)將虛擬導(dǎo)航圖塊高速緩存一時(shí)間段。
在圖104的第二階段10410處,用戶選擇“開始”ui控件10440。因此,應(yīng)用開始進(jìn)入導(dǎo)航,使用預(yù)加載的沉浸式3d圖塊以及預(yù)實(shí)例化的渲染流水線來開始以最小的延遲渲染場景。如在第三到第六階段10415-10430中所示,一些實(shí)施例使用從2d(或3d)的非沉浸式地圖視圖到3d沉浸式地圖視圖的影片過渡。應(yīng)用顯示從其當(dāng)前狀態(tài)(在10410中所示的狀態(tài))開始并從第一虛擬相機(jī)視圖平滑地過渡至新的虛擬相機(jī)視圖,該新的虛擬相機(jī)視圖更為放大并且指向路線開始的方向。在這種情況下,虛擬相機(jī)可執(zhí)行平動(dòng)、縮放和旋轉(zhuǎn)操作的組合以便到達(dá)用于導(dǎo)航的路線的起點(diǎn)。此外,一些實(shí)施例在第一虛擬相機(jī)(渲染用于地圖瀏覽的非沉浸式地圖圖塊)與第二虛擬相機(jī)(渲染用于導(dǎo)航的更沉浸式的導(dǎo)航圖塊)之間使用淡入淡出操作。如圖所示,在第三階段10415處,第一虛擬相機(jī)已朝著第二虛擬相機(jī)的最終位置移動(dòng),其中地圖現(xiàn)在已稍微旋轉(zhuǎn)和縮放。仍渲染非沉浸式地圖圖塊以用于在此時(shí)顯示。在第四階段10420和第五階段10425中,地圖繪制應(yīng)用現(xiàn)在正從第二虛擬相機(jī)的視角進(jìn)行渲染,其中沉浸式圖塊被渲染(如由柏油多邊形道路所示)。經(jīng)過這些階段,第二虛擬相機(jī)旋轉(zhuǎn)到其在導(dǎo)航位置指示符(即,位置器)后方的最終位置中,如第六階段10430中所示。
一些實(shí)施例的地圖繪制和導(dǎo)航應(yīng)用在單個(gè)集成應(yīng)用中執(zhí)行這種過渡,而不離開該單個(gè)應(yīng)用。即,地圖和路線瀏覽模式(在階段10405和10410中示出)以及導(dǎo)航模式(在階段10415-10430中示出)是相同集成地圖繪制、搜索和導(dǎo)航應(yīng)用的不同模式。如果用戶在導(dǎo)航模式期間選擇“結(jié)束”按鈕,則一些實(shí)施例用平滑的影片過渡或通過在不移動(dòng)虛擬相機(jī)的情況下進(jìn)行的屏幕刷新,來過渡回到地圖瀏覽模式。
d.集成地圖繪制和導(dǎo)航應(yīng)用
圖105概念性地示出了狀態(tài)圖10500,其描述了一些實(shí)施例的集成地圖繪制、搜索和導(dǎo)航應(yīng)用(例如,上述章節(jié)中所描述的客戶端側(cè)應(yīng)用)的不同狀態(tài)以及這些狀態(tài)之間的過渡。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,一些實(shí)施例的應(yīng)用將具有與所有不同類型的輸入事件相關(guān)的許多不同狀態(tài),并且狀態(tài)圖10500具體關(guān)注這些事件的子集。狀態(tài)圖10500描述并涉及用于改變應(yīng)用的狀態(tài)的各種手勢交互(例如,多點(diǎn)觸摸手勢)。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,還可針對(duì)類似的選擇操作使用各種其他交互,諸如光標(biāo)控制器手勢及按鈕點(diǎn)擊、鍵盤輸入、觸摸板/觸控板輸入等。
在用戶最初打開地圖繪制應(yīng)用時(shí),應(yīng)用處于狀態(tài)10505(地圖瀏覽狀態(tài))中。在該狀態(tài)10505中,應(yīng)用將已生成并顯示地圖視圖。為生成并顯示該地圖視圖,一些實(shí)施例的應(yīng)用針對(duì)區(qū)域識(shí)別所需的地圖圖塊集合,請求所述地圖圖塊(例如,從地圖繪制服務(wù)服務(wù)器),從虛擬相機(jī)的特位置置、取向和視角生成地圖圖塊的視圖,并將該地圖視圖渲染至設(shè)備顯示器。當(dāng)在狀態(tài)10505中時(shí),地圖視圖是靜態(tài)的。當(dāng)應(yīng)用處于狀態(tài)10505中時(shí),用戶可執(zhí)行多個(gè)操作以修改地圖視圖、搜索實(shí)體(例如,興趣點(diǎn)、地址等)、檢索用于導(dǎo)航的路線等等。
在一些實(shí)施例中,集成應(yīng)用在具有集成觸敏顯示器的設(shè)備上顯示。地圖上的各種手勢交互可使應(yīng)用執(zhí)行對(duì)地圖視圖的不同修改(例如,平移、旋轉(zhuǎn)、縮放、修改地圖視角等)。當(dāng)集成應(yīng)用在地圖顯示上接收到手勢交互(與覆蓋在地圖顯示上的各種浮動(dòng)或非浮動(dòng)控件上的觸摸輸入相反)時(shí),應(yīng)用過渡至狀態(tài)10510以執(zhí)行手勢輸入辨認(rèn)。
手勢輸入辨認(rèn)狀態(tài)10510區(qū)分不同類型的手勢輸入并將這些類型的輸入轉(zhuǎn)譯成不同的地圖視圖修改操作。在一些實(shí)施例中,地圖繪制應(yīng)用接收如由具有集成觸敏顯示器的設(shè)備的操作系統(tǒng)所轉(zhuǎn)譯的手勢輸入。操作系統(tǒng)將觸摸輸入轉(zhuǎn)譯成手勢類型和位置(例如,在坐標(biāo)(x,y)處的“觸擊”、用在兩個(gè)不同位置處的單獨(dú)觸摸輸入進(jìn)行的“捏合”操作,等等)。在狀態(tài)10510下,一些實(shí)施例的集成的地圖繪制應(yīng)用將這些轉(zhuǎn)譯成不同的地圖視圖修改操作。
在應(yīng)用接收到第一類型的手勢輸入(例如,在地圖視圖上以旋轉(zhuǎn)運(yùn)動(dòng)一起移動(dòng)的兩個(gè)單獨(dú)的觸摸輸入)時(shí),應(yīng)用過渡至狀態(tài)10515以旋轉(zhuǎn)地圖。為旋轉(zhuǎn)地圖視圖,一些實(shí)施例修改虛擬相機(jī)的決定渲染地圖的哪個(gè)部分以創(chuàng)建地圖視圖的位置和/或取向。當(dāng)在3d模式中時(shí),例如,地圖繪制應(yīng)用圍繞特定位置(例如,觸摸輸入的中心、顯示器的中心、識(shí)別用戶位置的位置指示符等)旋轉(zhuǎn)虛擬相機(jī)。在第一類型的手勢輸入繼續(xù)時(shí),地圖繪制應(yīng)用保留在狀態(tài)10515中以繼續(xù)旋轉(zhuǎn)地圖。
在用戶釋放第一類型的手勢輸入時(shí),一些實(shí)施例的應(yīng)用過渡至狀態(tài)10530以執(zhí)行慣性計(jì)算。在一些實(shí)施例中,在用戶釋放某些類型的觸摸輸入之后,應(yīng)用繼續(xù)執(zhí)行相關(guān)聯(lián)的地圖視圖修改一特定量的時(shí)間和/或距離。在這種情況下,在用戶釋放旋轉(zhuǎn)輸入之后,應(yīng)用過渡至慣性計(jì)算狀態(tài)10530以計(jì)算這種旋轉(zhuǎn)應(yīng)執(zhí)行的附加旋轉(zhuǎn)量和時(shí)間。在一些實(shí)施例中,應(yīng)用使旋轉(zhuǎn)從地圖正在旋轉(zhuǎn)的(角)速度減慢,如同向地圖施加“摩擦”力一樣。如此,一些實(shí)施例的慣性計(jì)算基于第一類型的手勢輸入的速度。應(yīng)用從狀態(tài)10530過渡回到應(yīng)用先前所在的地圖修改狀態(tài)。即,在應(yīng)用從狀態(tài)10515(旋轉(zhuǎn)狀態(tài))過渡至慣性計(jì)算狀態(tài)10530時(shí),在執(zhí)行慣性計(jì)算之后,應(yīng)用過渡回到狀態(tài)10515。在地圖的旋轉(zhuǎn)完成之后,應(yīng)用過渡回到狀態(tài)10505。
在應(yīng)用接收到第二類型的手勢輸入(例如,在地圖視圖上移動(dòng)的單個(gè)觸摸輸入)時(shí),應(yīng)用過渡至狀態(tài)10520以平移地圖。為平移地圖視圖,一些實(shí)施例修改虛擬相機(jī)的決定渲染地圖的哪個(gè)部分以創(chuàng)建地圖視圖的位置。這使地圖看起來像在從源于第二類型的手勢輸入的方向的方向上滑動(dòng)。在一些實(shí)施例中,當(dāng)?shù)貓D視圖在3d視角模式中時(shí),平移過程涉及執(zhí)行觸摸輸入的位置與平面地圖上的位置的關(guān)聯(lián),以便避免地圖視圖中的突然的不期望的跳躍。在第二類型的手勢輸入繼續(xù)時(shí),地圖繪制應(yīng)用保留在狀態(tài)10520中以繼續(xù)平移地圖。
在用戶釋放第二類型的手勢輸入時(shí),一些實(shí)施例的應(yīng)用過渡至狀態(tài)10530以執(zhí)行慣性計(jì)算。在一些實(shí)施例中,在用戶釋放某些類型的觸摸輸入之后,應(yīng)用繼續(xù)執(zhí)行相關(guān)聯(lián)的地圖視圖修改一特定量的時(shí)間和/或距離。在這種情況下,在用戶釋放平移輸入之后,應(yīng)用過渡至慣性計(jì)算狀態(tài)10530以計(jì)算移動(dòng)地圖視圖的附加量(即,移動(dòng)虛擬相機(jī))以及這種移動(dòng)應(yīng)執(zhí)行的時(shí)間。在一些實(shí)施例中,應(yīng)用使平移移動(dòng)從地圖正在平移的速度減慢,如同向地圖施加“摩擦”力一樣。如此,一些實(shí)施例的慣性計(jì)算基于第二類型的手勢輸入的速度。應(yīng)用從狀態(tài)10530過渡回到應(yīng)用先前所在的地圖修改狀態(tài)。即,在應(yīng)用從狀態(tài)10520(平移狀態(tài))過渡至慣性計(jì)算狀態(tài)10530時(shí),在執(zhí)行慣性計(jì)算之后,應(yīng)用過渡回到狀態(tài)10520。在地圖的平移完成之后,應(yīng)用過渡回到狀態(tài)10505。
在應(yīng)用接收到第三類型的手勢輸入(例如,移動(dòng)得更靠近在一起或進(jìn)一步分開的兩個(gè)單獨(dú)的觸摸輸入)時(shí),應(yīng)用過渡至狀態(tài)10525以放大或縮小地圖。為改變地圖視圖的縮放級(jí)別,一些實(shí)施例修改虛擬相機(jī)的決定渲染地圖的哪個(gè)部分以創(chuàng)建地圖視圖的位置(即,高度)。這使地圖視圖包括更多(如果縮小)或更少(如果放大)的地圖。在一些實(shí)施例中,在用戶放大或縮小時(shí),應(yīng)用檢索不同的地圖圖塊(針對(duì)不同的縮放級(jí)別)以生成并渲染新的地圖視圖。在第三類型的手勢輸入繼續(xù)時(shí),地圖繪制應(yīng)用保留在狀態(tài)10525中以繼續(xù)平移地圖。
在用戶釋放第二類型的手勢輸入時(shí),一些實(shí)施例的應(yīng)用過渡至狀態(tài)10530以執(zhí)行慣性計(jì)算。在一些實(shí)施例中,在用戶釋放某些類型的觸摸輸入之后,應(yīng)用繼續(xù)執(zhí)行相關(guān)聯(lián)的地圖視圖修改一特定量的時(shí)間和/或距離(即,將虛擬相機(jī)移動(dòng)得更高或更低)。在這種情況下,在用戶釋放縮放輸入之后,應(yīng)用過渡至慣性計(jì)算狀態(tài)10530以計(jì)算縮放地圖視圖的附加量(即,移動(dòng)虛擬相機(jī))以及這種移動(dòng)應(yīng)執(zhí)行的時(shí)間。在一些實(shí)施例中,應(yīng)用使縮放移動(dòng)從地圖正在放大或縮小的速度(即,虛擬相機(jī)改變高度的速度)減慢,如同向相機(jī)施加“摩擦”力一樣。如此,一些實(shí)施例的慣性計(jì)算基于第三類型的手勢輸入的速度。應(yīng)用從狀態(tài)10530過渡回到應(yīng)用先前所在的地圖修改狀態(tài)。即,在應(yīng)用從狀態(tài)10525(縮放狀態(tài))過渡至慣性計(jì)算狀態(tài)10530時(shí),在執(zhí)行慣性計(jì)算之后,應(yīng)用過渡回到狀態(tài)10525。在地圖的縮放完成之后,應(yīng)用過渡回到狀態(tài)10505。
為簡單起見,狀態(tài)圖10500示出了使用相同慣性計(jì)算過程(狀態(tài)10530)的地圖平移、縮放和旋轉(zhuǎn)過程。然而,在一些實(shí)施例中,這些不同地圖修改過程中的每一者實(shí)際上使用不同的慣性計(jì)算來針對(duì)其特定類型的移動(dòng)識(shí)別減慢和停止。此外,在接收到輸入時(shí)而不是在用戶移除手勢輸入時(shí),一些實(shí)施例計(jì)算并修改慣性變量。
在應(yīng)用接收到第四類型的手勢輸入(例如,在觸敏顯示器上一致地向上或向下移動(dòng)的兩個(gè)單獨(dú)的觸摸輸入)時(shí),應(yīng)用過渡至狀態(tài)10535以修改地圖的視角視圖。為改變地圖的視角視圖,一些實(shí)施例在地圖上沿弧線移動(dòng)虛擬相機(jī),從而修改虛擬相機(jī)的位置和取向(在相機(jī)使其視場的中心保持在地圖上的特位置置處時(shí))。在一些實(shí)施例中,不同的縮放級(jí)別使用虛擬相機(jī)移動(dòng)所沿的不同弧線。這些弧線中的每一者具有一頂部點(diǎn),在該頂部點(diǎn)處,虛擬相機(jī)正筆直地向下指,從而提供地圖的2d視角視圖。此外,每條弧線具有底部點(diǎn),該底部點(diǎn)為弧線上的虛擬相機(jī)可移動(dòng)至的最低點(diǎn)。因此,在一些實(shí)施例中,第四類型的手勢輸入可使應(yīng)用在2d地圖視圖與3d視角視圖之間改變。在第四類型的手勢輸入繼續(xù)時(shí),地圖繪制應(yīng)用保留在狀態(tài)10535中以繼續(xù)修改地圖的視角視圖。
在用戶釋放第二類型的手勢輸入時(shí),一些實(shí)施例的應(yīng)用過渡至狀態(tài)10540以執(zhí)行慣性計(jì)算。在一些實(shí)施例中,在用戶釋放某些類型的觸摸輸入之后,應(yīng)用繼續(xù)執(zhí)行相關(guān)聯(lián)的地圖視圖修改一特定量的時(shí)間和/或距離(即,將虛擬相機(jī)移動(dòng)得更高或更低)。在這種情況下,在用戶釋放視角視圖改變輸入之后,應(yīng)用過渡至慣性計(jì)算狀態(tài)10540以計(jì)算修改地圖視圖的視角的附加量(即,沿其弧線移動(dòng)虛擬相機(jī))以及這種移動(dòng)應(yīng)執(zhí)行的時(shí)間。在一些實(shí)施例中,應(yīng)用使該移動(dòng)從地圖正在改變視角的速度(即,虛擬相機(jī)沿其弧線移動(dòng)的速度)減慢,如同向相機(jī)施加“摩擦”力一樣。如此,一些實(shí)施例的慣性計(jì)算基于執(zhí)行第四類型的手勢輸入的速度。
此外,針對(duì)視角改變操作,一些實(shí)施例過渡至回彈計(jì)算狀態(tài)10545。如所述,視角改變操作具有在一些實(shí)施例中允許的最大和最小視角偏移,該最大和最小視角偏移可取決于當(dāng)前地圖視圖的縮放級(jí)別。因此,除慣性計(jì)算之外,應(yīng)用還在狀態(tài)10545下執(zhí)行回彈計(jì)算。回彈計(jì)算使用慣性計(jì)算來確定是否將達(dá)到沿虛擬相機(jī)弧線的最大點(diǎn),并且如果是,則確定虛擬相機(jī)在該點(diǎn)處的速度。一些實(shí)施例允許虛擬相機(jī)稍微移動(dòng)越過該最大點(diǎn)以抵達(dá)“回彈”點(diǎn),在該回彈點(diǎn)處,應(yīng)用使虛擬相機(jī)在其弧線上掉轉(zhuǎn),從而將虛擬相機(jī)朝著該最大點(diǎn)移回。一些實(shí)施例僅在虛擬相機(jī)弧線的一端(例如,弧線的底部)包括此類反彈功能,而其他實(shí)施例在弧線的兩端均包括該功能。應(yīng)用從回彈計(jì)算狀態(tài)10545過渡回到慣性計(jì)算狀態(tài)10540,然后過渡回到視角改變狀態(tài)10535以顯示地圖視圖移動(dòng)。此外,在用戶將第四類型的觸摸輸入執(zhí)行得足夠久并且視角達(dá)到其最大點(diǎn)時(shí),應(yīng)用直接從狀態(tài)10535過渡至狀態(tài)10545以計(jì)算回彈信息然后過渡回到狀態(tài)10535。在對(duì)地圖的視角視圖的修改完成之后,應(yīng)用過渡回到狀態(tài)10505。
上述狀態(tài)涉及地圖展示上的各種多點(diǎn)觸摸手勢,集成地圖繪制、搜索和導(dǎo)航應(yīng)用將這些手勢轉(zhuǎn)譯成對(duì)地圖展示的不同修改。各種其他觸摸輸入也可使應(yīng)用改變狀態(tài)并執(zhí)行各種功能。例如,一些實(shí)施例將3d可選項(xiàng)覆蓋在地圖視圖上(例如,作為浮動(dòng)控件),并且選擇(例如,用觸擊輸入)該3d項(xiàng)使應(yīng)用過渡至10535以修改地圖視圖的視角。在地圖視圖在3d視角視圖中開始時(shí),應(yīng)用將視角修改為2d視圖;在地圖視圖在2d視圖中開始時(shí),應(yīng)用將視角修改為3d視圖。在修改之后,應(yīng)用返回至狀態(tài)10505。
在應(yīng)用為緊密集成的地圖繪制、搜索、路線規(guī)劃和導(dǎo)航應(yīng)用時(shí),用戶可輕松地從地圖瀏覽狀態(tài)中訪問路線規(guī)劃功能。在選擇特定ui控件(例如,路線進(jìn)入按鈕)時(shí),應(yīng)用過渡至路線進(jìn)入狀態(tài)10570。在路線進(jìn)入狀態(tài)下,一些實(shí)施例顯示觸摸屏鍵盤,用戶可用該觸摸屏鍵盤來將位置(例如,地址、地點(diǎn)名稱、地點(diǎn)類型等)輸入到“至”和“從”字段兩者中以便請求路線。在用戶輸入字符的同時(shí),應(yīng)用保留在狀態(tài)10570中并基于最新路線、最新搜索、與針對(duì)搜索條目所描述的自動(dòng)完成類似的自動(dòng)完成等來提供建議。如果在該階段中用戶選擇取消ui控件,則應(yīng)用轉(zhuǎn)回狀態(tài)10505而不檢索路線。
在用戶選擇路線(例如,通過輸入“至”位置和“從”位置)時(shí),應(yīng)用過渡至路線顯示狀態(tài)10575。在該狀態(tài)下,應(yīng)用在地圖視圖上顯示從第一所選擇位置到第二所選擇位置的一條或多條路線(例如,通過將路線線條覆蓋在地圖視圖上)。一些實(shí)施例自動(dòng)選擇路線中的第一者。在應(yīng)用保留在狀態(tài)10575中時(shí),用戶可選擇任意其他路線(例如,通過在未選擇的路線上觸擊)(但修改路線線條的顯示以指示其他路線的選擇)。此外,當(dāng)在狀態(tài)10575中時(shí),一些實(shí)施例的應(yīng)用顯示與路線規(guī)劃和導(dǎo)航相關(guān)的不同ui控件,包括方向列表控件、導(dǎo)航開始控件等等。在一些實(shí)施例中,也可從其他狀態(tài)中訪問路線顯示狀態(tài)10575。例如,如果用戶在位置旗幟上選擇快速路線ui控件,則應(yīng)用檢索從設(shè)備的當(dāng)前位置到與旗幟相關(guān)聯(lián)的位置的一條或多條路線。
另外,在路線于其上顯示的地圖上的各種手勢交互可使應(yīng)用執(zhí)行對(duì)地圖視圖的不同修改(例如,平移、旋轉(zhuǎn)、縮放、修改地圖視角等)。當(dāng)集成應(yīng)用在處于路線顯示狀態(tài)10575中的同時(shí)在地圖顯示上接收手勢交互時(shí),應(yīng)用過渡至狀態(tài)10510以執(zhí)行手勢輸入辨認(rèn),其中所有手勢地圖修改操作(例如,對(duì)狀態(tài)10515-10545的推定)均是可用的。即,應(yīng)用將手勢輸入轉(zhuǎn)譯成類似于上文針對(duì)狀態(tài)10515-10545所描述的那些的平移、旋轉(zhuǎn)、縮放和/或視角改變操作,所述操作具有針對(duì)虛擬相機(jī)移動(dòng)的類似的慣性特征和回彈特征。雖然操作10515-10545返回至地圖瀏覽狀態(tài)10505,但從路線顯示狀態(tài)10575中訪問的推定操作返回至路線顯示狀態(tài)10575。
根據(jù)用戶所選擇的不同控件,應(yīng)用可從路線顯示狀態(tài)10575過渡到各種不同的模式中。在用戶選擇用于清理路線的ui控件時(shí),應(yīng)用過渡回到狀態(tài)10505以顯示不具有任何路線的地圖。此外,集成應(yīng)用可從路線顯示狀態(tài)10575進(jìn)入一個(gè)或多個(gè)導(dǎo)航模態(tài)。
當(dāng)在狀態(tài)10575下顯示的所選擇的路線在設(shè)備的當(dāng)前位置處開始并且用戶選擇導(dǎo)航開始控件時(shí),應(yīng)用過渡至導(dǎo)航狀態(tài)10580。在一些實(shí)施例中,應(yīng)用顯示從地圖視圖到用于導(dǎo)航的更具沉浸式的3d視圖的影片過渡。在一些實(shí)施例的導(dǎo)航狀態(tài)10580內(nèi),虛擬相機(jī)沿循用戶沿所選擇路線的位置以便呈現(xiàn)路線的即將到來的部分。在路線完成(設(shè)備到達(dá)目的地位置)或者用戶選擇用于結(jié)束導(dǎo)航的控件時(shí),應(yīng)用過渡至狀態(tài)10505以呈現(xiàn)地圖瀏覽視圖10505。
在一些實(shí)施例中,在路線于其上顯示的地圖上的各種手勢交互可使應(yīng)用在處于導(dǎo)航模式10580中的同時(shí)執(zhí)行對(duì)地圖視圖的不同修改(例如,平移、旋轉(zhuǎn)、縮放、修改地圖視角等)。在一些實(shí)施例中,所述地圖修改操作中只有一些在導(dǎo)航模式中是可用的。例如,一些實(shí)施例允許用戶放大或縮小,但不允許對(duì)地圖的任何其他修改。因此,在用戶提供手勢輸入時(shí),手勢輸入辨認(rèn)狀態(tài)10510濾除不與縮放操作相關(guān)聯(lián)的手勢輸入的類型(并且隨后應(yīng)用返回至狀態(tài)10580)。在接收到與縮放操作相關(guān)聯(lián)的手勢輸入的類型時(shí),手勢輸入辨認(rèn)狀態(tài)識(shí)別該輸入,并且應(yīng)用過渡至類似于狀態(tài)10525的狀態(tài),以改變地圖的縮放級(jí)別(在一些實(shí)施例中,借助慣性計(jì)算)。
其他實(shí)施例可實(shí)現(xiàn)不同的地圖修改操作。例如,在一些實(shí)施例中,在處于導(dǎo)航模式中時(shí),所有手勢地圖修改操作(例如,對(duì)狀態(tài)10515-10545的推定)均是可用的。一些實(shí)施例允許手勢地圖修改操作的子集,諸如縮放操作以及有限的平移操作。一些實(shí)施例的平移操作,在接收到與平移相關(guān)聯(lián)的手勢輸入的類型時(shí),將虛擬相機(jī)(在處于導(dǎo)航模式中的同時(shí))向所述側(cè)移動(dòng),然后使虛擬相機(jī)返回至沿路線指向。雖然操作10515-10545返回至地圖瀏覽狀態(tài)10505,但從導(dǎo)航狀態(tài)10580中訪問的推定操作返回至導(dǎo)航狀態(tài)10580。
當(dāng)在狀態(tài)10575下顯示的所選擇的路線在除設(shè)備的當(dāng)前位置之外的位置處開始(或者路線為步行路線)并且用戶選擇導(dǎo)航開始控件時(shí),應(yīng)用過渡至步進(jìn)模式,或路線檢查模式,狀態(tài)10585。在一些實(shí)施例中,應(yīng)用以一次一個(gè)的方式顯示沿路線執(zhí)行的操縱(例如,作為導(dǎo)航標(biāo)志)。通過對(duì)操縱提供手勢輸入(例如,劃動(dòng)手勢),用戶可在處于路線檢查模式中的同時(shí)查看不同的操縱。將操縱覆蓋在地圖上,并且在地圖中顯示路線的至少一部分。
如在路線顯示模式中,地圖上的各種手勢交互可使應(yīng)用執(zhí)行對(duì)地圖視圖的不同修改(例如,平移、旋轉(zhuǎn)、縮放、修改地圖視角等)。當(dāng)集成應(yīng)用在處于步進(jìn)模式10585中的同時(shí)在地圖顯示上接收到手勢交互時(shí),應(yīng)用過渡至狀態(tài)10510以執(zhí)行手勢輸入辨認(rèn),其中所有手勢地圖修改操作(例如,對(duì)狀態(tài)10515-10545的推定)均是可用的。即,應(yīng)用將手勢輸入轉(zhuǎn)譯成類似于上文針對(duì)狀態(tài)10515-10545所描述的那些的平移、旋轉(zhuǎn)、縮放和/或視角改變操作,所述操作具有針對(duì)虛擬相機(jī)移動(dòng)的類似的慣性特征和回彈特征。雖然操作10515-10545返回至地圖瀏覽狀態(tài)10505,但從步進(jìn)模式10585中訪問的推定操作返回至步進(jìn)模式10585。
此外,在一些實(shí)施例中,手勢輸入辨認(rèn)對(duì)所顯示的操縱上的至少一個(gè)類型的手勢輸入進(jìn)行辨認(rèn)以便在操縱之間切換。當(dāng)在所顯示的操縱上接收到特定類型的手勢輸入(例如,劃動(dòng)手勢)時(shí)(與在地圖視圖上相反),應(yīng)用過渡至用于改變所顯示的操縱的狀態(tài)(未示出),然后返回至狀態(tài)10585。
當(dāng)集成應(yīng)用在處于步進(jìn)狀態(tài)10575時(shí)在所顯示的地圖上接收到手勢交互時(shí),應(yīng)用過渡至狀態(tài)10510以執(zhí)行手勢輸入辨認(rèn),其中所有手勢地圖修改操作(例如,對(duì)狀態(tài)10510-10545的推定)均是可用的。在修改操作完成時(shí),應(yīng)用返回至狀態(tài)10585。在用戶選擇用于結(jié)束步進(jìn)通過操縱的控件時(shí),應(yīng)用過渡回到狀態(tài)10505以呈現(xiàn)地圖瀏覽視圖。
此外,在一些實(shí)施例中,應(yīng)用可從步進(jìn)模式10585過渡至自動(dòng)步進(jìn)狀態(tài)10590。當(dāng)應(yīng)用處于狀態(tài)10585中的同時(shí)用戶選擇位置追蹤控件時(shí),應(yīng)用過渡至自動(dòng)步進(jìn)模式10590,該自動(dòng)步進(jìn)模式是不同的導(dǎo)航模態(tài)。當(dāng)在一些實(shí)施例的自動(dòng)步進(jìn)模式中時(shí),集成地圖繪制、搜索和導(dǎo)航應(yīng)用顯示設(shè)備位置最靠近(例如,如由執(zhí)行操縱的接合點(diǎn)所測量)的操縱。在設(shè)備移動(dòng)(例如,沿路線)至更靠近不同操縱的位置時(shí),自動(dòng)步進(jìn)模式自動(dòng)顯示該不同操縱。在用戶取消選擇位置追蹤控件時(shí),應(yīng)用過渡回到步進(jìn)模式10585。當(dāng)用戶在處于自動(dòng)步進(jìn)狀態(tài)10590中的同時(shí)選擇用于結(jié)束導(dǎo)航的控件時(shí),應(yīng)用過渡到狀態(tài)10505以呈現(xiàn)地圖瀏覽視圖。
在步進(jìn)模式10585中時(shí),地圖上的各種手勢交互可使應(yīng)用執(zhí)行對(duì)地圖視圖的不同修改(例如,平移、旋轉(zhuǎn)、縮放、修改地圖視角等)。當(dāng)集成應(yīng)用在處于自動(dòng)步進(jìn)模式10590中的同時(shí)在地圖顯示上接收到手勢交互時(shí),應(yīng)用過渡至狀態(tài)10510以執(zhí)行手勢輸入辨認(rèn),其中所有手勢地圖修改操作(例如,對(duì)狀態(tài)10515-10545的推定)均是可用的。即,應(yīng)用將手勢輸入轉(zhuǎn)譯成類似于上文針對(duì)狀態(tài)10515-10545所描述的那些的平移、旋轉(zhuǎn)、縮放和/或視角改變操作,所述操作具有針對(duì)虛擬相機(jī)移動(dòng)的類似的慣性特征和回彈特征。雖然操作10515-10545返回至地圖瀏覽狀態(tài)10505,但從步進(jìn)模式10585中訪問的推定操作返回至自動(dòng)步進(jìn)模式10590。此外,在用戶將地圖平移特定距離時(shí),一些實(shí)施例自動(dòng)關(guān)閉位置追蹤控件,在這種情況下,應(yīng)用返回至步進(jìn)模式狀態(tài)10585而不是自動(dòng)步進(jìn)狀態(tài)10590。
iv.電子系統(tǒng)
上文所述的特征和應(yīng)用中的許多可被實(shí)現(xiàn)為被指定為在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(還稱為計(jì)算機(jī)可讀介質(zhì))上記錄的指令集的軟件過程。在這些指令由一個(gè)或多個(gè)計(jì)算或處理單元(例如,一個(gè)或多個(gè)處理器、處理器的內(nèi)核或者其他處理單元)執(zhí)行時(shí),這些指令使得一個(gè)或多個(gè)處理單元能夠執(zhí)行指令中所指示的動(dòng)作。計(jì)算機(jī)可讀介質(zhì)的實(shí)例包括但不限于cd-rom、閃存驅(qū)動(dòng)器、隨機(jī)存取存儲(chǔ)器(ram)芯片、硬盤驅(qū)動(dòng)器、可擦可編程只讀存儲(chǔ)器(eprom)、電可擦可編程只讀存儲(chǔ)器(eeprom)等。計(jì)算機(jī)可讀介質(zhì)不包括無線地傳送或通過有線連接的載波和電信號(hào)。
在本說明書中,術(shù)語“軟件”意在包括駐留在只讀存儲(chǔ)器中的固件或者存儲(chǔ)在磁性存儲(chǔ)設(shè)備中的應(yīng)用,所述固件或應(yīng)用可被讀取到存儲(chǔ)器中以用于由處理器進(jìn)行處理。另外,在一些實(shí)施例中,可在保留不同的軟件發(fā)明的同時(shí),將多個(gè)軟件發(fā)明實(shí)現(xiàn)為更大程序的子部分。在一些實(shí)施例中,還可將多個(gè)軟件發(fā)明實(shí)現(xiàn)為單獨(dú)程序。最后,共同實(shí)施這里所述的軟件發(fā)明的單獨(dú)程序的任何組合均在本發(fā)明的范圍之內(nèi)。在一些實(shí)施例中,當(dāng)被安裝以在一個(gè)或多個(gè)電子系統(tǒng)上運(yùn)行時(shí),軟件程序定義執(zhí)行和施行軟件程序的操作的一個(gè)或多個(gè)特定機(jī)器具體實(shí)施。
a.移動(dòng)設(shè)備
一些實(shí)施例的地圖繪制應(yīng)用和導(dǎo)航應(yīng)用在移動(dòng)設(shè)備諸如智能電話(例如,
外圍設(shè)備接口10615耦接到各種傳感器和子系統(tǒng),所述子系統(tǒng)包括相機(jī)子系統(tǒng)10620、一個(gè)或多個(gè)無線通信子系統(tǒng)10625、音頻子系統(tǒng)10630、輸入/輸出(i/o)子系統(tǒng)10635等。外圍設(shè)備接口10615能夠?qū)崿F(xiàn)處理單元10605與各種外圍設(shè)備之間的通信。例如,取向傳感器10645(例如,陀螺儀)和加速度傳感器10650(例如,加速度計(jì))耦接到外圍設(shè)備接口10615,以便促進(jìn)取向和加速功能。
相機(jī)子系統(tǒng)10620耦接到一個(gè)或多個(gè)光學(xué)傳感器10640(例如,電荷耦合設(shè)備(ccd)光學(xué)傳感器、互補(bǔ)金屬氧化物半導(dǎo)體(cmos)光學(xué)傳感器等)。與光學(xué)傳感器10640耦接的相機(jī)子系統(tǒng)10620促進(jìn)相機(jī)功能,諸如圖像和/或視頻數(shù)據(jù)捕獲。無線通信子系統(tǒng)10625用于促進(jìn)通信功能。在一些實(shí)施例中,無線通信子系統(tǒng)10625包括射頻接收器和發(fā)射器以及光學(xué)接收器和發(fā)射器(圖106中未示出)。一些實(shí)施例的這些接收器和發(fā)射器被實(shí)現(xiàn)為在一個(gè)或多個(gè)通信網(wǎng)絡(luò)之上運(yùn)行,所述一個(gè)或多個(gè)通信網(wǎng)絡(luò)諸如gsm網(wǎng)絡(luò)、wi-fi網(wǎng)絡(luò)、藍(lán)牙網(wǎng)絡(luò)等。音頻子系統(tǒng)10630耦接至揚(yáng)聲器以輸出音頻(例如,以輸出語音導(dǎo)航指令)。另外,音頻子系統(tǒng)10630還耦接至麥克風(fēng)以促進(jìn)支持語音的功能,諸如語音識(shí)別(例如,用于搜索)、數(shù)字記錄等。
i/o子系統(tǒng)10635涉及輸入/輸出外圍設(shè)備(諸如顯示器、觸摸屏等)與處理單元10605的數(shù)據(jù)總線之間通過外圍設(shè)備接口10615的傳輸。i/o子系統(tǒng)10635包括觸摸屏控制器10655和其他輸入控制器10660以促進(jìn)輸入/輸出外圍設(shè)備與處理單元10605的數(shù)據(jù)總線之間的傳輸。如圖所示,觸摸屏控制器10655耦接到觸摸屏10665。觸摸屏控制器10655使用任何多點(diǎn)觸感技術(shù)來檢測觸摸屏10665上的接觸和移動(dòng)。其他輸入控制器10660耦接到其他輸入/控制設(shè)備,諸如一個(gè)或多個(gè)按鈕。一些實(shí)施例包括近觸感屏和對(duì)應(yīng)控制器,該控制器代替觸摸交互或除了觸摸交互之外可檢測近觸摸交互。
存儲(chǔ)器接口10610耦接到存儲(chǔ)器10670。在一些實(shí)施例中,存儲(chǔ)器10670包括易失性存儲(chǔ)器(例如,高速隨機(jī)存取存儲(chǔ)器)、非易失性存儲(chǔ)器(例如,閃存存儲(chǔ)器)、易失性存儲(chǔ)器和非易失性存儲(chǔ)器的組合和/或任何其他類型的存儲(chǔ)器。如圖106所示,存儲(chǔ)器10670存儲(chǔ)操作系統(tǒng)(os)10672。os10672包括用于處理基本系統(tǒng)服務(wù)和用于執(zhí)行依賴于硬件的任務(wù)的指令。
存儲(chǔ)器10670還包括:促進(jìn)與一個(gè)或多個(gè)另外設(shè)備進(jìn)行通信的通信指令10674;促進(jìn)圖形用戶界面處理的圖形用戶界面指令10676;促進(jìn)圖像相關(guān)的處理和功能的圖像處理指令10678;促進(jìn)輸入相關(guān)(例如,觸摸輸入)的過程和功能的輸入處理指令10680;促進(jìn)音頻相關(guān)的過程和功能的音頻處理指令10682;以及促進(jìn)相機(jī)相關(guān)的過程和功能的相機(jī)指令10684。上述指令僅是示例性的,并且在一些實(shí)施例中,存儲(chǔ)器10670包括額外的和/或其他指令。例如,用于智能電話的存儲(chǔ)器可包括促進(jìn)電話相關(guān)的過程和功能的電話指令。另外,存儲(chǔ)器可包括用于地圖繪制應(yīng)用和導(dǎo)航應(yīng)用以及其他應(yīng)用的指令。以上所識(shí)別的指令無需實(shí)現(xiàn)為獨(dú)立的軟件程序或模塊??稍谟布?或軟件中,包括在一個(gè)或多個(gè)信號(hào)處理和/或?qū)S眉呻娐分?,?shí)現(xiàn)移動(dòng)計(jì)算設(shè)備的各種功能。
雖然圖106中所示的組件顯示為單獨(dú)的組件,但本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,可將兩個(gè)或更多個(gè)組件集成到一個(gè)或多個(gè)集成電路中。另外,兩個(gè)或更多個(gè)組件可由一條或多條通信總線或信號(hào)線來耦接在一起。另外,雖然已將許多功能描述為由一個(gè)組件執(zhí)行,但本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,可將相對(duì)于圖106描述的功能拆分到兩個(gè)或更多個(gè)集成電路中。
b.計(jì)算機(jī)系統(tǒng)
圖107概念性地示出了實(shí)現(xiàn)本發(fā)明的一些實(shí)施例所利用的電子系統(tǒng)10700的另一個(gè)例子。電子系統(tǒng)10700可以為計(jì)算機(jī)(例如,臺(tái)式計(jì)算機(jī)、個(gè)人計(jì)算機(jī)、平板電腦等)、電話、pda或任何其他種類的電子或計(jì)算設(shè)備。此類電子系統(tǒng)包括各種類型的計(jì)算機(jī)可讀介質(zhì)以及用于各種其他類型的計(jì)算機(jī)可讀介質(zhì)的接口。電子系統(tǒng)10700包括總線10705、一個(gè)或多個(gè)處理單元10710、圖形處理單元(gpu)10715、系統(tǒng)存儲(chǔ)器10720、網(wǎng)絡(luò)10725、只讀存儲(chǔ)器10730、永久性存儲(chǔ)設(shè)備10735、輸入設(shè)備10740以及輸出設(shè)備10745。
總線10705總體表示在通信上連接電子系統(tǒng)10700的許多內(nèi)部設(shè)備的所有系統(tǒng)、外圍設(shè)備以及芯片組總線。例如,總線10705可通信地將一個(gè)或多個(gè)處理單元10710與只讀存儲(chǔ)器10730、gpu10715、系統(tǒng)存儲(chǔ)器10720以及永久性存儲(chǔ)設(shè)備10735連接。
一個(gè)或多個(gè)處理單元10710從這些各種存儲(chǔ)器單元中檢索將要執(zhí)行的指令以及將要處理的數(shù)據(jù)以執(zhí)行本發(fā)明的過程。在不同實(shí)施例中,一個(gè)或多個(gè)處理單元可以為單個(gè)處理器或者多核處理器。一些指令被傳送至gpu10715并且由該gpu執(zhí)行。gpu10715可卸載各種計(jì)算指令或者補(bǔ)償由一個(gè)或多個(gè)處理單元10710提供的圖像處理。在一些實(shí)施例中,可使用coreimage的內(nèi)核著色語言來提供此類功能性。
只讀存儲(chǔ)器(rom)10730存儲(chǔ)一個(gè)或多個(gè)處理單元10710以及電子系統(tǒng)的其他模塊所需的靜態(tài)數(shù)據(jù)和指令。另一方面,永久性存儲(chǔ)設(shè)備10735是讀寫存儲(chǔ)器設(shè)備。該設(shè)備是即使在電子系統(tǒng)10700關(guān)閉時(shí)也存儲(chǔ)指令和數(shù)據(jù)的非易失性存儲(chǔ)器單元。本發(fā)明的一些實(shí)施例將海量存儲(chǔ)設(shè)備(諸如磁盤或光盤及其相應(yīng)硬盤驅(qū)動(dòng)器、集成式閃存存儲(chǔ)器)用作永久性存儲(chǔ)設(shè)備10735。
其他實(shí)施例將可移動(dòng)的存儲(chǔ)設(shè)備(諸如軟盤、閃存存儲(chǔ)器設(shè)備等,及其對(duì)應(yīng)的驅(qū)動(dòng)器)用作永久性存儲(chǔ)設(shè)備。與永久性存儲(chǔ)設(shè)備10735一樣,系統(tǒng)存儲(chǔ)器10720是讀寫存儲(chǔ)器設(shè)備。但是,與存儲(chǔ)設(shè)備10735不同,系統(tǒng)存儲(chǔ)器10720為易失性讀寫存儲(chǔ)器,諸如隨機(jī)存取存儲(chǔ)器。系統(tǒng)存儲(chǔ)器10720存儲(chǔ)處理器在運(yùn)行時(shí)所需的指令和數(shù)據(jù)中的一些。在一些實(shí)施例中,本發(fā)明的過程存儲(chǔ)在系統(tǒng)存儲(chǔ)器10720、永久性存儲(chǔ)設(shè)備10735和/或只讀存儲(chǔ)器10730中。一個(gè)或多個(gè)處理單元10710從這些各種存儲(chǔ)器單元檢索將要執(zhí)行的指令以及將要處理的數(shù)據(jù),以便執(zhí)行一些實(shí)施例的過程。
總線10705還連接至輸入設(shè)備10740和輸出設(shè)備10745。輸入設(shè)備10740使得用戶能夠?qū)⑿畔l(fā)送至電子系統(tǒng)并且選擇至電子系統(tǒng)的命令。輸入設(shè)備10740包括字母數(shù)字鍵盤和指示設(shè)備(也稱為“光標(biāo)控制設(shè)備”)、相機(jī)(例如,網(wǎng)絡(luò)相機(jī))、麥克風(fēng)或用于接收語音命令的類似設(shè)備等。輸出設(shè)備10745顯示由電子系統(tǒng)生成的圖像或者其他輸出數(shù)據(jù)。輸出設(shè)備10745包括打印機(jī)以及諸如陰極射線管(crt)或液晶顯示器(lcd)的顯示設(shè)備,以及揚(yáng)聲器或類似的音頻輸出設(shè)備。一些實(shí)施例包括充當(dāng)輸入設(shè)備和輸出設(shè)備兩者的設(shè)備,諸如觸摸屏。
最后,如圖107所示,總線10705還通過網(wǎng)絡(luò)適配器(未示出)將電子系統(tǒng)10700耦接到網(wǎng)絡(luò)10725。以此方式,計(jì)算機(jī)可以是計(jì)算機(jī)的網(wǎng)絡(luò)(諸如局域網(wǎng)(“l(fā)an”)、廣域網(wǎng)(“wan”)或內(nèi)聯(lián)網(wǎng))的一部分,或者可以是網(wǎng)絡(luò)的網(wǎng)絡(luò)(諸如互聯(lián)網(wǎng))的一部分。電子系統(tǒng)10700的任何或所有組件均可與本發(fā)明結(jié)合使用。
一些實(shí)施例包括將計(jì)算機(jī)程序指令存儲(chǔ)在機(jī)器可讀或計(jì)算機(jī)可讀介質(zhì)(或者稱為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)、機(jī)器可讀介質(zhì)或機(jī)器可讀存儲(chǔ)介質(zhì))中的電子組件,諸如微處理器、存儲(chǔ)裝置以及存儲(chǔ)器。此類計(jì)算機(jī)可讀介質(zhì)的一些實(shí)例包括ram、rom、只讀光盤(cd-rom)、可刻錄光盤(cd-r)、可重寫光盤(cd-rw)、只讀數(shù)字通用光盤(例如,dvd-rom、雙層dvd-rom)、各種可刻錄/可重寫dvd(例如,dvd-ram、dvd-rw、dvd+rw等)、閃存存儲(chǔ)器(例如,sd卡,mini-sd卡、micro-sd卡等)、磁性和/或固態(tài)硬盤驅(qū)動(dòng)器、只讀和可刻錄
雖然上述討論主要涉及執(zhí)行軟件的微處理器或多核處理器,但一些實(shí)施例由一個(gè)或多個(gè)集成電路來執(zhí)行,該一個(gè)或多個(gè)集成電路諸如專用集成電路(asic)或現(xiàn)場可編程門陣列(fpga)。在一些實(shí)施例中,此類集成電路執(zhí)行存儲(chǔ)在電路自身上的指令。此外,一些實(shí)施例執(zhí)行存儲(chǔ)在可編程邏輯設(shè)備(pld)、rom或ram設(shè)備中的軟件。
如本說明書以及本專利申請的任何權(quán)利要求所用,術(shù)語“計(jì)算機(jī)”、“服務(wù)器”、“處理器”及“存儲(chǔ)器”均是指電子或其他技術(shù)設(shè)備。這些術(shù)語不包括人或者人的群組。出于本說明書的目的,術(shù)語顯示或正在顯示意指在電子設(shè)備上顯示。如本說明書以及本專利申請的任何權(quán)利要求所用,術(shù)語“計(jì)算機(jī)可讀介質(zhì)”以及“機(jī)器可讀介質(zhì)”完全限于以可由計(jì)算機(jī)讀取的形式存儲(chǔ)信息的可觸摸的有形物體。這些術(shù)語不包括任何無線信號(hào)、有線下載信號(hào)以及任何其他短暫信號(hào)。
v.地圖服務(wù)環(huán)境
各種實(shí)施例可在地圖服務(wù)操作環(huán)境內(nèi)操作。圖108示出了根據(jù)一些實(shí)施例的地圖服務(wù)操作環(huán)境。地圖服務(wù)10830(還稱為地圖繪制服務(wù))可為通過各種通信方法和協(xié)議與地圖服務(wù)10830通信的一個(gè)或多個(gè)客戶端設(shè)備10802a-10802c提供地圖服務(wù)。在一些實(shí)施例中,地圖服務(wù)10830提供地圖信息及其他地圖相關(guān)數(shù)據(jù),諸如二維地圖圖像數(shù)據(jù)(例如,使用衛(wèi)星影像的道路的航測圖)、三維地圖圖像數(shù)據(jù)(例如,具有三維特征的可橫穿地圖,諸如建筑物)、路線和方向計(jì)算(例如,針對(duì)行人的輪渡路線計(jì)算或兩點(diǎn)之間的方向)、實(shí)時(shí)導(dǎo)航數(shù)據(jù)(例如,二維或三維形式的可視逐向?qū)Ш綌?shù)據(jù))、位置數(shù)據(jù)(例如,客戶端設(shè)備當(dāng)前位于哪里)以及其他地理數(shù)據(jù)(例如,無線網(wǎng)絡(luò)覆蓋、天氣、交通信息或附近的興趣點(diǎn))。在各種實(shí)施例中,地圖服務(wù)數(shù)據(jù)可包括用于不同國家或地區(qū)的位置標(biāo)簽;位置標(biāo)簽可用于在客戶端設(shè)備上以不同語言呈現(xiàn)地圖標(biāo)簽(例如,街道名稱、城市名稱、興趣點(diǎn))??蛻舳嗽O(shè)備10802a-10802c可通過獲得地圖服務(wù)數(shù)據(jù)來使用這些地圖服務(wù)??蛻舳嗽O(shè)備10802a-10802c可實(shí)施各種技術(shù)來處理地圖服務(wù)數(shù)據(jù)??蛻舳嗽O(shè)備10802a-10802c然后可將地圖服務(wù)提供至各種實(shí)體,包括但不限于用戶、內(nèi)部軟件或硬件模塊和/或客戶端設(shè)備10802a-10802c外部的其他系統(tǒng)或設(shè)備。
在一些實(shí)施例中,由分布式計(jì)算系統(tǒng)中的一個(gè)或多個(gè)節(jié)點(diǎn)來實(shí)施地圖服務(wù)??蔀槊總€(gè)節(jié)點(diǎn)分配一個(gè)或多個(gè)服務(wù)或地圖服務(wù)的組件??蔀橐恍┕?jié)點(diǎn)分配相同的地圖服務(wù)或地圖服務(wù)的相同組件。在一些實(shí)施例中,加載平衡節(jié)點(diǎn)將訪問或請求分配至地圖服務(wù)內(nèi)的其他節(jié)點(diǎn)。在一些實(shí)施例中,地圖服務(wù)被實(shí)施為單個(gè)系統(tǒng),諸如單個(gè)服務(wù)器。服務(wù)器內(nèi)的不同模塊或硬件設(shè)備可實(shí)施由地圖服務(wù)提供的各種服務(wù)中的一者或多者。
在一些實(shí)施例中,地圖服務(wù)通過生成各種格式的地圖服務(wù)數(shù)據(jù)來提供地圖服務(wù)。在一些實(shí)施例中,地圖服務(wù)數(shù)據(jù)的一種格式是地圖圖像數(shù)據(jù)。地圖圖像數(shù)據(jù)將圖像數(shù)據(jù)提供至客戶端設(shè)備使得客戶端設(shè)備可處理該圖像數(shù)據(jù)(例如,將該圖像數(shù)據(jù)渲染和/或顯示為二維或三維地圖)。地圖圖像數(shù)據(jù),無論是二維還是三維形式,可指定一個(gè)或多個(gè)地圖圖塊。地圖圖塊可為較大地圖圖像的一部分。將地圖的地圖圖塊組裝在一起產(chǎn)生原始地圖??赏ㄟ^地圖圖像數(shù)據(jù)、路由數(shù)據(jù)或?qū)Ш綌?shù)據(jù)或任何其他地圖服務(wù)數(shù)據(jù)來生成圖塊。在一些實(shí)施例中,地圖圖塊為基于光柵的地圖圖塊,其中圖塊大小的范圍為大于和小于常用的256像素乘256像素圖塊的任何大小?;诠鈻诺牡貓D圖塊可以任何數(shù)量的標(biāo)準(zhǔn)數(shù)字圖像表示來編碼,所述標(biāo)準(zhǔn)數(shù)字圖像表示包括但不限于位圖(.bmp)、圖形交換格式(.gif)、聯(lián)合圖像專家小組(.jpg、.jpeg等)、便攜式網(wǎng)絡(luò)圖形(.png)或標(biāo)記圖像文件格式(.giff)。在一些實(shí)施例中,地圖圖塊為使用矢量圖形來編碼的基于矢量的地圖圖塊,所述矢量圖形包括但不限于可縮放矢量圖形(.svg)或繪圖文件(.drw)。一些實(shí)施例還包括具有矢量數(shù)據(jù)和光柵數(shù)據(jù)的組合的圖塊。關(guān)于地圖圖塊的元數(shù)據(jù)或其他信息還可包括在地圖圖塊內(nèi)或連同地圖圖塊一起被包括,從而將另外地圖服務(wù)數(shù)據(jù)提供至客戶端設(shè)備。在各種實(shí)施例中,使用各種標(biāo)準(zhǔn)和/或協(xié)議來對(duì)地圖圖塊編碼以用于傳輸。
在各種實(shí)施例中,根據(jù)縮放級(jí)別,地圖圖塊可由不同分辨率的圖像數(shù)據(jù)構(gòu)造而成。例如,對(duì)于低縮放級(jí)別(例如,世界或地球視圖)而言,地圖或圖像數(shù)據(jù)的分辨率不需要像相對(duì)于高縮放級(jí)別(例如,城市或街道級(jí)別)下的分辨率那樣高。例如,當(dāng)在地球視圖中時(shí),可能不需要渲染街道級(jí)別的物像,因?yàn)榇祟悓?duì)象將是如此小以至于在許多情況下都是可以忽略的。
在一些實(shí)施例中,地圖服務(wù)在對(duì)圖塊進(jìn)行編碼以用于傳輸之前執(zhí)行各種技術(shù)來分析地圖圖塊。這種分析可優(yōu)化針對(duì)客戶端設(shè)備和地圖服務(wù)兩者的地圖服務(wù)性能。在一些實(shí)施例中,根據(jù)基于矢量的圖形技術(shù)來對(duì)地圖圖塊進(jìn)行復(fù)雜度分析,并使用復(fù)雜和非復(fù)雜層來構(gòu)造地圖圖塊。也可針對(duì)可被渲染為圖像紋理并依賴于圖像掩碼來構(gòu)造的常用圖像數(shù)據(jù)或模式來對(duì)地圖圖塊進(jìn)行分析。在一些實(shí)施例中,地圖圖塊中基于光柵的圖像數(shù)據(jù)包含與一個(gè)或多個(gè)紋理相關(guān)聯(lián)的某些掩碼值。一些實(shí)施例還針對(duì)可與包含樣式標(biāo)識(shí)符的某些地圖樣式相關(guān)聯(lián)的指定特征來對(duì)地圖圖塊進(jìn)行分析。
在一些實(shí)施例中,其他地圖服務(wù)依賴于與地圖圖塊分離的各種數(shù)據(jù)格式生成地圖服務(wù)數(shù)據(jù)。例如,提供位置數(shù)據(jù)的地圖服務(wù)可使用符合位置服務(wù)協(xié)議的數(shù)據(jù)格式,所述位置服務(wù)協(xié)議包括但不限于無線電資源位置服務(wù)協(xié)議(rrlp)、用于碼分多址(cdma)的tia801、無線電資源控制(rrc)位置協(xié)議或lte位置協(xié)議(lpp)。實(shí)施例還可從客戶端設(shè)備接收或請求識(shí)別設(shè)備能力或?qū)傩?例如,硬件規(guī)格或操作系統(tǒng)版本)或通信能力(例如,由無線信號(hào)強(qiáng)度或有線或無線網(wǎng)絡(luò)類型確定的設(shè)備通信帶寬)的數(shù)據(jù)。
地圖服務(wù)可從內(nèi)部或外部源獲得地圖服務(wù)數(shù)據(jù)。例如,可從外部服務(wù)或內(nèi)部系統(tǒng)、存儲(chǔ)設(shè)備或節(jié)點(diǎn)獲得地圖圖像數(shù)據(jù)中所用的衛(wèi)星影像。其他例子可包括但不限于gps助理服務(wù)器、無線網(wǎng)絡(luò)覆蓋數(shù)據(jù)庫、企業(yè)或個(gè)人目錄、天氣數(shù)據(jù)、政府信息(例如,建筑物更新或道路名稱改變)或交通報(bào)告。地圖服務(wù)的一些實(shí)施例可更新地圖服務(wù)數(shù)據(jù)(例如,無線網(wǎng)絡(luò)覆蓋)以用于分析來自客戶端設(shè)備的未來請求。
地圖服務(wù)的各種實(shí)施例可響應(yīng)于地圖服務(wù)的客戶端設(shè)備請求。這些請求可以是針對(duì)特定地圖或地圖的特定部分的請求。一些實(shí)施例將對(duì)地圖的請求格式化為對(duì)某些地圖圖塊的請求。在一些實(shí)施例中,請求還為地圖服務(wù)提供用于路線計(jì)算的開始位置(或當(dāng)前位置)和目的地位置。客戶端設(shè)備還可請求地圖服務(wù)渲染信息,諸如地圖紋理或樣式表。在至少一些實(shí)施例中,請求還為實(shí)施逐向?qū)Ш降囊幌盗姓埱笾械囊徽?。?duì)其他地理數(shù)據(jù)的請求可包括但不限于當(dāng)前位置、無線網(wǎng)絡(luò)覆蓋、天氣、交通信息或附近興趣點(diǎn)。
在一些實(shí)施例中,地圖服務(wù)分析客戶端設(shè)備請求以優(yōu)化設(shè)備或地圖服務(wù)操作。例如,地圖服務(wù)可辨認(rèn)出客戶端設(shè)備的位置在通信較差(例如,弱無線信號(hào))的區(qū)域中并發(fā)送更多的地圖服務(wù)數(shù)據(jù)以在通信丟失的情況下提供客戶端設(shè)備或者發(fā)送指令以使用不同的客戶端硬件(例如,取向傳感器)或軟件(例如,使用無線位置服務(wù)或wi-fi位置服務(wù)而不是基于gps的服務(wù))。在另一個(gè)例子中,地圖服務(wù)可針對(duì)基于矢量的地圖圖像數(shù)據(jù)來分析客戶端設(shè)備請求并且根據(jù)圖像的復(fù)雜度來確定基于光柵的地圖圖像數(shù)據(jù)更好地優(yōu)化地圖圖像數(shù)據(jù)。其他地圖服務(wù)的實(shí)施例可對(duì)客戶端設(shè)備請求執(zhí)行類似分析,并且因此,上述例子并非旨在進(jìn)行限制。
客戶端設(shè)備(例如,客戶端設(shè)備10802a-10802c)的各種實(shí)施例在不同的便攜式多功能設(shè)備類型上實(shí)施??蛻舳嗽O(shè)備10802a-10802c通過各種通信方法和協(xié)議來使用地圖服務(wù)10830。在一些實(shí)施例中,客戶端設(shè)備10802a-10802c從地圖服務(wù)10830獲得地圖服務(wù)數(shù)據(jù)??蛻舳嗽O(shè)備10802a-10802c請求或接收地圖服務(wù)數(shù)據(jù)??蛻舳嗽O(shè)備10802a-10802c然后處理地圖服務(wù)數(shù)據(jù)(例如,渲染和/或顯示該數(shù)據(jù))并且可將該數(shù)據(jù)發(fā)送至設(shè)備上的另一軟件或硬件模塊或者發(fā)送至外部設(shè)備或系統(tǒng)。
根據(jù)一些實(shí)施例的客戶端設(shè)備實(shí)施用于渲染和/或顯示地圖的技術(shù)。可以各種格式,諸如上文所述的地圖圖塊,來請求或接收這些地圖。客戶端設(shè)備可在二維或三維視圖中渲染地圖??蛻舳嗽O(shè)備的一些實(shí)施例顯示所渲染的地圖,并允許提供輸入的用戶、系統(tǒng)或設(shè)備操縱地圖中的虛擬相機(jī),從而根據(jù)虛擬相機(jī)的位置、取向和視場來改變地圖顯示。實(shí)施各種形式和輸入設(shè)備以操縱虛擬相機(jī)。在一些實(shí)施例中,觸摸輸入通過某些單個(gè)或組合手勢(例如,觸摸并保持或劃動(dòng))來操縱虛擬相機(jī)。其他實(shí)施例允許操縱設(shè)備的物理位置從而操縱虛擬相機(jī)。例如,可將客戶端設(shè)備從其當(dāng)前位置向上傾斜以操縱虛擬相機(jī)向上旋轉(zhuǎn)。在另一個(gè)例子中,可將客戶端設(shè)備從其當(dāng)前位置向前傾斜以向前移動(dòng)虛擬相機(jī)??蓪?shí)施客戶端設(shè)備的其他輸入設(shè)備,包括但不限于聽覺輸入(例如,所講出的字)、物理鍵盤、鼠標(biāo)和/或控制桿。
一些實(shí)施例提供對(duì)虛擬相機(jī)操縱的各種視覺反饋,諸如在從二維地圖視圖過渡至三維地圖視圖時(shí)顯示可能的虛擬相機(jī)操縱的動(dòng)畫。一些實(shí)施例還允許用于選擇地圖特征或?qū)ο?例如,建筑物)以及將對(duì)象突出顯示的輸入,從而生成維持虛擬相機(jī)對(duì)三維空間的感知的模糊效果。
在一些實(shí)施例中,客戶端設(shè)備實(shí)施導(dǎo)航系統(tǒng)(例如,逐向?qū)Ш?。導(dǎo)航系統(tǒng)提供可向用戶顯示的方向或路線信息。客戶端設(shè)備的一些實(shí)施例請求來自地圖服務(wù)的方向或路線計(jì)算??蛻舳嗽O(shè)備可從地圖服務(wù)接收地圖圖像數(shù)據(jù)和路線數(shù)據(jù)。在一些實(shí)施例中,客戶端設(shè)備實(shí)施逐向?qū)Ш较到y(tǒng),該逐向?qū)Ш较到y(tǒng)基于從地圖服務(wù)和/或其他位置系統(tǒng)諸如全球位置系統(tǒng)(gps)接收的位置信息和路線信息,來提供實(shí)時(shí)路線和方向信息??蛻舳嗽O(shè)備可顯示反映客戶端設(shè)備的當(dāng)前位置的地圖圖像數(shù)據(jù),并實(shí)時(shí)更新該地圖圖像數(shù)據(jù)。導(dǎo)航系統(tǒng)可提供聽覺或視覺方向以沿循某條路線。
虛擬相機(jī)被實(shí)施為根據(jù)一些實(shí)施例操縱導(dǎo)航地圖數(shù)據(jù)??蛻舳嗽O(shè)備的一些實(shí)施例允許設(shè)備調(diào)節(jié)虛擬相機(jī)顯示取向以朝著路線目的地偏置。一些實(shí)施例還允許虛擬相機(jī)通過模擬虛擬相機(jī)的慣性運(yùn)動(dòng)來對(duì)轉(zhuǎn)彎進(jìn)行導(dǎo)航。
客戶端設(shè)備實(shí)施各種技術(shù)以使用來自地圖服務(wù)的地圖服務(wù)數(shù)據(jù)。一些實(shí)施例實(shí)施一些技術(shù)以優(yōu)化對(duì)二維和三維地圖圖像數(shù)據(jù)的渲染。在一些實(shí)施例中,客戶端設(shè)備本地存儲(chǔ)渲染信息。例如,客戶端存儲(chǔ)針對(duì)包含樣式標(biāo)識(shí)符的圖像數(shù)據(jù)提供渲染方向的樣式表。在另一個(gè)例子中,可存儲(chǔ)常用的圖像紋理以減少從地圖服務(wù)傳輸?shù)牡貓D圖像數(shù)據(jù)的量。不同實(shí)施例中的客戶端設(shè)備實(shí)施各種建模技術(shù)以渲染二維和三維地圖圖像數(shù)據(jù),所述建模技術(shù)的例子包括但不限于:用二維建筑物足跡數(shù)據(jù)生成三維建筑物;對(duì)二維和三維地圖對(duì)象建模以確定客戶端設(shè)備通信環(huán)境;生成模型以確定從某個(gè)虛擬相機(jī)位置是否看到地圖標(biāo)簽;以及生成模型以在地圖圖像數(shù)據(jù)之間平滑過渡??蛻舳嗽O(shè)備的一些實(shí)施例還以某些技術(shù)來對(duì)地圖服務(wù)數(shù)據(jù)排序或確定優(yōu)先次序。例如,客戶端設(shè)備檢測虛擬相機(jī)的運(yùn)動(dòng)或速度,如果該運(yùn)動(dòng)或速度超過某些閾值,則加載并渲染某些區(qū)域的較低詳細(xì)度的圖像數(shù)據(jù)。其他例子包括:將基于矢量的曲線渲染為一系列點(diǎn),針對(duì)與地圖服務(wù)通信不良的區(qū)域預(yù)加載地圖圖像數(shù)據(jù),基于顯示縮放級(jí)別調(diào)整紋理,或根據(jù)復(fù)雜度渲染地圖圖像數(shù)據(jù)。
在一些實(shí)施例中,客戶端設(shè)備使用與地圖圖塊分離的各種數(shù)據(jù)格式來通信。例如,一些客戶端設(shè)備實(shí)施輔助全球位置衛(wèi)星(a-gps)并與位置服務(wù)通信,該位置服務(wù)使用符合位置服務(wù)協(xié)議的數(shù)據(jù)格式,所述位置服務(wù)協(xié)議諸如但不限于無線電資源位置服務(wù)協(xié)議(rrlp)、用于碼分多址(cdma)的tia801、無線電資源控制(rrc)位置協(xié)議或lte位置協(xié)議(lpp)??蛻舳嗽O(shè)備還可直接接收gps信號(hào)。實(shí)施例還可在或不在來自地圖服務(wù)的懇求下發(fā)送識(shí)別客戶端設(shè)備的能力或?qū)傩?例如,硬件規(guī)格或操作系統(tǒng)版本)或通信能力(例如,由無線信號(hào)強(qiáng)度或有線或無線網(wǎng)絡(luò)類型確定的設(shè)備通信帶寬)的數(shù)據(jù)。
圖108示出了用于地圖服務(wù)10830和客戶端設(shè)備10802a-10802c的操作環(huán)境10800的一個(gè)可能實(shí)施例。在一些實(shí)施例中,設(shè)備10802a、10802b和10802c通過一個(gè)或多個(gè)有線或無線網(wǎng)絡(luò)10810通信。例如,無線網(wǎng)絡(luò)10810,諸如蜂窩網(wǎng)絡(luò),可通過利用網(wǎng)關(guān)10814與廣域網(wǎng)(wan)10820諸如互聯(lián)網(wǎng)通信。在一些實(shí)施例中,網(wǎng)關(guān)10814提供面向分組的移動(dòng)數(shù)據(jù)服務(wù),諸如通用分組無線業(yè)務(wù)(gprs),或允許無線網(wǎng)絡(luò)將數(shù)據(jù)傳輸至其他網(wǎng)絡(luò)諸如廣域網(wǎng)10820的其他移動(dòng)數(shù)據(jù)服務(wù)。同樣,接入設(shè)備10812(例如,ieee802.11g無線接入設(shè)備)提供對(duì)wan10820的通信訪問。設(shè)備10802a和10802b可為能夠與地圖服務(wù)通信的任何便攜式電子或計(jì)算設(shè)備。設(shè)備10802c可為能夠與地圖服務(wù)通信的任何非便攜式電子或計(jì)算設(shè)備。
在一些實(shí)施例中,語音通信和數(shù)據(jù)通信均可通過無線網(wǎng)絡(luò)10810和接入設(shè)備10812來建立。例如,設(shè)備10802a可通過無線網(wǎng)絡(luò)10810、網(wǎng)關(guān)10814以及wan10820來撥打及接收電話呼叫(例如,使用互聯(lián)網(wǎng)協(xié)議電話(voip)協(xié)議)、發(fā)送及接收電子郵件消息(例如,使用簡單郵件傳輸協(xié)議(smtp)或郵局協(xié)議第三版(pop3))以及檢索電子文檔和/或數(shù)據(jù)流,諸如網(wǎng)頁、照片和視頻(例如,使用傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(tcp/ip)或用戶數(shù)據(jù)報(bào)協(xié)議(udp))。同樣,在一些具體實(shí)施中,設(shè)備10802b和10802c可通過接入設(shè)備10812及wan10820來撥打及接收電話呼叫、發(fā)送及接收電子郵件消息以及檢索電子文檔。在各種實(shí)施例中,所示客戶端設(shè)備中的任一者可使用根據(jù)一個(gè)或多個(gè)安全協(xié)議建立的永久性連接來與地圖服務(wù)10830和/或其他一種或多種服務(wù)10850通信,所述安全協(xié)議諸如安全套接層(ssl)協(xié)議或傳輸層安全(tls)協(xié)議。
設(shè)備10802a和10802b還可以其他方式建立通信。例如,無線設(shè)備10802a可通過無線網(wǎng)絡(luò)10810與其他無線設(shè)備(例如,其他移動(dòng)設(shè)備10802b、手機(jī)等等)通信。同樣,設(shè)備10802a和10802b可借助一個(gè)或多個(gè)通信子系統(tǒng),諸如來自bluetoothspecialinterestgroup,inc.,kirkland,washington的
設(shè)備10802a、10802b和10802c可通過一個(gè)或多個(gè)有線和/或無線網(wǎng)絡(luò)10810或10812與地圖服務(wù)10830通信。例如,地圖服務(wù)10830可將地圖服務(wù)數(shù)據(jù)提供至渲染設(shè)備10802a、10802b和10802c。地圖服務(wù)10830還可與其他服務(wù)10850通信以獲得用于實(shí)施地圖服務(wù)的數(shù)據(jù)。地圖服務(wù)10830及其他服務(wù)10850還可從gps衛(wèi)星10860接收gps信號(hào)。
在各種實(shí)施例中,地圖服務(wù)10830和/或其他一種或多種服務(wù)10850被配置為處理來自任何客戶端設(shè)備的搜索請求。搜索請求可包括但不限于對(duì)企業(yè)、地址、居住位置、興趣點(diǎn)或它們的某個(gè)組合的查詢,地圖服務(wù)10830和/或其他一種或多種服務(wù)10850可被配置為返回與各種參數(shù)相關(guān)的結(jié)果,包括但不限于輸入到地址欄中或其他文本輸入字段中的位置(包括縮寫和/或其他速記符號(hào))、當(dāng)前地圖視圖(例如,用戶可在駐留于另一位置的同時(shí)查看多功能設(shè)備上的一個(gè)位置)、用戶的當(dāng)前位置(例如,在當(dāng)前地圖視圖不包括搜索結(jié)果的情況下)以及當(dāng)前路線(如果有的話)。在各種實(shí)施例中,基于不同的優(yōu)先級(jí)權(quán)重,這些參數(shù)可影響搜索結(jié)果的組成(和/或搜索結(jié)果的排序)。在各種實(shí)施例中,返回的搜索結(jié)果可為基于特定標(biāo)準(zhǔn)選擇的結(jié)果的子集,所述特定標(biāo)準(zhǔn)包括但不限于已對(duì)搜索結(jié)果(例如,特定興趣點(diǎn))請求的次數(shù)、與搜索結(jié)果相關(guān)聯(lián)的質(zhì)量的量度(例如,最高用戶或編輯評(píng)論等級(jí))和/或搜索結(jié)果的評(píng)論量(例如,已對(duì)搜索結(jié)果進(jìn)行評(píng)論或評(píng)級(jí)的次數(shù))。
在各種實(shí)施例中,地圖服務(wù)10830和/或其他一種或多種服務(wù)10850被配置為提供自動(dòng)完成的搜索結(jié)果,所述自動(dòng)完成的搜索結(jié)果顯示在客戶端設(shè)備上,諸如在地圖繪制應(yīng)用內(nèi)。例如,在用戶在多功能設(shè)備上輸入一個(gè)或多個(gè)搜索關(guān)鍵字時(shí),自動(dòng)完成的搜索結(jié)果可填充屏幕的一部分。在一些情況下,該特征可節(jié)省用戶時(shí)間,因?yàn)榭稍谟脩糨斎胪暾乃阉鞑樵冎帮@示所需的搜索結(jié)果。在各種實(shí)施例中,自動(dòng)完成的搜索結(jié)果可為由客戶端在客戶端設(shè)備上找到的搜索結(jié)果(例如,書簽或聯(lián)系人)、由地圖服務(wù)10830和/或其他一種或多種服務(wù)10850在其他地方(例如,從互聯(lián)網(wǎng))找到的搜索結(jié)果,和/或它們的一些組合。與命令的情形一樣,可由用戶經(jīng)由語音或通過鍵入來輸入任何搜索查詢。多功能設(shè)備可被配置為在本文所述的任何地圖顯示內(nèi)以圖形方式顯示搜索結(jié)果。例如,針狀或其他圖形指示符可將搜索結(jié)果的位置指示為興趣點(diǎn)。在各種實(shí)施例中,響應(yīng)于用戶對(duì)這些興趣點(diǎn)中一者的選擇(例如,觸摸選擇,諸如觸擊),多功能設(shè)備被配置為顯示與所選擇的興趣點(diǎn)有關(guān)的額外信息,該額外信息包括但不限于等級(jí)、評(píng)論或評(píng)論片段、操作時(shí)長、存儲(chǔ)狀態(tài)(例如,開始營業(yè)、永久性關(guān)閉等)和/或興趣點(diǎn)的店面的圖像。在各種實(shí)施例中,可在響應(yīng)于用戶對(duì)興趣點(diǎn)的選擇而顯示的圖形信息卡上顯示任何這種信息。
在各種實(shí)施例中,地圖服務(wù)10830和/或其他一種或多種服務(wù)10850提供一個(gè)或多個(gè)反饋機(jī)制以接收來自客戶端設(shè)備10802a-10802c的反饋。例如,客戶端設(shè)備可將關(guān)于搜索結(jié)果的反饋提供至地圖服務(wù)10830和/或其他一種或多種服務(wù)10850(例如,指定等級(jí)、評(píng)論、臨時(shí)或永久企業(yè)關(guān)閉、錯(cuò)誤等的反饋);該反饋可用于更新與興趣點(diǎn)有關(guān)的信息以便在將來提供更準(zhǔn)確或更新的搜索結(jié)果。在一些實(shí)施例中,地圖服務(wù)10830和/或其他一種或多種服務(wù)10850可將測試信息(例如,a/b測試)提供至客戶端設(shè)備以確定哪個(gè)搜索結(jié)果是最佳的。例如,客戶端設(shè)備可以隨機(jī)的時(shí)間間隔接收并向用戶呈現(xiàn)兩個(gè)搜索結(jié)果并且允許用戶指示最佳結(jié)果??蛻舳嗽O(shè)備可基于所選擇的測試技術(shù)向地圖服務(wù)10830和/或其他一種或多種服務(wù)10850報(bào)告測試結(jié)果以改進(jìn)未來的搜索結(jié)果,所述測試技術(shù)諸如a/b測試技術(shù),在該a/b測試技術(shù)中,將基線控制樣本與各種單變量測試樣本進(jìn)行比較以便改進(jìn)結(jié)果。
雖然已參考許多特定細(xì)節(jié)描述了本發(fā)明,但本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,可在不脫離本發(fā)明的實(shí)質(zhì)的情況下以其他特定形式來體現(xiàn)本發(fā)明。例如,許多圖示出了各種觸摸手勢(例如,輕按、雙擊、橫掃手勢、按下并保持手勢等)。然而,所示出的操作中的許多操作可經(jīng)由不同觸摸手勢(例如,橫掃而非輕按等)或由非觸摸輸入(例如,使用光標(biāo)控制器、鍵盤、觸摸板/觸控板、近觸感屏等)來執(zhí)行。此外,多個(gè)圖概念性地示出了過程。這些過程的特定操作可不以所示出和描述的確切順序被執(zhí)行。可不在操作的一個(gè)連續(xù)系列中執(zhí)行該特定操作,并且可在不同實(shí)施例中執(zhí)行不同的特定操作。此外,該過程可使用若干子過程來實(shí)施,或者作為更大宏過程而實(shí)施。因此,本領(lǐng)域的普通技術(shù)人員將理解,本發(fā)明不受前述示例性細(xì)節(jié)限制,而是將由所附的權(quán)利要求所限定。