田晨池 谷攀登 潘家杰 陈森 黎敏
摘要:微信小程序是依靠微信这个社交平台应运而生的一种不需要安装、直接使用的一种开发工具,用户只需在微信平台扫描二维码或者搜索名称就可以打开应用。微信小程序开发简单,操作方便,同时因具有广大的用户基数,这也让开发者们和用户都感觉到方便快捷、实现共赢。而私人定制旅游攻略平台是一种基于微信小程序的从旅游行业的发展以及当今人们的精神需求出发的小程序开发设计,用户不但可以通过输入关键字获取想要去的景点的图片、介绍,浏览景点周边的餐厅酒店,而且根据选择的景点,平台通过算法来为用户规划出一条距离与顺序最优的路线。开发基于微信小程序的私人定制旅游攻略平台,一是提高用户体验,便捷使用,二是实现智能旅游规划,优化人们的出行方案。
关鍵词:微信小程序;旅游攻略;私人定制;路线规划;景点选择
中图分类号: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—),男,江西南昌人,教授,博士,研究方向为机器学习与数据挖掘、大数据应用。