王德貴 王薇
本期我們?cè)贏ppInventor中利用高德地圖組件開發(fā)一款導(dǎo)航應(yīng)用——寶貝你在哪,它可以查找停在附近停車場(chǎng)的愛車。停車時(shí)打開該應(yīng)用定位,記錄位置后可關(guān)閉應(yīng)用,需要找車時(shí)再次打開應(yīng)用,就可以查看車的位置,并規(guī)劃當(dāng)前位置到車輛之間的路徑,之后開始步行導(dǎo)航。
本應(yīng)用在WxBit漢化版(app.wxbit.com)中開發(fā),它的組件比較多,應(yīng)用安裝時(shí)不會(huì)出現(xiàn)新舊手機(jī)的兼容問題。如果使用其他開發(fā)環(huán)境,需要安裝相應(yīng)的插件。
代碼較復(fù)雜,請(qǐng)先在文末掃碼下載源代碼,對(duì)照學(xué)習(xí)。
1.應(yīng)用效果圖
應(yīng)用效果如圖,根據(jù)組件列表完成界面制作,組件屬性的顏色、位置等參數(shù)可自行微調(diào),由于組件較多注意為組件重命名增加程序可讀性(圖1)。
2. 組件設(shè)計(jì)
各組件作用和屬性如列表,注意,地圖類型有3種,通過下拉框選擇(如下表)。
程序設(shè)計(jì)過程中,最好是邊寫代碼,邊測(cè)試,隨時(shí)發(fā)現(xiàn)問題,隨時(shí)解決。如果最后一起測(cè)試,就不容易找到哪段代碼有問題了。
1.申請(qǐng)APIKey
路徑規(guī)劃的APIKey需要去高德開放平臺(tái)申請(qǐng)后填入。
注冊(cè)高德開放平臺(tái)→開發(fā)者認(rèn)證→控制臺(tái)→新建應(yīng)用→添加→自行輸入Key名稱→選Web服務(wù)(只需申請(qǐng)Web服務(wù)Key,其他不需要)→提交。之前我在測(cè)試的時(shí)候,按照路徑規(guī)劃的說明文檔,做了很多無用功。這個(gè)Key是獲取路徑規(guī)劃方案的鑰匙,也是身份證明。
2.顯示當(dāng)前經(jīng)緯度和海拔
當(dāng)開啟APP時(shí)或位置改變時(shí),高德定位組件自動(dòng)定位當(dāng)前經(jīng)度、緯度和海拔,并顯示在標(biāo)簽上。APP開啟后,可以通過按鈕顯示到高德地圖上(圖2、圖3)。
3.記錄寶貝位置
在車附近10秒鐘以上更新經(jīng)緯度數(shù)據(jù),記錄位置,否則車的位置會(huì)有偏差。把數(shù)據(jù)保存在本地?cái)?shù)據(jù)庫,按標(biāo)簽保存數(shù)據(jù),以便以后打開APP時(shí)調(diào)用(圖4)。
4.顯示寶貝位置
當(dāng)需要查看車的位置時(shí),點(diǎn)擊按鈕,就可以從本地?cái)?shù)據(jù)庫中調(diào)取保存的寶貝位置信息,通過標(biāo)簽顯示出來,同時(shí)高德地圖也做相應(yīng)的標(biāo)記,以方便查看(圖5)。
5. 點(diǎn)擊標(biāo)記放大地圖
點(diǎn)擊寶貝位置標(biāo)記(粉色)或點(diǎn)擊當(dāng)前位置標(biāo)記(紅色),都會(huì)放大地圖,縮放級(jí)別為1-18,與高德地圖屬性的縮放級(jí)別有關(guān),用兩個(gè)手指也可以放大縮小地圖(圖6)。
6. 地圖類型
地圖類型有3種,平面圖、衛(wèi)星圖、混合圖,用下拉列表框選擇(圖7)。
7. 顯示路徑規(guī)劃
給出從當(dāng)前位置到車的位置之間的步行分段方案。這個(gè)方案,是路徑規(guī)劃方案,也可以用HTTP請(qǐng)求,獲取方案信息,經(jīng)過處理后,效果相同。如果出錯(cuò),給出提示,方便調(diào)試。點(diǎn)擊文字執(zhí)行清除提示(圖8)。
8. 變量和過程
創(chuàng)建多個(gè)全局變量“總距離、總時(shí)間、步行步驟總數(shù)目、步行線段數(shù)目、距離2、時(shí)間2”,初始值均為0。
創(chuàng)建多個(gè)全局變量“步行步驟總方案、步行指示、步行線段、坐標(biāo)點(diǎn)字符串”并賦值為空文本。
定義4個(gè)函數(shù),兩個(gè)用來分離經(jīng)緯度,將獲取的經(jīng)緯度數(shù)據(jù)交換位置,以適應(yīng)路徑規(guī)劃的應(yīng)用(圖9)。
兩個(gè)用來控制路徑線條,線條數(shù)目本例只有2條。你可以繼續(xù)添加,還可以利用動(dòng)態(tài)組件控制線條數(shù)目,大家可以嘗試一下(圖10)。
9.路徑規(guī)劃獲取方案
這個(gè)路徑規(guī)劃方案,是利用列表數(shù)據(jù)處理的,如何查看和分析列表,請(qǐng)參考往期的JSON數(shù)據(jù)應(yīng)用。也可以將JSON數(shù)據(jù)轉(zhuǎn)換為字典處理,結(jié)果相同(圖11、圖12)。
10. 開始導(dǎo)航
顯示行走路線的線條。實(shí)際路徑規(guī)劃有多個(gè)區(qū)段,每個(gè)區(qū)段又有很多線段構(gòu)成,可以利用遍歷的方法一一連接,本文只說明原理,不做詳述(圖13)。
11.初始化
初始化是打該應(yīng)用時(shí),將事先保存的數(shù)據(jù)加載到內(nèi)存,以便處理。延時(shí)2秒(2000ms)給提取本地?cái)?shù)據(jù)庫信息留夠時(shí)間。如果本地?cái)?shù)據(jù)庫沒有保存的數(shù)據(jù),則顯示0.0(圖14、圖15)。
1.調(diào)試
手機(jī)安裝AI伴侶,在連接中掃碼,找一位置模擬車位,停留10秒鐘以上,然后點(diǎn)擊“記錄寶貝位置”,然后到另一個(gè)位置,高德地圖會(huì)顯示當(dāng)前位置信息??梢渣c(diǎn)擊“顯示寶貝位置”來查看車的位置,也可以點(diǎn)擊“顯示當(dāng)前位置”來查看當(dāng)前位置信息。“查看路徑規(guī)劃”用來顯示路徑規(guī)劃信息,點(diǎn)擊文字,隱藏?!伴_始導(dǎo)航”必須查看路徑規(guī)劃后,才顯示行進(jìn)路徑線條,本例只顯示2條。其實(shí),在每個(gè)線條里,還會(huì)有多個(gè)線段。多路段情況,有興趣的朋友可以深入研究探討(圖16)。
2.打包
把程序生成為APK文件,脫離開發(fā)環(huán)境,以備在其他手機(jī)上安裝。由于高德地圖是會(huì)員組件需要成為會(huì)員才能打包,但不影響之前的編輯和調(diào)試。應(yīng)當(dāng)注意的是,這個(gè)APK文件在電腦和手機(jī)里都會(huì)誤報(bào)病毒,殺毒時(shí)會(huì)清除掉,如想保存,建議打包壓縮后,留存。
3. 上架
誰都希望自己的應(yīng)用能放在應(yīng)用市場(chǎng)上供大家下載安裝。
先完成誤報(bào)病毒申訴。到騰訊手機(jī)管家(m.qq.com/complaint)上申請(qǐng)誤報(bào)病毒,按要求填寫提交。申訴成功后,即可發(fā)布應(yīng)用了。
發(fā)布申請(qǐng)。在阿里應(yīng)用分發(fā)平臺(tái)(aliapp.open.uc.cn)根據(jù)提示進(jìn)行分發(fā)。
以上實(shí)例只是導(dǎo)航路徑規(guī)劃的簡(jiǎn)單應(yīng)用,如果想開發(fā)更完善的路徑規(guī)劃,還要了解多路段情況,這里不再贅述。
程序比較復(fù)雜,您可以在壹零社下載程序源代碼并對(duì)照視頻學(xué)習(xí)。