本公開一般涉及用于容納導(dǎo)航信息的應(yīng)用編程接口。
背景技術(shù):
出于多種目的——包括商業(yè)、社交、健康、和其它目的,已經(jīng)開發(fā)了在諸如移動(dòng)計(jì)算設(shè)備(例如智能電話、平板計(jì)算機(jī)、智能手表等)的計(jì)算設(shè)備上實(shí)現(xiàn)的應(yīng)用。這些應(yīng)用能夠提供用于向用戶呈現(xiàn)信息以及允許用戶與應(yīng)用交互的用戶界面(例如圖形用戶界面)。用于移動(dòng)計(jì)算設(shè)備的流行應(yīng)用包括使用戶可獲得各種地理信息(例如在地圖上呈現(xiàn)的當(dāng)前位置信息)的地圖應(yīng)用。
在一些情況下,可能期望主要不意圖用于繪制或?qū)Ш降膽?yīng)用包含導(dǎo)航或地圖信息——例如可能期望使健康或健身應(yīng)用提供導(dǎo)航或地圖信息以允許用戶找到路線前往課程、完成一定距離的跑步等。原則上,健康或健身應(yīng)用能夠被編寫為包含定制的導(dǎo)航或地圖界面,但是這將需要增加的編程資源來創(chuàng)建應(yīng)用。
技術(shù)實(shí)現(xiàn)要素:
本公開的實(shí)施例的方面和優(yōu)點(diǎn)將在以下描述中部分地闡述,或者可以從描述中獲知,或者可以通過對實(shí)施例的時(shí)間來學(xué)習(xí)。
本公開的一個(gè)示例方面涉及計(jì)算機(jī)可讀介質(zhì),其可以是非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),但是本發(fā)明不限于此,該計(jì)算機(jī)可讀介質(zhì)存儲(chǔ)指令,其實(shí)現(xiàn)用于將導(dǎo)航服務(wù)提供為在計(jì)算設(shè)備上執(zhí)行的軟件應(yīng)用的一部分的應(yīng)用編程接口。該計(jì)算設(shè)備能夠具有一個(gè)或多個(gè)處理器和顯示設(shè)備。計(jì)算設(shè)備可以被配置為經(jīng)由通信網(wǎng)絡(luò)來與導(dǎo)航數(shù)據(jù)提供者通信。該應(yīng)用編程接口能夠包括指定一個(gè)或多個(gè)第一參數(shù)以控制軟件應(yīng)用實(shí)現(xiàn)導(dǎo)航服務(wù)的第一指令集。導(dǎo)航服務(wù)能夠可操作為向軟件應(yīng)用的用戶提供導(dǎo)航信息。應(yīng)用編程接口能夠進(jìn)一步包括第二指令集,其指定一個(gè)或多個(gè)第二參數(shù)以控制經(jīng)由應(yīng)用編程接口與導(dǎo)航數(shù)據(jù)提供者所提供的導(dǎo)航引擎的交互。應(yīng)用程序編程接口能夠進(jìn)一步包括被指定為第一指令的一部分的路點(diǎn)函數(shù),其能夠可操作為設(shè)置導(dǎo)航路線的多個(gè)路點(diǎn)。應(yīng)用編程接口能夠可操作為接收基于該多個(gè)路點(diǎn)來確定的多路點(diǎn)導(dǎo)航路線。多路點(diǎn)導(dǎo)航路線能夠包括多個(gè)路線段。
本公開的其它示例方面涉及系統(tǒng)、裝置、計(jì)算機(jī)可讀介質(zhì)——雖然本發(fā)明不限于此但是其可以是有形的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)、用戶接口、存儲(chǔ)器設(shè)備、以及與用于提供導(dǎo)航應(yīng)用編程接口的電子設(shè)備。
例如,另一示例方面涉及一種用于在有一個(gè)或多個(gè)處理器的計(jì)算設(shè)備上將導(dǎo)航服務(wù)整合為軟件應(yīng)用的一部分的方法,該方法包括:訪問與導(dǎo)航應(yīng)用編程接口相關(guān)聯(lián)的數(shù)據(jù);將與導(dǎo)航編程接口相關(guān)聯(lián)的數(shù)據(jù)包含到軟件應(yīng)用中;使用與導(dǎo)航應(yīng)用編程接口相關(guān)聯(lián)的第一指令集構(gòu)造與導(dǎo)航服務(wù)相關(guān)聯(lián)的圖形用戶界面組件,該第一指令集指定一個(gè)或多個(gè)參數(shù),以控制與軟件應(yīng)用相結(jié)合的、與導(dǎo)航服務(wù)相關(guān)聯(lián)的圖形用戶界面組件在顯示設(shè)備上的顯示;以及使用與導(dǎo)航應(yīng)用編程接口相關(guān)聯(lián)的第二指令集來配置導(dǎo)航服務(wù),該第二指令集指定一個(gè)或多個(gè)參數(shù)以控制軟件應(yīng)用對導(dǎo)航服務(wù)的實(shí)現(xiàn);其中第二指令集包括所指定的路點(diǎn)函數(shù),其可操作為設(shè)置導(dǎo)航路線的多個(gè)路點(diǎn),應(yīng)用編程接口可操作為接收基于多個(gè)路點(diǎn)來確定的多路點(diǎn)導(dǎo)航路線,多路點(diǎn)導(dǎo)航路線包括多個(gè)路線段。該方法可以包括:獲得訪問密鑰以用于啟用導(dǎo)航應(yīng)用編程接口的操作;以及將訪問密鑰添加到軟件應(yīng)用。附加地或替選地,該方法可以包括使用與導(dǎo)航應(yīng)用編程接口相關(guān)聯(lián)的初始化和錯(cuò)誤處理指令集來初始化導(dǎo)航應(yīng)用編程接口。附加地或替選地,一個(gè)或多個(gè)可配置事件偵聽器接口可以包括位置偵聽器接口,其可操作為被調(diào)用以更新導(dǎo)航服務(wù)中的用戶的當(dāng)前位置。附加地或替選地,一個(gè)或多個(gè)事件偵聽器接口可以包括剩余時(shí)間或剩余距離改變偵聽器接口,其可操作為在到多路點(diǎn)路線中的下一個(gè)路點(diǎn)的剩余時(shí)間或剩余距離已改變超過閾值時(shí)被調(diào)用。附加地或替選地,使用第二指令集來配置導(dǎo)航服務(wù)可以包括將閾值設(shè)置為第二指令集中的參數(shù)。
另一示例方面涉及一種計(jì)算設(shè)備,包括:顯示設(shè)備;網(wǎng)絡(luò)接口;一個(gè)或多個(gè)處理器;以及一個(gè)或多個(gè)存儲(chǔ)器設(shè)備,其中所述一個(gè)或多個(gè)存儲(chǔ)器設(shè)備存儲(chǔ)計(jì)算機(jī)可讀指令,所述計(jì)算機(jī)可讀指令在被執(zhí)行時(shí)使得一個(gè)或多個(gè)處理器執(zhí)行上述示例方面的方法。
應(yīng)用編程接口能夠允許在計(jì)算設(shè)備上實(shí)現(xiàn)的應(yīng)用與各種服務(wù)交互以向用戶提供信息和功能。應(yīng)用編程接口能夠?yàn)殚_發(fā)者提供工具以將信息、編程、框架、和結(jié)構(gòu)嵌入到由用戶訪問的應(yīng)用中。例如,地圖服務(wù)提供者能夠提供地圖應(yīng)用編程接口,其能夠由第三方用來將數(shù)字地圖嵌入到由第三方開發(fā)的應(yīng)用的用戶界面中。這避免了第三方的開發(fā)者創(chuàng)建他們自己的地圖應(yīng)用的需要。
參照以下描述和所附權(quán)利要求書,各個(gè)實(shí)施例的這些和其它特征、方面和優(yōu)點(diǎn)將被更好地理解。被包含在本說明書中并構(gòu)成其一部分的附圖圖示了本公開的實(shí)施例,并連同說明書一起用作解釋相關(guān)原理。
附圖說明
在參照附圖的說明書中闡述了針對本領(lǐng)域普通技術(shù)人員的實(shí)施例的詳細(xì)討論,其中:
圖1描繪了根據(jù)本公開的示例實(shí)施例的、用于使用應(yīng)用編程接口來實(shí)現(xiàn)作為軟件應(yīng)用的一部分的導(dǎo)航服務(wù)的示例系統(tǒng)的概覽;
圖2-圖3描繪了根據(jù)本公開的示例實(shí)施例的、與被實(shí)現(xiàn)為軟件應(yīng)用的一部分的導(dǎo)航服務(wù)相關(guān)聯(lián)的示例圖形用戶界面組件;
圖4描繪了根據(jù)本公開的示例實(shí)施例的實(shí)現(xiàn)軟件應(yīng)用的示例用戶設(shè)備的框圖;
圖5描繪了根據(jù)本公開的示例實(shí)施例的示例導(dǎo)航應(yīng)用編程接口的框圖;
圖6描繪了根據(jù)本公開的示例方面的、與導(dǎo)航應(yīng)用編程接口相關(guān)聯(lián)的示例導(dǎo)航器指令的框圖;
圖7描繪了根據(jù)本公開的示例實(shí)施例的示例方法的流程圖;
圖8描繪了根據(jù)本公開的示例實(shí)施例的示例導(dǎo)航應(yīng)用編程接口的框圖;以及
圖9描繪了根據(jù)本公開的示例方面的與導(dǎo)航api相關(guān)聯(lián)的示例導(dǎo)航器指令的框圖。
具體實(shí)施方式
現(xiàn)在將詳細(xì)參照實(shí)施例,其中的一個(gè)或多個(gè)示例在附圖中圖示。每個(gè)示例通過對實(shí)施例的解釋而不是對本公開的限制的方式來提供。事實(shí)上,對于本領(lǐng)域技術(shù)人員顯而易見的是,在不脫離本公開的范圍或精神的情況下,能夠作出對實(shí)施例的各種修改和變化。例如,作為一個(gè)實(shí)施例的一部分所圖示或描述的特征能夠與另一個(gè)實(shí)施例一起使用以產(chǎn)生另一個(gè)實(shí)施例。因此,意圖是本公開的方面覆蓋這樣的修改和變化。
本公開的示例方面涉及用于在一個(gè)或多個(gè)計(jì)算設(shè)備——諸如在瀏覽器中實(shí)現(xiàn)的基于web的軟件應(yīng)用——上實(shí)現(xiàn)的第三方軟件應(yīng)用中提供導(dǎo)航信息的應(yīng)用編程接口(“api”)、本地存儲(chǔ)的軟件應(yīng)用、以及其它應(yīng)用。在一些實(shí)施例中,api能夠允許應(yīng)用開發(fā)者在其軟件應(yīng)用中嵌入由導(dǎo)航數(shù)據(jù)提供者或其它源提供的導(dǎo)航應(yīng)用。api能夠允許開發(fā)者容易地定制和改訂(tailor)導(dǎo)航應(yīng)用以適應(yīng)不同的平臺(tái)和最終用例。
更具體地,api在被在計(jì)算設(shè)備上實(shí)現(xiàn)的軟件應(yīng)用調(diào)取(invoke)時(shí),能夠被配置為經(jīng)由通信接口(例如通過諸如互聯(lián)網(wǎng)的網(wǎng)絡(luò))從數(shù)據(jù)提供者請求和接收路由信息。api能夠被配置為基于該路由信息來呈現(xiàn)導(dǎo)航信息(例如,通過圖形用戶界面組件或通過音頻和/或振動(dòng)提示)以提供嵌入在軟件應(yīng)用中的導(dǎo)航服務(wù)。導(dǎo)航服務(wù)能夠是應(yīng)用(例如軟件應(yīng)用),其提供能夠被用于引導(dǎo)用戶從起點(diǎn)到目的地的導(dǎo)航信息。在一些實(shí)施例中,嵌入在軟件應(yīng)用中的導(dǎo)航服務(wù)能夠在用戶沿著導(dǎo)航路線或其它路徑行進(jìn)時(shí)向用戶提供導(dǎo)航信息(例如路線規(guī)劃(turn-by-turn)導(dǎo)航信息)。更具體地,在一些實(shí)施例中,導(dǎo)航服務(wù)能夠接收指引用戶從當(dāng)前位置到目的地的路線。作為一個(gè)示例,路線能夠包括一系列步驟,每個(gè)步驟描述路線部分(例如,道路的名稱或號碼、距離、行進(jìn)時(shí)間、速度限制)和操縱(maneuver)(例如左轉(zhuǎn)、右并線、直行)以到達(dá)下一個(gè)路線部分。導(dǎo)航服務(wù)能夠通過圖形用戶界面并且經(jīng)由一個(gè)或多個(gè)提示(例如音頻或視頻提示)向用戶提供路線以引導(dǎo)該用戶從原點(diǎn)到目的地。
在一些實(shí)施例中,軟件應(yīng)用能夠經(jīng)由api與由導(dǎo)航數(shù)據(jù)提供者或其它源(例如本地導(dǎo)航信息源)實(shí)現(xiàn)的路由引擎交互,以獲得路由信息和其它導(dǎo)航信息。導(dǎo)航數(shù)據(jù)提供者能夠與相對于軟件應(yīng)用的開發(fā)者分離的實(shí)體相關(guān)聯(lián)。例如,導(dǎo)航數(shù)據(jù)提供者能夠與托管地理信息系統(tǒng)的web服務(wù)器相關(guān)聯(lián)。導(dǎo)航信息能夠包括到一個(gè)或多個(gè)路點(diǎn)的路線。導(dǎo)航信息能夠進(jìn)一步包括用于結(jié)合路線和其它信息來呈現(xiàn)的地圖數(shù)據(jù)。隨著用戶穿過導(dǎo)航路線,導(dǎo)航信息能夠被連續(xù)地更新(例如,通過被實(shí)現(xiàn)為api的一部分的一個(gè)或多個(gè)事件偵聽器接口)以向用戶提供實(shí)時(shí)或近實(shí)時(shí)的導(dǎo)航信息。
api在由軟件應(yīng)用來實(shí)現(xiàn)時(shí),能夠在結(jié)合該軟件應(yīng)用來被顯示的圖形用戶界面組件中可視地呈現(xiàn)與導(dǎo)航服務(wù)相關(guān)聯(lián)的導(dǎo)航信息。例如,圖形用戶界面組件能夠顯示地圖。例如,地圖的默認(rèn)顯示能夠是地圖的鳥瞰視圖(top-downview)。在導(dǎo)航模式期間,圖形用戶界面組件能夠?qū)⒙肪€以折線(polyline)顯示在地圖上。隨著用戶導(dǎo)航路線,能夠沿著路線更新用戶的位置。例如,導(dǎo)航服務(wù)能夠提供圖形用戶界面,其中隨著用戶的位置沿著導(dǎo)航路線改變,該用戶位置沿著導(dǎo)航路線被連續(xù)地更新。能夠通過位于地圖中的記號來識別各個(gè)路點(diǎn)。能夠在圖形用戶界面組件中呈現(xiàn)其它信息,諸如到達(dá)路點(diǎn)的估計(jì)的時(shí)間或距離(“etd信息”)、羅盤界面元素、導(dǎo)航航向(navigationheading)元素等。在一些實(shí)施例中,能夠在具有或不具有圖形用戶界面組件中的導(dǎo)航信息的視覺顯示的情況下使用音頻引導(dǎo)來提供導(dǎo)航信息。
根據(jù)本公開的特定方面,api能夠包括計(jì)算機(jī)可讀指令集,其在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)促進(jìn)將導(dǎo)航應(yīng)用整合到開發(fā)者的軟件應(yīng)用中。所述指令集在由一個(gè)或多個(gè)處理器實(shí)現(xiàn)時(shí),能夠管控(govern)軟件應(yīng)用經(jīng)由api與導(dǎo)航數(shù)據(jù)提供者的交互以及將導(dǎo)航信息作為軟件應(yīng)用的一部分向用戶的顯示和/或遞送。
更具體地,與面向軟件應(yīng)用的開發(fā)者的api相關(guān)聯(lián)的示例指令能夠包括指定一個(gè)或多個(gè)參數(shù)的指令集,其管控導(dǎo)航服務(wù)的視覺輸出的顯示。api能夠進(jìn)一步包括控制導(dǎo)航服務(wù)的實(shí)現(xiàn)的指定一個(gè)或多個(gè)參數(shù)的指令集以及管控api與由導(dǎo)航數(shù)據(jù)提供者提供的路由引擎的交互的指令集。
根據(jù)本公開的特定方面,api能夠包括一個(gè)或多個(gè)可配置的事件偵聽器接口,其在被調(diào)用(call)時(shí)允許軟件應(yīng)用調(diào)取api以(例如通過網(wǎng)絡(luò)從導(dǎo)航數(shù)據(jù)提供者)獲得指示各個(gè)導(dǎo)航事件的數(shù)據(jù)。例如,導(dǎo)航事件能夠是更新的用戶位置、改變的路線、對etd信息的更新、到達(dá)路點(diǎn)等??膳渲玫氖录陕犉鹘涌谀軌虮挥糜陔S用戶沿著路線行進(jìn)而以軟件應(yīng)用開發(fā)者期望的方式連續(xù)地更新導(dǎo)航信息。例如,一個(gè)示例事件偵聽器接口能夠被用于沿著導(dǎo)航路線更新用戶的當(dāng)前位置。另一個(gè)示例事件偵聽器接口能夠被用于將etd信息更新為一個(gè)或多個(gè)路點(diǎn)。另一個(gè)示例事件偵聽器接口能夠被用于在用戶已到達(dá)特定的路點(diǎn)時(shí)發(fā)出信號。另一示例事件偵聽器接口能夠在用戶從路由引擎所確定的路線偏離并且到由路由引擎確定的路點(diǎn)的路徑改變時(shí)被使用。
在一些實(shí)施方式中,api能夠被配置為容納多個(gè)路點(diǎn)的導(dǎo)航。指示多個(gè)路點(diǎn)的數(shù)據(jù)能夠經(jīng)由api來被接收,例如以對路點(diǎn)排序的列表形式來接收。路由引擎能夠確定到所述多個(gè)路點(diǎn)的多路點(diǎn)路線。多路點(diǎn)路線能夠包括多個(gè)路線段。每個(gè)路線段能夠是多路點(diǎn)路線中的路點(diǎn)之間或多路點(diǎn)路線中的起始位置和路點(diǎn)之間的路線。
api能夠包括一個(gè)或多個(gè)事件偵聽器接口以容納基于多路點(diǎn)路線來提供導(dǎo)航信息。例如,一個(gè)或多個(gè)事件偵聽器接口能夠被配置為在到達(dá)每個(gè)路點(diǎn)時(shí)、在到下一個(gè)路點(diǎn)的etd信息改變時(shí)、或者在多路點(diǎn)路線的任何部分改變時(shí)提供通知。此外,一個(gè)或多個(gè)事件偵聽器接口能夠被配置為:獨(dú)立于到多路點(diǎn)路線中的下一個(gè)路點(diǎn)的路線而提供對沿著多路點(diǎn)路線的每個(gè)路點(diǎn)的etd信息的訪問、對每個(gè)路點(diǎn)的地理坐標(biāo)(例如緯度和經(jīng)度)的訪問、對與沿著多路點(diǎn)路線的每個(gè)路點(diǎn)之間的路線段(例如導(dǎo)航折線)的訪問、和/或?qū)τ脩粞刂嗦伏c(diǎn)路線去過何處的訪問。
以這種方式,根據(jù)本公開的示例實(shí)施例的api能夠具有以下技術(shù)效果:在各個(gè)軟件應(yīng)用中促進(jìn)導(dǎo)航數(shù)據(jù)提供者所提供的導(dǎo)航服務(wù)的整合。作為api的一部分來實(shí)現(xiàn)的一個(gè)或多個(gè)可配置事件偵聽器接口能夠被用于隨用戶沿著導(dǎo)航路線行進(jìn)而以開發(fā)者期望的方式連續(xù)地更新導(dǎo)航信息。api能夠允許針對各種最終使用需求的對導(dǎo)航服務(wù)的定制,諸如用于乘車共享(ridesharing)應(yīng)用、裝運(yùn)/遞送應(yīng)用、社交應(yīng)用、以及其它最終使用應(yīng)用。
圖1描繪了根據(jù)本公開的示例實(shí)施例的、用于使用導(dǎo)航api來將導(dǎo)航服務(wù)實(shí)現(xiàn)為軟件應(yīng)用的一部分的示例系統(tǒng)100的概覽。系統(tǒng)100能夠包括用戶設(shè)備112,其能夠經(jīng)由通信網(wǎng)絡(luò)116從導(dǎo)航數(shù)據(jù)提供者114接收導(dǎo)航數(shù)據(jù)。例如,用戶設(shè)備112能夠是智能電話、平板計(jì)算機(jī)、可穿戴設(shè)備、膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、移動(dòng)設(shè)備、能夠在操作時(shí)由用戶攜帶的設(shè)備、具有一個(gè)或多個(gè)處理器的顯示器、車輛系統(tǒng)、或者其它用戶設(shè)備112。
軟件應(yīng)用120能夠在用戶設(shè)備112上實(shí)現(xiàn)。例如,軟件應(yīng)用能夠是地圖應(yīng)用、瀏覽器、乘車共享應(yīng)用、用于協(xié)助遞送的應(yīng)用、社交媒體應(yīng)用或者可能需要向用戶提供導(dǎo)航信息的其它軟件應(yīng)用。軟件應(yīng)用120能夠本地存儲(chǔ)在用戶設(shè)備112上,或者能夠是例如經(jīng)由在用戶設(shè)備112上實(shí)現(xiàn)的瀏覽器訪問的web應(yīng)用。在一些實(shí)施例中,軟件應(yīng)用120能夠由第三方實(shí)體開發(fā),其獨(dú)立于和/或不附屬于與導(dǎo)航數(shù)據(jù)提供者114相關(guān)聯(lián)的實(shí)體。
軟件應(yīng)用120能夠調(diào)取導(dǎo)航api130以經(jīng)由通信網(wǎng)絡(luò)116從導(dǎo)航數(shù)據(jù)提供者114訪問和提供導(dǎo)航數(shù)據(jù),使得導(dǎo)航服務(wù)能夠被嵌入在軟件應(yīng)用120中。出于說明和討論的目的,本公開的示例方面對訪問來自遠(yuǎn)程導(dǎo)航數(shù)據(jù)提供者114的數(shù)據(jù)進(jìn)行討論。本領(lǐng)域普通技術(shù)人員使用本文提供的公開內(nèi)容將理解,api130能夠訪問來自其它源的數(shù)據(jù),所述源諸如來自本地源或位于用戶設(shè)備112上的應(yīng)用。
隨著攜帶用戶設(shè)備112的用戶或車輛沿著從起點(diǎn)到一個(gè)或多個(gè)目的地的路線行進(jìn),導(dǎo)航服務(wù)能夠?qū)崟r(shí)或近實(shí)時(shí)地向用戶呈現(xiàn)導(dǎo)航信息(例如路線規(guī)劃導(dǎo)航信息)。導(dǎo)航服務(wù)能夠包括圖形用戶界面組件以用于在一個(gè)或多個(gè)顯示設(shè)備上向用戶呈現(xiàn)導(dǎo)航信息。另外和/或?qū)Ш椒?wù)能夠向用戶提供指示導(dǎo)航信息(例如路線規(guī)劃)路線指引的音頻引導(dǎo)或其它通知(例如振動(dòng)通知)。
圖2描繪了根據(jù)本公開的示例實(shí)施例的、與作為軟件應(yīng)用120的圖形用戶界面122的一部分所嵌入的導(dǎo)航服務(wù)相關(guān)聯(lián)的示例圖形用戶界面組件200。圖形用戶界面組件200能夠被顯示在用戶設(shè)備112的顯示器設(shè)備上。圖形用戶界面組件200能夠包括各個(gè)界面元素,其作為導(dǎo)航服務(wù)的一部分來向用戶提供導(dǎo)航信息。如圖2所示,圖形用戶界面組件200包括地圖202以及在地圖202上呈現(xiàn)的路線210。此外,指示路點(diǎn)的記號212能夠被呈現(xiàn)在地圖202上。路線210在地圖的鳥瞰視圖上被顯示以提供路線概覽。根據(jù)本公開的示例實(shí)施例,能夠經(jīng)由軟件應(yīng)用120所取的api130從導(dǎo)航數(shù)據(jù)提供者114獲得與地圖202相關(guān)聯(lián)的數(shù)據(jù)、與路點(diǎn)212相關(guān)聯(lián)路線210和的信息、以及其它導(dǎo)航信息,其將在下面更詳細(xì)地討論。
圖3描繪了根據(jù)本公開的示例實(shí)施例的、與作為軟件應(yīng)用120的圖形用戶界面122的一部分所嵌入的導(dǎo)航服務(wù)相關(guān)聯(lián)的示例圖形用戶界面組件200的另一方面。在圖3的示例中,隨著用戶或車輛實(shí)時(shí)或近實(shí)時(shí)地通過路線,導(dǎo)航服務(wù)能夠利用圖形用戶界面組件200來提供路線規(guī)劃導(dǎo)航路線指引。圖形用戶界面組件200能夠包括各個(gè)界面元素以用于向用戶呈現(xiàn)導(dǎo)航信息。例如,圖形用戶界面組件200能夠包括地圖202和在地圖202上以折線呈現(xiàn)的路線210。圖形用戶界面組件200能夠進(jìn)一步呈現(xiàn)指示用戶或車輛沿著路線210行進(jìn)的當(dāng)前位置的標(biāo)記(indicia)230。標(biāo)記230能夠隨著用戶或車輛沿著路線210行進(jìn)而沿著路線210移動(dòng)。
圖形用戶界面組件200能夠向用戶呈現(xiàn)能夠在導(dǎo)航中有用的其它信息。例如,圖形用戶界面組件200能夠進(jìn)一步包括導(dǎo)航標(biāo)頭元素220,其能夠顯示當(dāng)前導(dǎo)航方向和與路線的當(dāng)前部分相關(guān)聯(lián)的其它信息。此外,圖形用戶界面組件220能夠顯示etd信息232,諸如到達(dá)到下一個(gè)路點(diǎn)的估計(jì)的分鐘或估計(jì)的距離。根據(jù)本公開的示例實(shí)施例,能夠經(jīng)由軟件應(yīng)用120所調(diào)取的api130來從導(dǎo)航數(shù)據(jù)提供者114或其它源獲得與地圖202、路線210等相關(guān)聯(lián)的數(shù)據(jù)。作為導(dǎo)航編程接口130的一部分來被實(shí)現(xiàn)的一個(gè)或多個(gè)事件偵聽器接口能夠被用于隨著用戶或車輛沿著路線行進(jìn)而更新導(dǎo)航信息。
當(dāng)api130在導(dǎo)航模式下操作時(shí),能夠顯示示例圖形用戶界面組件200。能夠基于各個(gè)事件來進(jìn)入導(dǎo)航模式,諸如對一個(gè)或多個(gè)路點(diǎn)的指定和/或?qū)π盘柋硎鞠M_始導(dǎo)航模式的用戶輸入的接收。在一些實(shí)施例中,當(dāng)在導(dǎo)航模式下操作時(shí),圖形用戶界面組件200能夠顯示路線210。當(dāng)不在導(dǎo)航模式下操作時(shí),圖形用戶界面組件200能夠簡單地顯示地圖的鳥瞰視圖或地圖的其它合適的視圖。
圖2和圖3描繪了根據(jù)本公開的示例實(shí)施例的、與能夠使用導(dǎo)航api130來被嵌入在應(yīng)用120中的導(dǎo)航服務(wù)相關(guān)聯(lián)的圖形用戶界面組件的一個(gè)示例實(shí)施方式。在不偏離本公開的范圍的情況下,導(dǎo)航服務(wù)能夠以其它合適的形式呈現(xiàn)導(dǎo)航信息。
再參照圖1,api130能夠被配置為與由導(dǎo)航數(shù)據(jù)提供者114實(shí)現(xiàn)的路由引擎140相接口。例如,路由引擎140能夠被配置為計(jì)算到一個(gè)或多個(gè)路點(diǎn)的路線、訪問地圖數(shù)據(jù)、基于各個(gè)導(dǎo)航事件來更新導(dǎo)航數(shù)據(jù)、以及響應(yīng)于對于來自api130的導(dǎo)航數(shù)據(jù)的請求。在一些實(shí)施例中,導(dǎo)航數(shù)據(jù)提供者114能夠包括一個(gè)或多個(gè)服務(wù)器,例如web服務(wù)器。所述一個(gè)或多個(gè)服務(wù)器能夠包括一個(gè)或多個(gè)處理器和一個(gè)或多個(gè)存儲(chǔ)器設(shè)備。所述一個(gè)或多個(gè)存儲(chǔ)器設(shè)備能夠存儲(chǔ)計(jì)算機(jī)可讀指令以實(shí)現(xiàn)例如路由引擎140。在一些實(shí)施例中,路由引擎140能夠訪問例如與地理信息系統(tǒng)115相關(guān)聯(lián)的數(shù)據(jù)。地理信息系統(tǒng)115能夠包括由數(shù)據(jù)的元素的地理坐標(biāo)索引的數(shù)據(jù)。與地理信息系統(tǒng)115相關(guān)聯(lián)的數(shù)據(jù)能夠包括例如地圖數(shù)據(jù)、路線數(shù)據(jù)、地理圖像、與各個(gè)路點(diǎn)(例如商業(yè)清單名稱、地址、地理坐標(biāo)等)相關(guān)聯(lián)的數(shù)據(jù)以及其它數(shù)據(jù)。
應(yīng)用120能夠通過在網(wǎng)絡(luò)116上經(jīng)由api130與導(dǎo)航數(shù)據(jù)提供者114進(jìn)行交互來實(shí)現(xiàn)導(dǎo)航服務(wù)。網(wǎng)絡(luò)116能夠是任何類型的通信網(wǎng)絡(luò),諸如局域網(wǎng)(例如內(nèi)聯(lián)網(wǎng))、廣域網(wǎng)(例如互聯(lián)網(wǎng))、蜂窩網(wǎng)絡(luò)、或者其某種組合。網(wǎng)絡(luò)116還能夠包括直接連接。一般而言,能夠使用各種通信協(xié)議(例如tcp/ip、http、smtp、ftp)、編碼或格式(例如html、xml)、和/或保護(hù)方案(例如vpn、安全http、ssl),使用任何類型的有線和/或無線連接來經(jīng)由網(wǎng)絡(luò)116執(zhí)行通信。
圖4描繪了根據(jù)本公開的示例實(shí)施例的、被配置為實(shí)現(xiàn)導(dǎo)航api130的示例用戶設(shè)備112。如圖所示,用戶設(shè)備112包括:指令存儲(chǔ)器152、被配置為執(zhí)行存儲(chǔ)在存儲(chǔ)器152中的指令的一個(gè)或多個(gè)處理器154、顯示器設(shè)備156、支持網(wǎng)絡(luò)通信的網(wǎng)絡(luò)接口158、以及存儲(chǔ)存儲(chǔ)器160。為了清楚,指令存儲(chǔ)器152和存儲(chǔ)存儲(chǔ)器160被分離地來圖示。然而,將理解,組件152和160也能夠是相同存儲(chǔ)器模塊內(nèi)的區(qū)域。更一般地,用戶設(shè)備112能夠包括一個(gè)或若干附加處理器、存儲(chǔ)器設(shè)備、網(wǎng)絡(luò)接口,其能夠被單獨(dú)提供或者在同一芯片或板上提供。此外,組件152和160能夠包括持久性存儲(chǔ)器(例如閃存)、易失性存儲(chǔ)器(例如ram)、或者這兩者、或者其它合適的存儲(chǔ)器。
指令存儲(chǔ)器152能夠存儲(chǔ)操作系統(tǒng)(os)170、導(dǎo)航api130、和軟件應(yīng)用120的指令集。os170能夠是專門為移動(dòng)設(shè)備開發(fā)的移動(dòng)os。因此,os170能夠包括功能,其允許軟件應(yīng)用訪問諸如無線網(wǎng)絡(luò)參數(shù)(例如無線網(wǎng)絡(luò)的身份、服務(wù)質(zhì)量)的數(shù)據(jù)以及調(diào)用諸如電話通訊、位置確定(例如經(jīng)由全球定位服務(wù)(gps)或wlan)、無線網(wǎng)絡(luò)數(shù)據(jù)呼叫發(fā)起等的服務(wù)。在其它實(shí)施方式中,例如,os170是在諸如智能電話和臺(tái)式計(jì)算機(jī)的移動(dòng)和固定設(shè)備二者上操作的通用操作系統(tǒng)。在一些示例實(shí)施方式中,os包括或基于由谷歌公司(googleinc.)開發(fā)的
例如,軟件應(yīng)用120能夠是地圖應(yīng)用、導(dǎo)航應(yīng)用、乘車共享應(yīng)用、協(xié)助遞送的應(yīng)用、社交媒體應(yīng)用等。此外,軟件應(yīng)用120能夠是web瀏覽器應(yīng)用,其調(diào)用導(dǎo)航api130以在瀏覽器窗口的所指派部分內(nèi)顯示導(dǎo)航信息。通常,導(dǎo)航api130能夠?qū)υ谟脩粼O(shè)備120上執(zhí)行的任何合適的軟件應(yīng)用可用。此外,多個(gè)不同的軟件應(yīng)用可以調(diào)取導(dǎo)航api130。
如上所述,軟件應(yīng)用120能夠調(diào)取導(dǎo)航api130以在軟件應(yīng)用120中嵌入導(dǎo)航服務(wù)。例如,在一個(gè)示例中,軟件應(yīng)用120能夠向?qū)Ш絘pi130提供一個(gè)或多個(gè)路點(diǎn)。導(dǎo)航api130能夠從遠(yuǎn)程導(dǎo)航數(shù)據(jù)提供者請求導(dǎo)航數(shù)據(jù),以基于所述一個(gè)或多個(gè)路點(diǎn)來確定導(dǎo)航路線。導(dǎo)航api130能夠包括指令集以控制由移動(dòng)設(shè)備對作為導(dǎo)航服務(wù)的一部分的導(dǎo)航信息的顯示。api130能夠包括一個(gè)或多個(gè)事件偵聽器,其被用于例如基于由作為用戶設(shè)備的一部分實(shí)現(xiàn)的定位系統(tǒng)所確定的用戶位置來更新所顯示的導(dǎo)航信息。
在一些實(shí)施例中,定位系統(tǒng)能夠包括一個(gè)或多個(gè)設(shè)備或電路以用于確定設(shè)備的位置。例如,定位設(shè)備能夠通過以下方式來確定實(shí)際或相對位置:使用衛(wèi)星導(dǎo)航定位系統(tǒng)(例如gps系統(tǒng)、galileo定位系統(tǒng)、全球?qū)Ш叫l(wèi)星系統(tǒng)(glonass)、北斗衛(wèi)星導(dǎo)航和定位系統(tǒng))、慣性導(dǎo)航系統(tǒng)、航位推算系統(tǒng)、基于ip地址、通過使用蜂窩塔或wifi熱點(diǎn)、信標(biāo)等的三角測量和/或接近度、和/或用于確定位置的其它合適的技術(shù)。
導(dǎo)航api130能夠被實(shí)現(xiàn)為一個(gè)或多個(gè)函數(shù)、數(shù)據(jù)結(jié)構(gòu)等。此外,api130能夠包括直接在處理器154上執(zhí)行的經(jīng)編譯的代碼,或者可替選地,處于諸如由應(yīng)用120在運(yùn)行時(shí)解釋的腳本語言的任何其它形式的指令。在一個(gè)示例實(shí)施方式中,api130包括開發(fā)者能夠?qū)⑵浒ㄔ谲浖?yīng)用120的代碼中的若干函數(shù)的恰當(dāng)記錄的原型,以及實(shí)現(xiàn)這些函數(shù)的指令。在一些實(shí)施例中,api130能夠作為靜態(tài)庫來被提供給開發(fā)者。
圖5描繪了根據(jù)本公開的示例實(shí)施例的、開發(fā)者能夠用來配置導(dǎo)航api130的示例指令集的框圖。例如,指令集能夠包括:初始化和錯(cuò)誤處理指令310;導(dǎo)航片段指令320,其能夠指定參數(shù)以控制導(dǎo)航服務(wù)的視覺輸出的顯示;在指令中指定的各個(gè)類330,其允許開發(fā)者例如將記號添加到地圖并指定路點(diǎn);導(dǎo)航器指令350,其能夠指定參數(shù)以控制導(dǎo)航服務(wù)的實(shí)現(xiàn);以及導(dǎo)航服務(wù)指令370,其能夠指定參數(shù)來控制與導(dǎo)航數(shù)據(jù)提供者的交互以用于請求和接收導(dǎo)航信息(例如路由信息)。在一些實(shí)施例中,導(dǎo)航服務(wù)指令370還能夠包括被用于將導(dǎo)航服務(wù)作為軟件應(yīng)用的一部分來實(shí)現(xiàn)的邏輯(例如移動(dòng)指示沿著路線的用戶位置的標(biāo)記)。
在一些實(shí)施例中,導(dǎo)航api130能夠被實(shí)現(xiàn)如下。首先,軟件應(yīng)用的開發(fā)者能夠?qū)?dǎo)航片段類320添加到其應(yīng)用以顯示導(dǎo)航服務(wù)的視覺輸出(例如圖形用戶界面組件)。開發(fā)者能夠通過指定導(dǎo)航器指令350中的一個(gè)或多個(gè)參數(shù)來控制導(dǎo)航服務(wù)。當(dāng)不處于導(dǎo)航模式時(shí),導(dǎo)航片段(navigationfragment)類320能夠被配置為顯示例如鳥瞰的概覽地圖。在導(dǎo)航器(navigator)指令350(例如,navigator.setwapoint(...))中調(diào)用設(shè)置路點(diǎn)(setwaypoint)函數(shù)能夠在地圖上以折線顯示具有每個(gè)路點(diǎn)的記號的導(dǎo)航路線。開發(fā)者能夠通過在導(dǎo)航器指令350中調(diào)用進(jìn)入導(dǎo)航模式(enternavigationmode)函數(shù)(例如,navigator.enternavigationmode())來觸發(fā)向路點(diǎn)的導(dǎo)航。
導(dǎo)航模式能夠繼續(xù),直到到達(dá)路點(diǎn)(例如由事件偵聽器所確定)或者直到在導(dǎo)航器指令350中的退出導(dǎo)航模式函數(shù)被調(diào)用(例如,navigator.exitnavigationmode())。在一些實(shí)施方式中,能夠在沒有處于自由導(dǎo)航格式的路點(diǎn)的情況下使用導(dǎo)航模式。在自由導(dǎo)航格式下,用戶的位置(例如基于用戶設(shè)備的定位系統(tǒng))能夠被用于更新用戶在地圖上的當(dāng)前位置。在一些實(shí)施例中,開發(fā)者能夠使用在導(dǎo)航片段指令320中指定的獲取地圖(getmap)函數(shù)(例如,navigationfragment.getmap())向地圖添加記號。
參照圖5,初始化和錯(cuò)誤處理指令310能夠是api130的入口點(diǎn),開發(fā)者能夠從該入口點(diǎn)獲得對導(dǎo)航器指令350的訪問。以這種方式,初始化和錯(cuò)誤處理邏輯能夠與導(dǎo)航邏輯分離地來被處理。初始化和錯(cuò)誤處理指令310能夠要求api密鑰授權(quán)開發(fā)者使用api。初始化和錯(cuò)誤處理指令310還能夠要求用戶在使用導(dǎo)航服務(wù)之前接受由導(dǎo)航數(shù)據(jù)提供者提供的條款和條件。
在一些示例實(shí)施例中,初始化和錯(cuò)誤處理指令310能夠被實(shí)現(xiàn)如下:
一個(gè)示例用例如下:
導(dǎo)航片段指令320能夠指定一個(gè)或多個(gè)參數(shù)以控制圖形用戶界面組件的實(shí)現(xiàn)。開發(fā)者能夠添加導(dǎo)航片段指令320以結(jié)合軟件應(yīng)用來顯示導(dǎo)航的視覺輸出(例如,交互式地圖和路線規(guī)劃路線指引)。在一些實(shí)施例中,導(dǎo)航片段指令320能夠被實(shí)現(xiàn)為基于android的操作平臺(tái)中的片段,而不是作為用以降低復(fù)雜性的視圖。例如,使用視圖實(shí)現(xiàn)能夠要求開發(fā)者手動(dòng)地將生命周期方法(例如oncreate()、onresume()等)轉(zhuǎn)發(fā)到該視圖。在一些實(shí)施例中,導(dǎo)航片段指令320能夠被實(shí)現(xiàn)為視圖,而不偏離本公開的范圍。
在android操作平臺(tái)中,片段能夠是能夠被放置在活動(dòng)(activity)中的應(yīng)用的用戶接口的一部分。在一些實(shí)施例中,多個(gè)片段能夠被實(shí)現(xiàn)為應(yīng)用的一部分以構(gòu)建多窗格(multi-pane)用戶界面。片段能夠具有其自己的生命周期,并且能夠接收其自己的輸入事件,其能夠在活動(dòng)正在運(yùn)行時(shí)被添加或去除。出于說明和討論的目的,討論了在android操作平臺(tái)中實(shí)現(xiàn)導(dǎo)航片段指令320的本公開的示例方面。在不偏離本公開的范圍的情況下,導(dǎo)航片段指令320能夠以其它方式實(shí)現(xiàn)以提供類似的功能。
導(dǎo)航片段指令320能夠包括允許開發(fā)者控制與導(dǎo)航服務(wù)相關(guān)聯(lián)的圖形用戶界面組件的哪些方面被示出的參數(shù)。例如,開發(fā)者能夠利用導(dǎo)航片段指令320中的構(gòu)建器函數(shù)(例如,navigationfragment.builder)構(gòu)造圖形用戶界面。在一些實(shí)施例中,開發(fā)者能夠選擇是否來顯示導(dǎo)航標(biāo)頭、羅盤元素、etd信息、或者與導(dǎo)航服務(wù)結(jié)合的其它信息。
在一個(gè)實(shí)施例中,圖形用戶界面組件能夠被構(gòu)造如下:
作為另一個(gè)示例,圖形用戶界面組件能夠使用xml被構(gòu)造如下:
在一些實(shí)施例中,片段類接口能夠被實(shí)現(xiàn)如下:
在替選實(shí)施例中,圖形用戶界面組件還能夠被實(shí)現(xiàn)為android操作平臺(tái)中的視圖而不是片段。當(dāng)使用導(dǎo)航視圖時(shí),能夠從應(yīng)用活動(dòng)轉(zhuǎn)發(fā)各個(gè)生命周期事件。
例如,在一個(gè)實(shí)施例中,導(dǎo)航視圖能夠被實(shí)現(xiàn)如下。
可能需要轉(zhuǎn)發(fā)以下生命周期方法以用于導(dǎo)航視圖指令集:oncreate、onstart、onresume、onpause、onstop、ondestroy、onconfigurationchanged、onsaveinstancestate。
在一些實(shí)施例中,api130能夠包括各個(gè)類指令330,諸如地圖類、路點(diǎn)類、緯度/緯度類、和相機(jī)類。地圖類能夠使開發(fā)者向地圖添加路點(diǎn)。地圖類還能夠包括各個(gè)函數(shù)以控制圖形用戶界面組件中的對地圖的描繪。例如,在一些實(shí)施方式中,地圖類能夠被實(shí)現(xiàn)如下:
路點(diǎn)類能夠根據(jù)指示路點(diǎn)的位置的各個(gè)數(shù)據(jù)來創(chuàng)建或指定航路點(diǎn),所述數(shù)據(jù)諸如:地點(diǎn)識別、地址、緯度/經(jīng)度坐標(biāo)、語義名稱、或其它地點(diǎn)識別。在一些實(shí)施方式中,路點(diǎn)類能夠被指定如下:
lat/lng(經(jīng)/緯度)類能夠被用于至少部分地基于指示緯度和經(jīng)度的數(shù)據(jù)來生成指示地點(diǎn)位置的緯度/經(jīng)度變量。在一個(gè)示例中,lat/lng類能夠被實(shí)現(xiàn)如下:
能夠?qū)崿F(xiàn)的另一個(gè)示例類能夠是相機(jī)類,其能夠被用于調(diào)整被示為導(dǎo)航的一部分的地圖的位置和視角(perspective)。能夠使用被指定為導(dǎo)航片段的一部分的獲取相機(jī)接口來獲得對當(dāng)前相機(jī)的引用。在一個(gè)示例中,相機(jī)類能夠被實(shí)現(xiàn)如下:
導(dǎo)航器指令350能夠指定一個(gè)或多個(gè)參數(shù)以控制軟件應(yīng)用實(shí)現(xiàn)導(dǎo)航服務(wù)。在一些實(shí)施例中,導(dǎo)航器指令350能夠被實(shí)現(xiàn)為android操作平臺(tái)中的單例。這能夠允許開發(fā)者實(shí)現(xiàn)導(dǎo)航器指令350,而無需使用導(dǎo)航片段指令320。因此,導(dǎo)航服務(wù)能夠在沒有圖形用戶界面組件的情況下提供導(dǎo)航信息(例如使用音頻通知)。當(dāng)用戶在導(dǎo)航時(shí)經(jīng)由調(diào)取api130的應(yīng)用來完成全屏任務(wù)時(shí),這能夠是有用的。此外,可能不需要在給定時(shí)間實(shí)現(xiàn)多于一個(gè)的導(dǎo)航器指令集。
例如,導(dǎo)航器指令350能夠確定到一個(gè)或多個(gè)目的地路點(diǎn)的路線是否已經(jīng)被成功地計(jì)算和接收,并且能夠被配置為提供指示是否接收到路線的信息,或者是否存在各個(gè)錯(cuò)誤(例如網(wǎng)絡(luò)錯(cuò)誤)。導(dǎo)航器指令350能夠進(jìn)一步設(shè)置一個(gè)或多個(gè)路點(diǎn),并且能夠控制進(jìn)入和退出到導(dǎo)航模式。導(dǎo)航器指令350能夠被用于啟用能夠模擬沿著所計(jì)算的路線的駕駛的駕駛模擬。導(dǎo)航器指令350還能夠指定與音頻指導(dǎo)相關(guān)聯(lián)的參數(shù),以在導(dǎo)航期間提供音頻提示或振動(dòng)提示。
在一個(gè)示例實(shí)施例中,導(dǎo)航器指令350能夠被實(shí)現(xiàn)如下:
根據(jù)本公開的示例方面,導(dǎo)航器指令350能夠?qū)崿F(xiàn)一個(gè)或多個(gè)事件偵聽器接口360。事件偵聽器接口360能夠利用導(dǎo)航器指令350來被注冊。事件偵聽器接口360能夠被用于回調(diào)以獲得與一個(gè)或多個(gè)導(dǎo)航事件相關(guān)聯(lián)的數(shù)據(jù),以更新作為導(dǎo)航服務(wù)的一部分來提供的導(dǎo)航信息。導(dǎo)航事件能夠是能夠影響向用戶呈現(xiàn)的導(dǎo)航信息的任何事件。例如,導(dǎo)航事件能夠是用戶位置的變化、交通狀況的變化、一個(gè)或多個(gè)路點(diǎn)的變化、路線信息的變化、etd信息的變化等。以這種方式,事件偵聽器能夠被用于隨著用戶沿著路線行進(jìn)或?qū)Ш蕉伦鳛閷?dǎo)航服務(wù)的一部分來呈現(xiàn)的導(dǎo)航信息。在一個(gè)示例中,事件偵聽器接口360能夠利用如下導(dǎo)航器指令350來被注冊:
圖6描繪了根據(jù)本公開的示例實(shí)施例的、能夠被實(shí)現(xiàn)為導(dǎo)航器指令350的一部分的一個(gè)或多個(gè)事件偵聽器接口360的框圖。如圖6所圖示,一個(gè)或多個(gè)事件偵聽器接口360能夠包括位置偵聽器接口362、路線改變偵聽器接口364、到達(dá)偵聽器接口366、和/或etd偵聽器接口368。事件偵聽器接口360能夠是可配置事件偵聽器接口360,使得開發(fā)者能夠在與api130相關(guān)聯(lián)的指令——諸如在導(dǎo)航器指令350中指定事件偵聽器接口360的各個(gè)設(shè)置和參數(shù)。
位置偵聽器接口362能夠被配置為(例如通過導(dǎo)航器接口)被調(diào)用以更新導(dǎo)航服務(wù)中的用戶的當(dāng)前位置。以這種方式,導(dǎo)航服務(wù)能夠隨著用戶的當(dāng)前位置被更新而沿著導(dǎo)航路線顯示用戶的當(dāng)前位置。一個(gè)示例位置偵聽器接口362能夠被實(shí)現(xiàn)如下:
路線改變偵聽器接口364能夠被配置為當(dāng)所計(jì)算的路線改變時(shí)被調(diào)用以更新路線信息。例如,當(dāng)計(jì)算出更好的路線時(shí)或者當(dāng)用戶偏離推薦路線時(shí),能夠更新路線信息。由路線改變偵聽器接口364提供的路線能夠結(jié)合作為導(dǎo)航服務(wù)的一部分的地圖來以折線提供以用于顯示。一個(gè)示例路線改變偵聽器接口364能夠被實(shí)現(xiàn)如下:
到達(dá)偵聽器接口366能夠在用戶已經(jīng)到達(dá)指定的路點(diǎn)時(shí)被調(diào)用以發(fā)出信號。例如,當(dāng)用戶已經(jīng)到達(dá)路點(diǎn)時(shí),能夠調(diào)用到達(dá)偵聽器接口366以退出導(dǎo)航模式。一個(gè)示例到達(dá)偵聽器接口366能夠被實(shí)現(xiàn)如下:
當(dāng)?shù)铰伏c(diǎn)的剩余時(shí)間或剩余距離已經(jīng)改變超過閾值時(shí),能夠調(diào)用etd偵聽器接口368(例如,剩余時(shí)間或剩余距離偵聽器接口)。該閾值能夠被指定為導(dǎo)航器指令350中的參數(shù)。etd信息(例如剩余時(shí)間或剩余距離)能夠作為導(dǎo)航事件的結(jié)果而改變,諸如用戶移動(dòng)(例如用戶位置的改變)、交通狀況的改變、路線的改變、一個(gè)或多個(gè)路點(diǎn)的改變、或者當(dāng)剩余時(shí)間或剩余距離首次變得已知時(shí)。更新的etd信息能夠作為導(dǎo)航服務(wù)的一部分被呈現(xiàn)給用戶,例如作為圖形用戶界面組件的一部分或通過音頻引導(dǎo)或其它通知。一個(gè)示例etd偵聽器接口368能夠被實(shí)現(xiàn)如下:
圖5中所示的導(dǎo)航服務(wù)指令370實(shí)際上能夠驅(qū)動(dòng)導(dǎo)航服務(wù)(例如能夠?yàn)閷?dǎo)航服務(wù)提供邏輯),并且能夠由導(dǎo)航器指令350中闡述的參數(shù)控制。導(dǎo)航服務(wù)指令370能夠控制與路由引擎的交互,以提供基于導(dǎo)航器指令350中指定的參數(shù)的導(dǎo)航信息和由一個(gè)或多個(gè)事件偵聽器接口360確定的導(dǎo)航事件。在一些實(shí)施例中,開發(fā)者不指定導(dǎo)航服務(wù)指令370的參數(shù),并且導(dǎo)航服務(wù)指令充當(dāng)api130的內(nèi)部接口。開發(fā)者能夠例如通過將對導(dǎo)航指令的引用添加到軟件應(yīng)用的manifest.xml來實(shí)現(xiàn)導(dǎo)航服務(wù)指令370。例如,導(dǎo)航服務(wù)指令370能夠被實(shí)現(xiàn)如下:
<serviceandroid:name=
"com.navprovider.android.libraries.navigation.navigationservice"/>
圖7描繪了根據(jù)本公開的示例實(shí)施例的、使用導(dǎo)航api將導(dǎo)航服務(wù)整合到軟件應(yīng)用中的一個(gè)示例方法(400)的流程圖。方法(400)能夠使用例如圖5中所描繪的api130來實(shí)現(xiàn)。圖7出于說明和討論的目的而描繪了以特定順序執(zhí)行的步驟。本領(lǐng)域普通技術(shù)人員使用本文提供的公開內(nèi)容將理解,在不偏離本公開的范圍的情況下,能夠調(diào)整、修改、重新布置、省略、和/或擴(kuò)展本文所公開方法中的任何一個(gè)的各個(gè)步驟。
在(402)處,該方法能夠包括訪問與導(dǎo)航api130相關(guān)聯(lián)的數(shù)據(jù)(例如文件)并將其包含到軟件應(yīng)用中。例如,用戶能夠例如通過網(wǎng)絡(luò)(例如互聯(lián)網(wǎng))下載與導(dǎo)航api130相關(guān)聯(lián)的文件,并且能夠?qū)?dǎo)航api文件提供到與軟件應(yīng)用相關(guān)聯(lián)的gradleroot下的子目錄中。與導(dǎo)航api130和第三方依賴關(guān)系相關(guān)聯(lián)的庫能夠被添加到軟件應(yīng)用。
在(404)處,能夠獲得用于啟用導(dǎo)航api130的訪問密鑰。在一些實(shí)施例中,能夠從導(dǎo)航數(shù)據(jù)提供者獲得訪問密鑰。訪問密鑰能夠被添加到軟件應(yīng)用,例如,添加到與軟件應(yīng)用相關(guān)聯(lián)的androidmanifest.xml。
在(406)處,開發(fā)者能夠通過指定導(dǎo)航片段指令集320(或在一些實(shí)施例中,導(dǎo)航視圖指令集)中的參數(shù)來構(gòu)造與導(dǎo)航服務(wù)相關(guān)聯(lián)的圖形用戶界面組件。這能夠向軟件應(yīng)用添加交互式地圖和路線規(guī)劃導(dǎo)航圖形用戶界面組件。
在(408)處,開發(fā)者能夠使用初始化和錯(cuò)誤處理指令來初始化導(dǎo)航api130。一旦導(dǎo)航api被初始化,導(dǎo)航器指令350就能夠被用于控制和配置導(dǎo)航服務(wù),如在(410)處所示。例如,能夠指定各個(gè)函數(shù)以確定何時(shí)開始和退出導(dǎo)航模式。根據(jù)本公開的特定實(shí)施例,能夠?qū)⒁粋€(gè)或多個(gè)事件偵聽器接口360包括在導(dǎo)航器指令350中,以捕獲諸如到達(dá)、路線改變、用戶位置改變、etd信息改變等的導(dǎo)航事件。在(412)處,該方法能夠包括利用所整合的導(dǎo)航服務(wù)來構(gòu)建和測試軟件應(yīng)用。
在一些示例實(shí)施例中,導(dǎo)航api130能夠被配置為容納多個(gè)不同路點(diǎn)間的多路點(diǎn)路由。例如,圖8描繪了被配置為容納多路點(diǎn)路由的示例導(dǎo)航api130的框圖。導(dǎo)航api130能夠類似于圖5所示的導(dǎo)航api130。例如,圖8的導(dǎo)航api130能夠包括初始化和錯(cuò)誤處理指令310、導(dǎo)航片段指令320(或在一些實(shí)施例中,導(dǎo)航視圖指令)、各個(gè)類指令330(例如,地圖類、路點(diǎn)類、經(jīng)緯度類、相機(jī)類等)。此外,api130能夠包括導(dǎo)航器指令350和導(dǎo)航服務(wù)指令370。導(dǎo)航器指令350能夠指定參數(shù)以控制導(dǎo)航服務(wù)的實(shí)現(xiàn),以及導(dǎo)航服務(wù)指令370,其能夠控制與導(dǎo)航數(shù)據(jù)提供者的交互,以用于請求和接收導(dǎo)航信息。
導(dǎo)航器指令350能夠包括一個(gè)或多個(gè)多路點(diǎn)函數(shù)510和一個(gè)或多個(gè)多路點(diǎn)事件偵聽器接口520以容納由導(dǎo)航服務(wù)進(jìn)行的多路點(diǎn)路由。多路點(diǎn)事件偵聽器接口520能夠利用導(dǎo)航器指令350來被注冊。事件偵聽器接口520能夠被用于回調(diào)以獲得與一個(gè)或多個(gè)導(dǎo)航事件相關(guān)聯(lián)的數(shù)據(jù),以更新作為導(dǎo)航服務(wù)的一部分提供的導(dǎo)航信息。例如,導(dǎo)航事件能夠是用戶位置的改變、交通狀況的改變、多個(gè)路點(diǎn)中的一個(gè)或多個(gè)的改變、多路點(diǎn)路線中的一個(gè)或多個(gè)路線段的路線信息的改變、到多路點(diǎn)路線中的下一個(gè)目的地的etd信息的改變等。
多路點(diǎn)函數(shù)510能夠被用于實(shí)現(xiàn)與多路點(diǎn)路由相關(guān)聯(lián)的各個(gè)函數(shù)。例如,多路點(diǎn)函數(shù)能夠被用于:設(shè)置一個(gè)或多個(gè)路點(diǎn)以制作多路點(diǎn)路線,訪問針對沿著多路點(diǎn)路線的多個(gè)路點(diǎn)中的每一個(gè)的etd信息,訪問與沿著多路點(diǎn)路線的多個(gè)路點(diǎn)中的每一個(gè)相關(guān)聯(lián)的位置信息,訪問沿著多路點(diǎn)路線的路點(diǎn)之間的路線段,以及訪問用戶在特定導(dǎo)航會(huì)話期間沿著多路點(diǎn)路線去過何處。
圖9描繪了根據(jù)本公開的示例性實(shí)施例的、能夠被用作導(dǎo)航器指令350的一部分或者利用導(dǎo)航器指令350來注冊以實(shí)現(xiàn)多路點(diǎn)導(dǎo)航的、各個(gè)多路點(diǎn)函數(shù)510和事件偵聽器接口520的框圖。例如,多路點(diǎn)函數(shù)510能夠包括一個(gè)或多個(gè)路點(diǎn)函數(shù)512,其能夠被用于設(shè)置和管理多路點(diǎn)路線的多個(gè)路點(diǎn)。在一個(gè)實(shí)施例中,路點(diǎn)函數(shù)512能夠包括設(shè)置多路點(diǎn)函數(shù)、設(shè)置單路點(diǎn)函數(shù)、繼續(xù)到下一個(gè)路點(diǎn)函數(shù)、和清除路點(diǎn)函數(shù)。設(shè)置多路點(diǎn)函數(shù)能夠被配置為設(shè)置經(jīng)由路點(diǎn)列表輸入的多路點(diǎn)路線的多個(gè)路點(diǎn)。設(shè)置多路點(diǎn)函數(shù)將設(shè)置多個(gè)路點(diǎn)(優(yōu)先于任何先前的路點(diǎn)),其能夠按列表中指定的順序來被訪問。該函數(shù)能夠返回路線狀態(tài)函數(shù)的future(其確定所計(jì)算的路線的狀態(tài))。如果針對多個(gè)路點(diǎn)生成了多路點(diǎn)路線,則能夠解決為ok。能夠針對網(wǎng)絡(luò)或配額錯(cuò)誤生成錯(cuò)誤代碼。在一個(gè)實(shí)施例中,設(shè)置多路點(diǎn)函數(shù)能夠在導(dǎo)航器指令350中被實(shí)現(xiàn)如下:
listenableresultfuture<routestatus>setdestinations(list<waypoint>destinations)
設(shè)置單路點(diǎn)函數(shù)能夠作為設(shè)置導(dǎo)航路線的單個(gè)路點(diǎn)的便利方法來使用。在一個(gè)實(shí)施例中,設(shè)置單路點(diǎn)函數(shù)能夠在導(dǎo)航器指令350中被實(shí)現(xiàn)如下:
listenableresultfuture<routestatus>setdestination(waypointdestination)
繼續(xù)到下一個(gè)路點(diǎn)函數(shù)能夠被用于啟動(dòng)到多路點(diǎn)導(dǎo)航區(qū)段中的下一個(gè)路點(diǎn)的導(dǎo)航。在一些實(shí)施例中,能夠要求顯式地調(diào)用該函數(shù)。在這些實(shí)施例中,api可以不自動(dòng)移動(dòng)到下一個(gè)路點(diǎn)。如果多路點(diǎn)路線中沒有剩余路點(diǎn),則繼續(xù)到下一個(gè)目標(biāo)函數(shù)能夠返回異常。在一些實(shí)施例中,繼續(xù)到下一個(gè)目的地函數(shù)能夠在導(dǎo)航器指令350中被實(shí)現(xiàn)如下:
voidcontinuetonextdestination()throwsnonextdestinationexception
towaypointcontinuetonextdestination()
清除路點(diǎn)函數(shù)能夠被用于清除一個(gè)或多個(gè)(例如所有)先前設(shè)置的路點(diǎn)。如果導(dǎo)航正在運(yùn)行,則此函數(shù)也能夠停止導(dǎo)航。在一些實(shí)施例中,能夠在導(dǎo)航器指令350中實(shí)現(xiàn)清除路點(diǎn)函數(shù),如下:
voidcleardesintations()
如圖9所示,一個(gè)或多個(gè)事件偵聽器520能夠包括到達(dá)事件偵聽器接口522。到達(dá)事件偵聽器接口能夠在用戶已到達(dá)特定路點(diǎn)時(shí)被調(diào)用。在一些實(shí)施例中,到達(dá)事件偵聽器接口522能夠如下地利用導(dǎo)航器指令350注冊:
voidarrivallistener.onarrivedatwaypoint(waypointwaypoint)
一個(gè)或多個(gè)事件偵聽器520能夠進(jìn)一步包括etd偵聽器接口524。當(dāng)?shù)蕉嗦伏c(diǎn)路線的多個(gè)路點(diǎn)中的下一個(gè)路點(diǎn)的剩余距離或剩余時(shí)間改變超過閾值時(shí),能夠調(diào)用etd偵聽器接口來更新etd信息。閾值能夠由開發(fā)者在導(dǎo)航器指令中指定。例如,在一些實(shí)施例中,etd偵聽器接口524能夠如下來利用導(dǎo)航器指令350注冊:
多路點(diǎn)函數(shù)510能夠包括獲取etd函數(shù)514。獲取etd函數(shù)能夠獲得針對沿著多路點(diǎn)路線的指定路點(diǎn)的etd信息(例如剩余時(shí)間和/或剩余距離)。在一些實(shí)施例中,獲取etd函數(shù)514能夠在導(dǎo)航器指令350中被實(shí)現(xiàn)如下:
@nullabletimeanddistancegettimeanddistance(waypointwaypoint)
多路點(diǎn)函數(shù)510能夠進(jìn)一步包括獲取下一個(gè)etd函數(shù)。獲得下一個(gè)etd函數(shù)能夠向多路點(diǎn)路線中的下一個(gè)路點(diǎn)返回etd信息(例如剩余時(shí)間和/或剩余距離)。如果不存在下一個(gè)路點(diǎn),則函數(shù)能夠返回空。在一些實(shí)施例中,獲取下一個(gè)etd函數(shù)能夠在導(dǎo)航器指令350中被實(shí)現(xiàn)如下:
@nullabletimeanddistancegetnexttimeanddistance()
事件偵聽器接口520能夠進(jìn)一步包括路線改變事件偵聽器接口526。路線改變事件偵聽器接口526能夠利用導(dǎo)航器指令來注冊,以在多路點(diǎn)導(dǎo)航路線改變時(shí)提供更新。當(dāng)多路點(diǎn)導(dǎo)航路線的任何路線段改變時(shí),能夠調(diào)用路線改變事件偵聽器接口526。例如,路線改變事件偵聽器接口526能夠在以下情況被調(diào)用:在初始多路點(diǎn)路線改變時(shí)、在用戶偏離導(dǎo)航路線時(shí)、在該用戶手動(dòng)選擇另一個(gè)導(dǎo)航路線的情況下等。在一些實(shí)施例中,路線改變事件偵聽器接口526能夠在導(dǎo)航器指令350中被實(shí)現(xiàn)如下:
在一些實(shí)施例中,etd信息(例如,timeanddistance)是不可變類型。例如,timeanddistance能夠被實(shí)現(xiàn)如下:
多路點(diǎn)函數(shù)510能夠包括獲得路線段函數(shù)516。獲得路線段函數(shù)能夠包括:獲得當(dāng)前路線段函數(shù)以返回到下一個(gè)路點(diǎn)的當(dāng)前路線段,列出路線段函數(shù)以列出多路點(diǎn)導(dǎo)航路線中的所有路線段,以及獲得行進(jìn)路線段,以獲得在多路點(diǎn)導(dǎo)航路線中已經(jīng)行進(jìn)的路線段。在一些實(shí)施例中,獲得路線段函數(shù)能夠被實(shí)現(xiàn)如下:
在一些實(shí)施例中,routesegment能夠是不可變類型。例如,routesegment能夠被實(shí)現(xiàn)如下:
事件偵聽器接口520能夠僅以包括位置偵聽器接口528。位置偵聽器接口528能夠類似于關(guān)于圖2所討論的位置偵聽器接口362。位置偵聽器接口528能夠被配置為(例如通過導(dǎo)航器接口)被調(diào)用以更新導(dǎo)航服務(wù)中的用戶的當(dāng)前位置。以這種方式,導(dǎo)航服務(wù)能夠在用戶的當(dāng)前位置被更新時(shí)沿著多點(diǎn)導(dǎo)航路線來顯示用戶的當(dāng)前位置。
本文討論的技術(shù)涉及服務(wù)器、數(shù)據(jù)庫、軟件應(yīng)用、以及其它基于計(jì)算機(jī)的系統(tǒng),以及所采取的動(dòng)作和發(fā)送到這樣的系統(tǒng)和從其發(fā)送的信息。本領(lǐng)域普通技術(shù)人員將認(rèn)識到,基于計(jì)算機(jī)的系統(tǒng)的固有靈活性允許組件間的任務(wù)和功能的極其多種的可能的配置、組合、和劃分。例如,本文所討論的服務(wù)器進(jìn)程可以使用單個(gè)服務(wù)器或組合工作的多個(gè)服務(wù)器來實(shí)現(xiàn)。數(shù)據(jù)庫和應(yīng)用可以在單個(gè)系統(tǒng)上實(shí)現(xiàn)或者跨多個(gè)系統(tǒng)分布。分布式組件可以順序或并行操作。
雖然已經(jīng)關(guān)于本主題的具體示例實(shí)施例詳細(xì)描述了本主題,但是將理解的是,本領(lǐng)域技術(shù)人員在獲得對前述的理解后可以容易地產(chǎn)生對這樣的實(shí)施例的更改、變型、和等同物。因此,本公開的范圍是通過示例而不是限制的方式,并且本公開不排除包括對本主題的這樣的修改、變化、和/或添加,這對于本領(lǐng)域普通技術(shù)人員將是顯而易見的。