田晨池 谷攀登 潘家杰 陳森 黎敏
摘要:微信小程序是依靠微信這個社交平臺應運而生的一種不需要安裝、直接使用的一種開發工具,用戶只需在微信平臺掃描二維碼或者搜索名稱就可以打開應用。微信小程序開發簡單,操作方便,同時因具有廣大的用戶基數,這也讓開發者們和用戶都感覺到方便快捷、實現共贏。而私人定制旅游攻略平臺是一種基于微信小程序的從旅游行業的發展以及當今人們的精神需求出發的小程序開發設計,用戶不但可以通過輸入關鍵字獲取想要去的景點的圖片、介紹,瀏覽景點周邊的餐廳酒店,而且根據選擇的景點,平臺通過算法來為用戶規劃出一條距離與順序最優的路線。開發基于微信小程序的私人定制旅游攻略平臺,一是提高用戶體驗,便捷使用,二是實現智能旅游規劃,優化人們的出行方案。
關鍵詞:微信小程序;旅游攻略;私人定制;路線規劃;景點選擇
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)04-0012-03
1 引言
隨著社會的全面發展,人們的生活水平越來越好,大家都過上了富裕的生活,而游山玩水、詩和遠方也成為大多數人消遣和放松的主要想法。2017年1月,隨著微信小程序正式啟動和上線,因其開發成本低、使用便捷等特點得到廣泛應用。微信小程序可以在微信內被輕松地使用,并且微信平臺用戶基數大,使用人數多。因此,我們團隊合作開發了私人定制旅游攻略平臺微信小程序,符合人們的使用習慣。
2 基于微信小程序的私人定制旅游攻略平臺系統總體設計
私人制定旅游攻略平臺注重以用戶為中心,一對一的私人定制的觀點,因此私人制定旅游攻略平臺的功能必須是用戶需要的功能,并且一進入本小程序就能清晰地看到所有的功能選項,而不需要用戶花費大量時間去研究平臺的各個功能如何使用[1]。基于微信小程序的私人定制旅游攻略平臺具備以下6種功能:
1)景點信息展示、景點信息檢索、景點周邊餐廳及酒店展示、景點及其周邊餐廳酒店添加、路線規劃、我的路線展示。
2)景點信息檢索,用于搜索各個景區以及景點,查詢其相關信息。
3)景點周邊餐廳及酒店展示,用于展示各景點周邊的餐廳及酒店的位置、介紹以及圖片信息。
4)景點及其周邊餐廳酒店添加,用戶可以選擇自己喜歡的景點以及周邊酒店、餐廳,通過添加按鈕加入我的路線展示頁面中,傳入后臺通過算法規劃路線。
5)路線規劃,是私人制定旅游攻略平臺的核心模塊,通過算法規劃出最優路線。
6)我的路線展示,將用戶選擇的景點、酒店、餐廳通過算法規劃好的最優路線展示出來,以便用戶瀏覽及刪除。
3 數據庫設計
1)數據庫
2)數據庫優化
//我的路線:my_tourist
/* 搜索并顯示 @return */
@Select("select a.* from my_tourist a,userinfo b where a.uid=#{uid} and " +
"a.uid=b.openid and title=#{title}")
List<my_tourist> find(@Param("uid")String uid,@Param("title")String title);
//獲取景區內所有景點經緯度及id
@Select("SELECT * FROM place a,scenic_spot b WHERE a.ssid=b.id and b.name like" +
" concat(concat('%',#{name}),'%')")
List<place> getallplace(@Param("name")String name);
//獲取某個景點的所有信息
@Select("SELECT * FROM place where id=#{id}")
List<place> getplaceone(@Param("id")int id);
//獲取某個景點附近的餐廳
@Select("SELECT * FROM restaurant where pid=#{pid}")
List<restaurant> getresone(@Param("pid")int pid);
//獲取某個景點附近的旅店
@Select("SELECT * FROM hotel where pid=#{pid}")
List<hotel> getholone(@Param("pid")int pid);
}
4 貪心算法
貪婪算法[3],也被叫作貪心算法,顧名思義,貪心算法就是貪圖方便而選擇一條近道,這條近道不一定是所有道路中最短的,只是局部最短路徑。當然,貪心算法可以得到的最終研究結果通常也是一個整體最優解,盡管貪心算法不能對所有問題都得到一個整體最優解,但對于大部分的問題來說,它能得到整體提高從而基本得到整體最優解,例如最短路徑問題、最小生成樹等。
1)貪心算法的基本思路
從一個問題的最開始解出發一步步靠近指定的目標,以盡可能迅速地得到局部最優解,只有當貪心算法的其中一步不能繼續再往下執行的時候,算法才會停下來。貪心算法通常情況下是從上到下,并且在迭代模式之下做出的連續的局部最優解。每一個連續的最優解都可以將問題化成為一個個更小的類似子問題。
2)貪心算法的實現框架
實現該算法的過程如下[4]:
當算法中的一個步驟無法繼續運行時,算法就會中止;
While 能朝給定總目標前進一步 ;
DO求出可行解元素中的一個局部最優解元素;
由一切解元素組合成原來問題的一個可行解。
3)騰訊地圖API接口設計與開發
通過騰訊地圖的API接口SDK連接微信小程序,并且添加map組件,路線規劃使用騰訊地圖插件的微信小程序,先要在開頭進行環境配置。
// 引入JavaScript SDK核心類var MapWX = require('xxx/qqmap-wx.js');
// 實例化API核心類var QQmapsdk = new MapWX({
key: '開發者密鑰(key)'
});
利用騰訊地圖自帶的DIRECTION API,提供4種交通形式下的路線規劃,MODE類型如下:
Driving類型:結合進行實時分析路況、收費、不走高速等各種問題需求,精準預估可以到達的一定時間(ETA);
Walking類型:基于路行的路線規劃布局;
Bicycling類型:基于非機動車的騎行路線;
Transit類型:提供公交汽車、輕軌等多種公共交通工具的換乘路線規劃計算。
此API是基于HTTP/HTTPS協議,通過網絡發送請求得到url數據參數來進行4種交通形式下路線的查詢條件,然后通過后臺代碼接口返回json結構化數據信息參數。如果要在map地圖組件中顯示返回的路線,需要結合騰訊地圖的api或sdk來實現相應的功能。
經緯度設置:LAT(緯度)、LON(經度),如(from: ‘56.144342,123.234143’;to:‘56.144342,123.234143’;…)。(from to的經緯度之間用英文逗號隔開,坐標與坐標之間用英文分號隔開)
通過核心算法進行路線規劃。事件觸發,調用 Calculatedstanced (options: objects)接口來計算所選景點之間的行走距離以及時間,使用屬性成功、失敗、完成回調參數接收調用結果,成功回調之后可能會返回兩個參數,第一個參數用來接收調用接口之后得到的數據,第二個參數用來控制返回過程中那些被處理過的數據,第二個為非必需參數。如:SUCCESSED: FUNCTION(RES, DATAS)。如果狀態為0,消息為“查詢OK”,則正常,得到distance結果并輸出景點之間的距離,/WS/DISTIANCE/v1 距離計算:步行,再利用正常人的步行速度大約為1.3m/s,根據距離/速度=時間的公式估算出到景點的時間,通過調用微信開發工具map組件,編寫polyline屬性來實現一個景點旅行最優路線設計規劃圖表。
4)TSP算法流程圖
5 系統實現
我們團隊通過微信平臺web開發者工具和idea編程軟件,開發了基于微信小程序私人定制旅游攻略平臺(山河行),其中包含了景點信息展示、景點信息檢索、景點周邊餐廳及酒店展示、景點及其周邊餐廳酒店添加、路線規劃、我的路線展示的功能,采用Java語言、JavaScript、CSS以及Spring Boot框架[5]等編程方法,連接騰訊地圖map組件以及路線規劃功能展示各個景點、餐館、酒店信息。當用戶登錄本微信小程序私人定制旅游攻略平臺時,首頁中有搜索框可以進行搜索功能,并且可以查看已選定的旅游景點以及規劃好的旅游路線[6]。通過搜索框搜索景區以及景點后,可以在騰訊地圖map組件上看到各個景點所做的標記點,點擊標記點即可查看景點信息及周邊餐廳酒店的信息,瀏覽過程中如果有意向,可以添加該景點或餐廳酒店到我的路線中,用戶就可以在首頁我的路線中查看自己選擇的景點及規劃好的最優旅游路線。圖3、圖4是頁面展示。
6 結束語
隨著社會的全面發展,各個行業蓬勃發展,旅游業尤其發展迅猛,相比較從前,各個區域都大力發展旅游業,產業的規模也不斷地擴大,產業體系結構也日益完善,而且人們生活水平日益提高,越來越多的人追求精神上的滿足,而出門旅游也慢慢成為大多數人消遣和放松的必要選擇。隨著科學技術的進步,大數據分析、算法等人工智能方式來計算、規劃出適合人民群眾的個性化旅游出行路線攻略,將會為人們的旅游出行減少時間成本,越來越便利是現代化旅游發展的必然趨勢。本平臺在各個方面做了諸多嘗試,而下一步的研究是利用大數據算法查詢數據,以及研究多種匹配路徑算法,并且自動更新各景點信息及景點推薦功能,以便更加智能準確地滿足用戶的需求。
參考文獻:
[1] 鄔錦雯,孫靜蕾,李敏.基于熵權法的微信小程序界面設計可用性評價研究[J].包裝工程,2021,42(12):191-196,222.
[2] 王珊,薩師煊.數據庫系統概論[M].5版.北京:高等教育出版社,2014.
[3] Eckel B.Java編程思想[M].陳昊鵬,譯. 4版.北京:機械工業出版社,2007.
[4] 聚慕課教育研發中心.Java從入門到項目實踐:超值版[M].北京:清華大學出版社,2018.
[5] 黑馬程序員.Spring Cloud微服務架構開發[M].北京:人民郵電出版社,2020.
[6] 張振家.旅游線路設計[M].北京:清華大學出版社,2017.
收稿日期:2021-10-25
基金項目:2021年國家(江西省)大學生創新創業訓練計劃資助項目:山河行(項目編號:202011319013)
作者簡介:田晨池(2000—),男,廣東惠州人,本科在讀,研究方向為軟件工程;谷攀登(1999—),男,安徽淮北人,本科在讀,研究方向為軟件工程;潘家杰(2000—),男,浙江溫州人,本科在讀,研究方向為軟件工程;陳森(2000—),男,江西贛州人,本科在讀,研究方向為軟件工程;黎敏(1975—),男,江西南昌人,教授,博士,研究方向為機器學習與數據挖掘、大數據應用。