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