跡,則由軌跡屬性設(shè)置模塊110設(shè)置已繪制軌跡的屬性;如果用戶不保留當(dāng)前的手繪軌跡,則由手繪軌跡清除模塊119清除當(dāng)前的手繪軌跡。
[0088]手繪軌跡清除模塊119用于清除屏幕上的當(dāng)前手繪軌跡,并將與該軌跡對(duì)應(yīng)的緩沖區(qū)范圍內(nèi)道路的偏好屬性權(quán)重設(shè)置為1,之后由屏幕感應(yīng)模塊104感應(yīng)用戶手指的動(dòng)作。需要說明的是,此處清除的是屏幕上的當(dāng)前手繪軌跡,而初始化模塊100清除的是屏幕上的所有手繪軌跡,這是兩者的不同之處。
[0089]軌跡屬性設(shè)置模塊110用于在第六判斷模塊109的判斷結(jié)果為是時(shí),對(duì)所保留的當(dāng)前手繪軌跡的偏好權(quán)重屬性進(jìn)行設(shè)置。
[0090]手繪軌跡存儲(chǔ)模塊111用于對(duì)設(shè)置好偏好權(quán)重屬性的手繪軌跡進(jìn)行存儲(chǔ)。
[0091]第七判斷模塊112用于判斷所有手繪軌跡的輸入是否結(jié)束。具體判斷方式及判斷結(jié)果為:第一,用戶通過相應(yīng)操作按鍵來確認(rèn)所有手繪軌跡的輸入結(jié)束;第二,用戶在設(shè)定的時(shí)間內(nèi)未對(duì)導(dǎo)航系統(tǒng)進(jìn)行任何操作,則認(rèn)為所有手繪軌跡的輸入尚未結(jié)束。如果用戶確認(rèn)所有手繪軌跡的輸入已結(jié)束,則調(diào)用軌跡緩沖區(qū)模塊113構(gòu)建已繪制手繪軌跡的緩沖區(qū);如果所有手繪軌跡的輸入尚未結(jié)束,則調(diào)用屏幕感應(yīng)模塊104,繼續(xù)根據(jù)用戶的操作來繪制手繪軌跡。
[0092]軌跡緩沖區(qū)模塊113用于構(gòu)建每一手繪軌跡的緩沖區(qū)。具體構(gòu)建方法為:首先設(shè)定緩沖區(qū)的邊界距離,單位是屏幕坐標(biāo)的長(zhǎng)度單位;其次根據(jù)設(shè)定的距離,對(duì)每條手繪軌跡構(gòu)建緩沖區(qū),緩沖區(qū)的屬性與其手繪軌跡的屬性相同。
[0093]地理坐標(biāo)轉(zhuǎn)換模塊114用于將觸摸屏上的緩沖區(qū)內(nèi)的屏幕坐標(biāo)轉(zhuǎn)換為地圖數(shù)據(jù)庫(kù)中的地理坐標(biāo)。
[0094]緩沖區(qū)道路查找模塊115用于查找屬于緩沖區(qū)內(nèi)的道路。查找的基準(zhǔn)有兩種,基準(zhǔn)一是查找落入緩沖區(qū)內(nèi)長(zhǎng)度超過設(shè)定比例的道路,基準(zhǔn)二是查找完全包含在緩沖區(qū)中的道路。二者可選其一,其中基準(zhǔn)一選取的道路數(shù)要多于基準(zhǔn)二。
[0095]道路權(quán)值調(diào)整模塊116用于調(diào)整緩沖區(qū)內(nèi)道路的偏好權(quán)重(或稱權(quán)值)屬性。偏好權(quán)重的調(diào)整界面可采用觸摸滾動(dòng)條的形式。當(dāng)滑塊處于滾動(dòng)條中央時(shí)表示偏好權(quán)重為1,如果用戶希望沿手繪路線行駛,則向滾動(dòng)條的一端移動(dòng)滑塊,并且滑塊距滾動(dòng)條中央偏移越大,表示用戶希望沿手繪路線行駛的意愿越強(qiáng),則對(duì)應(yīng)的偏好權(quán)重越大;如果用戶希望回避手繪路線,則向滾動(dòng)條的另一端移動(dòng)滑塊,并且滑塊距滾動(dòng)條中央偏移越大,表示用戶希望規(guī)避手繪路線的意愿越強(qiáng),則對(duì)應(yīng)的偏好權(quán)重越小。緩沖區(qū)內(nèi)道路的偏好權(quán)重屬性調(diào)整好后,根據(jù)調(diào)整后的道路的偏好權(quán)重屬性計(jì)算道路的通行能力權(quán)重。
[0096]第八判斷模塊117用于判斷用戶是否開始導(dǎo)航規(guī)劃。具體判斷方式及判斷結(jié)果為:第一,用戶通過相應(yīng)操作按鍵來確認(rèn)開始導(dǎo)航規(guī)劃;第二,用戶在設(shè)定的時(shí)間內(nèi)未對(duì)導(dǎo)航系統(tǒng)進(jìn)行任何操作,則認(rèn)為用戶不進(jìn)行導(dǎo)航規(guī)劃。如果用戶確認(rèn)開始導(dǎo)航規(guī)劃,則調(diào)用初始化模塊100清除用戶輸入的手繪軌跡,之后由導(dǎo)航路徑規(guī)劃模塊101(即對(duì)應(yīng)權(quán)利要求中的導(dǎo)航路徑重新規(guī)劃子模塊)開始進(jìn)行導(dǎo)航規(guī)劃;如果用戶不進(jìn)行導(dǎo)航規(guī)劃,則調(diào)用屏幕感應(yīng)模塊104,繼續(xù)感應(yīng)用戶手指在觸摸屏上的移動(dòng)。
[0097]實(shí)施例3,一種導(dǎo)航系統(tǒng)中沿手繪路線的路徑規(guī)劃方法。
[0098]本實(shí)施例所提供的導(dǎo)航系統(tǒng)中沿手繪路線的路徑規(guī)劃方法包括如下三個(gè)步驟:
[0099]第一,按照傳統(tǒng)的導(dǎo)航路徑進(jìn)行規(guī)劃,即:根據(jù)用戶設(shè)置的出發(fā)地和目的地(還可以設(shè)置必經(jīng)地和回避地等),按照傳統(tǒng)的最短路徑查找方式規(guī)劃出一條導(dǎo)航路徑。
[0100]第二,若用戶對(duì)第一步所規(guī)劃出的導(dǎo)航路徑不滿意,則在此步驟中根據(jù)用戶手指在觸摸屏上的移動(dòng)繪制手繪軌跡(或稱手繪路線),之后設(shè)置每一手繪軌跡的偏好權(quán)重屬性并存儲(chǔ)。本發(fā)明中的手繪軌跡包括兩種路徑類型,分別為用戶希望行駛的路徑類型和用戶希望回避的路徑類型。
[0101]第三,判斷手繪軌跡周圍的道路,調(diào)整這些道路的通行能力的權(quán)重。如果這些道路在希望行駛的手繪路徑周圍,則增大道路的通行能力的權(quán)重;如果這些道路在希望回避的手繪路徑周圍,則降低道路的通行能力的權(quán)重。根據(jù)調(diào)整后的道路的通行能力的權(quán)重,按照啟發(fā)式路徑查找方式規(guī)劃出一條通行能力最大的導(dǎo)航路徑。
[0102]實(shí)施例4,另一種導(dǎo)航系統(tǒng)中沿手繪路線的路徑規(guī)劃方法。
[0103]如圖2所示,本實(shí)施例所提供的導(dǎo)航系統(tǒng)中沿手繪路線的路徑規(guī)劃方法包括如下步驟:
[0104]首先調(diào)用初始化模塊100對(duì)屏幕和內(nèi)存進(jìn)行初始化,清除用戶輸入的手繪軌跡,將道路的偏好權(quán)重屬性賦值為1,之后進(jìn)入導(dǎo)航規(guī)劃。進(jìn)入導(dǎo)航規(guī)劃之后的步驟分別如下:
[0105]步驟S1:開始常規(guī)導(dǎo)航路徑規(guī)劃。由用戶指定出發(fā)地和目的地,出發(fā)地即為導(dǎo)航儀所處的位置,如圖3所示,圖中笑臉符號(hào)表示導(dǎo)航儀所處的出發(fā)地,五星表示目的地。通過導(dǎo)航路徑規(guī)劃模塊101計(jì)算從導(dǎo)航儀所在地到目的地的最優(yōu)規(guī)劃路徑,計(jì)算使用的是啟發(fā)式搜索方法,例如A*算法。其中道路的通行能力權(quán)重為道路預(yù)設(shè)的通行能力權(quán)重和道路的偏好權(quán)重的乘積。圖3中粗線所示的是一條規(guī)劃路徑。
[0106]步驟S2:判斷用戶是否開始導(dǎo)航操作,具體判斷方式及判斷結(jié)果為:第一,用戶通過相應(yīng)操作按鍵來確認(rèn)開始導(dǎo)航操作;第二,用戶在設(shè)定的時(shí)間內(nèi)未對(duì)導(dǎo)航系統(tǒng)進(jìn)行任何操作,則此時(shí)認(rèn)為用戶不開始導(dǎo)航。如果用戶確認(rèn)開始導(dǎo)航,則導(dǎo)航規(guī)劃結(jié)束;反之,則跳轉(zhuǎn)至步驟S3。
[0107]步驟S3:判斷用戶確認(rèn)需要進(jìn)行手繪軌跡輸入還是更改目的地。如果用戶確認(rèn)進(jìn)行手繪軌跡輸入,則執(zhí)行步驟S4 ;如果用戶需要更改目的地,則跳轉(zhuǎn)至步驟SI。
[0108]步驟S4:通過屏幕感應(yīng)模塊104感應(yīng)用戶在觸摸屏上的手指位置。
[0109]步驟S5:判斷用戶是否選中已經(jīng)繪制的手繪軌跡。具體判斷基準(zhǔn)為,判斷用戶在觸摸屏上的觸摸點(diǎn)的屏幕坐標(biāo)是否落在已經(jīng)繪制的手繪軌跡的緩沖區(qū)內(nèi);若落在已經(jīng)繪制的手繪軌跡的緩沖區(qū)內(nèi),即表示用戶選中了相應(yīng)的手繪軌跡;若沒有落在已經(jīng)繪制的手繪軌跡的緩沖區(qū)內(nèi),即表示用戶沒有選中相應(yīng)的手繪軌跡。如圖4所示的觸摸點(diǎn)落在已有手繪軌跡的緩沖區(qū)范圍內(nèi),則表示選中了該手繪軌跡。如果用戶選中了已經(jīng)繪制的手繪軌跡,則執(zhí)行步驟S6 ;如果用戶沒有選中已經(jīng)繪制的手繪軌跡,則執(zhí)行步驟S7。
[0110]步驟S6:判斷用戶是否修改已經(jīng)繪制的手繪軌跡。如果用戶確認(rèn)修改已經(jīng)繪制的手繪軌跡,則執(zhí)行步驟S9 ;如果用戶不修改已經(jīng)繪制的手繪軌跡,則執(zhí)行步驟S7。
[0111]步驟S7:通過屏幕感應(yīng)模塊104感應(yīng)用戶在觸摸屏上的手指位置,并通過軌跡繪制模塊107在屏幕上繪制手指移動(dòng)時(shí)所經(jīng)過的軌跡。如圖5所示,圖中右側(cè)示出了在屏幕上繪制的手指移動(dòng)的軌跡。
[0112]步驟S8:判斷用戶是否完成手繪軌跡的當(dāng)前輸入。具體判斷基準(zhǔn)為,判斷用戶在觸摸屏上的觸摸點(diǎn)未發(fā)生移動(dòng)的時(shí)間或者是用戶斷絕與觸摸屏之間接觸的時(shí)間是否超過設(shè)定時(shí)間;若超過了設(shè)定的時(shí)間,即表示用戶已經(jīng)完成手繪軌跡的當(dāng)前輸入;若未超過設(shè)定的時(shí)間,則表示用戶尚未完成手繪軌跡的當(dāng)前輸入。如果用戶已經(jīng)完成手繪軌跡的當(dāng)前輸入,則執(zhí)行步驟S9 ;如果用戶未完成手繪軌跡的當(dāng)前輸入,則執(zhí)行步驟S4。
[0113]步驟S9:判斷用戶是否保留當(dāng)前的手繪軌跡。具體判斷方式及判斷結(jié)果為:第一,用戶通過相應(yīng)操作按鍵來確認(rèn)保留當(dāng)前的手繪軌跡;第二,用戶在設(shè)定的時(shí)間內(nèi)未對(duì)導(dǎo)航系統(tǒng)進(jìn)行任何操作,則認(rèn)為用戶不保留當(dāng)前的手繪軌跡。如果用戶確認(rèn)保留當(dāng)前的手繪軌跡,則執(zhí)行步驟Sll ;如果用戶不保留當(dāng)前的手繪軌跡,則執(zhí)行步驟S10。
[0114]步驟SlO:清除屏幕上的當(dāng)前手繪軌跡,并將與該軌跡對(duì)應(yīng)的緩沖區(qū)范圍內(nèi)道路的偏好屬性權(quán)重設(shè)置為1,之后轉(zhuǎn)向步驟S4。
[0115]步驟Sll:設(shè)置所保留的手繪軌跡的偏好權(quán)重屬性。
[0116]步驟S12:對(duì)設(shè)置好偏好權(quán)重屬性的手繪軌跡進(jìn)行存儲(chǔ)。
[0117]步驟S13:判斷所有手繪軌跡的輸入是否結(jié)束。具體判斷方式及判斷結(jié)果為??第一,用戶通過相應(yīng)操作按鍵來確認(rèn)所有手繪軌跡的輸入結(jié)束;第二,用戶在設(shè)定的時(shí)間內(nèi)未對(duì)導(dǎo)航系統(tǒng)進(jìn)行任何操作,則認(rèn)為所有手繪軌跡的輸入尚未結(jié)束。如果用戶確認(rèn)所有手繪軌跡的輸入已結(jié)束,則執(zhí)行步驟S14 ;如果所有手繪軌跡的輸入尚未結(jié)束,則執(zhí)行步驟S4。
[0118]步驟S14:構(gòu)建每條手繪軌跡的緩沖區(qū)。具體構(gòu)建方法為:首先設(shè)定緩沖區(qū)的邊界距離,單位是屏幕坐標(biāo)的長(zhǎng)度單位;其次根據(jù)設(shè)定的距離,對(duì)每條手繪軌跡構(gòu)建緩沖區(qū),緩沖區(qū)的屬性與其手繪軌跡的屬性相同。如圖6所示,圖中橢圓所圍區(qū)域即是由手繪軌跡產(chǎn)生的緩沖區(qū)。
[0119]步驟S15:通過地理坐標(biāo)轉(zhuǎn)換模塊114將緩沖區(qū)內(nèi)的屏幕坐標(biāo)轉(zhuǎn)換為地圖數(shù)據(jù)庫(kù)中的地理坐標(biāo)。
[0120]步驟S16:查找屬于緩沖區(qū)內(nèi)的道路。查找的基準(zhǔn)有兩種,基準(zhǔn)一是查找落入緩沖區(qū)內(nèi)長(zhǎng)度超過設(shè)定比例的道路,基準(zhǔn)二是查找完全包含在緩沖區(qū)中的道路。二者可選其一,其中基準(zhǔn)一選取的道路數(shù)要多于基準(zhǔn)二。
[0121]步驟S17:調(diào)整道路的偏好權(quán)重屬性。偏好權(quán)重的調(diào)整界面可采用觸摸滾動(dòng)條的形式。當(dāng)滑塊處于滾動(dòng)條中央時(shí)表示偏好權(quán)重為1,如果用戶希望沿手繪路線行駛,則