董健
摘 要:在快速发展的现代都市生活中,人们追求着各种经济利益最大化,资源成本最小化,出行也都需要进行安排和考量,根据以上需求,设计一款有关出行查询的城市公交查询系统软件。该软件提供线路查询、站点查询、线路或站点收藏、地图信息查询等功能,根据用户个人喜好可更换界面主题颜色,根据用户所在城市,自动定位,切换城市公交数据。通过以上功能的设计与开发满足用户出行需求与体验。
关键词:线路查询;站点查询;地图;城市数据;IOS
中图分类号:TP399 文献标识码:A
1 引言(Introduction)
随着现代科技的飞速发展,智能手机已广泛普及,而占有主要市场的Android系统和IOS系统成为当下人们的首选,尤其在苹果公司对其IOS系统下产品的不断更新与创新[1],选择IOS系统智能手机的人们更是不在少数;另外,随着科技的发展,人们的日常生活也越来越智能化、便捷化,因此,在这两大背景需求下,基于IOS系统的出行软件成为一种需求[2]。通过设计开发基于IOS的城市公交查询系统,在挖掘人们日常出行生活中的需求的过程中,我们将更加了解现今社会人们的生活状态和生活方式,而当软件推行后,不仅为人们的生活带来便利,也是对人文科技的发展的推进与帮助,是科技与生活的结合,使科技生活化[3]。
2 系统架构设计(System architecture design)
2.1 系统技术平台架构分析
MVC(Model View Controller)是模型(Model)、视图(View)、控制器(Controller)的缩写,它是一种软件设计模式,至今已广泛应用于用户交互应用程序中[4]。模型对象封装了应用程序的所有数据,同时定义了操控和处理这些数据的逻辑和运算。例如,模型对象可以指地址簿中的联系人,用户可以在视图界面中进行创建或修改数据,这些操作会通过控制器对象传达出去,最终创建或更新模型对象。当模型对象更改时,操作信息会通知控制器对象,再由控制器对象控制更新相应的视图对象。在应用程序中用户可以看得到的对象就是视图对象[5]。视图对象是用来显示来自应用程序模型对象的数据,并且使该数据可以被编辑,变相地完成人机交互。控制器对象充当视图对象和模型对象之间的媒介。因此,控制器对象是同步管道程序,通过控制器对象,视图对象可以了解模型对象的更改,相反,模型对象也可以了解视图对象的更改[6]。
MVC的交流模式如图1所示。
2.2 系统功能架构设计
(1)线路查询功能设计:界面上显示所有线路(看不见的线路可以滑动触屏查看),设置搜索框,根据用户需要查询指定线路;点击所选线路,进入到具体线路的查看界面。
(2)站点查询功能设计:界面上显示所有站点(看不见的站点可以滑动触屏查看),设置搜索框,根据用户需要查询指定站点,可以查看经过该站点的所有线路,同时还能实现收藏该站点功能。
(3)收藏功能设计:根据用户选择,界面显示所收藏的线路或站点,用户可以对所收藏的线路或站点进行删除操作。
(4)地图信息功能设计:界面上根据用户需要自行选择一般地图或是卫星地图或是混合地图。可以进行周边搜索、地点及概括性信息搜索。
(5)系统设置功能设计:在系统设置界面可以设置主题颜色,也可以根据用户选择更改查询的城市信息。
根据以上分析,系统软件的功能结构图如图2所示。
3 系统数据库的设计(Design of system database)
数据库中必然要出现的是一个城市的所有线路,以及每条线路上的所有站点,但是各条线路上可能存在站点的重合,因此,需要用相应的算法缩小所需占用的数据空间节约资源,进而提高软件的运行效率。
单从线路角度出发,每条线路都有多于一个的站点,同样从站点角度出发,每个站点也至少有一条线路会经过,所以也可以构成一个相对简单的映射,将所有站点的映射叠加于一张图内,如图3所示。
根据系统功能设计,涉及线路和站点,为了缩小数据库占用率,提高数据使用率,因此根据线路及站点分别制作一张表,即lines表和stations表。lines表中设字段id、lineName和intro,id是线路的编号,每条线路有且仅有唯一的编号;line-Name是线路名称;intro是对线路的具体介绍,包括发车时间、收费等。同样,在stations表中,也设有id和stationName,分别是站点的编号和名称。线路与站点之间存在固定但无规律的映射关系,所以需要再制作一张表relation表将lines表和stations表联系到一起。
4 模块的具体实现(Implementation of module)
4.1 线路查询模块的实现
搜索框搜寻的过程实际是当输入文字信息,系统会自动遍历数据库中lines表中的线路名称,将这些名称与输入信息进行匹配,匹配成功的线路通过其线路id将从relation表获取该线路上的站点id,再由站点id从stations表中获取站点名称,最终显示在界面上,具体功能界面设置如图4所示。
搜索功能实现方法如下:
cell.textLabel.text=[arrayFilters objectAtIndex:indexPath.row]; //输入线路名称
int lineIndex=[[arrayFilterIndexs objectAtIndex:indexPath.row]intValue]; //获取线路的索引
long startIndex=[[[sqliteTool getStationIdBaseOnLineId:lineIndex]firstObject]integerValue]; //从relation表获取起始站索引station_id
NSString*startStationName=[arrayAllSatation objectAtIndex:startIndex]; //从所有站点名获取起点站站点名
long endIndex=[[[sqliteTool getStationIdBaseOnLineId:lineIndex]lastObject]integerValue]; //获取终点站索引
NSString*endStationName=[arrayAllSatations objectAtIndex:endIndex]; //获取终点站站点名
cell.detailTextLabel.text=[NSString stringWithFormat:@"%@-->%@",startStationName,endStationName]; //显示起点到终点
//所选线路参数传递出去,实现界面跳转
NSString*lineIndex=[arrayFilterIndexs objectAtIndex:indexPath.row];
[self performSegueWithIdentifier:@"lineDetail" sender:lineIndex];
4.2 地图信息模块的实现
地图信息显示地图界面,主要显示当前定位信息和周边服务查询,并可以调用查看网页地图信息[7]。地图信息模块中,首先通过定位获取所在位置的经纬度,使用反地理编码得到详细信息,包括地名、所在区域、街道等。地图上的详细信息实际对应着相应的经纬度,通过反地理编码,即可通过经纬度获取相应的具体信息,具体界面结构如图5所示。
CLLocationCoordinate2D center=userLocation.location.coordinate;//赋值经纬度
[self reverseGeocode:center]; //反地理编码:根据经纬度得到详细信息
在输入框内输入所要查询的具体信息,如果地址错误或地图中没有,则弹出对话框提示错误;如果信息正确,则进行编码后确定经纬度位置,由大头针出现标识,附近搜索与此类似:
[self.geocoder geocodeAddressString:param completionHandler:^(NSArray *placemarks,NSError*error)]; //进行编码,获得经纬度
myAnnotition*anno=[[myAnnotition alloc]init]; //根据经纬度添加大头针
anno.coordinate=coordinate;
anno.title=param;
anno.subtitle=pm.name;
[self.myMap addAnnotation:anno];
添加导航线路,确定起点和终点,通过地理编码获得经纬度信息,设定好方向对象,在地图上,计算出两个经纬度之间可以连接的线路,然后描画出来,描画出来的线路可以设置颜色和粗细,如图5所示。
5 结论(Conclusion)
该款基于IOS的城市公交查询系统实现了线路的查询和收藏、站点的查询和收藏以及定位和周边服务查询等。界面简洁,数据算法也简单,耗费资源成本低,符合用户的需求,但是在用户进一步优化体验上还需要仅需一步加强。
参考文献(References)
[1] Christian D'Orazio,Kim-Kwang Raymond Choo.An Adversary Model to Evaluate DRM Protection of Video Contents on iOS Devices[J].Computers & Security,2016,2:94-110.
[2] Hou-Tsan Lee,et al.Mobile Detecting Robot Controlled by Smartphone Based on iOS[J].Engineering,2014,06(12):750-757.
[3] Farhood Norouzizadeh Dezfouli,Ali Dehghantanha,Brett Eterovic-Soric,Kim-Kwang Raymond Choo.Investigating Social Networking Applications on Smartphones Detecting Facebook,Twitter,LinkedIn and Google+ Artefacts on Android and IOS Platforms[J].Australian Journal of Forensic Sciences,2016,48(4):469-488.
[4] 田赵洋,刘光灿.基于“萌否电台”API的iOS客户端开发[J].计算机应用与软件,2015,(03):89-92.
[5] 李蕾,李晓丽.基于iOS手持终端的移动学习资源设计研究[J].中国电化教育,2014,(12):93-97.
[6] 刘鹏,庞小平,艾松涛.基于Android和iOS的极地移动信息平台设计与开发[J].极地研究,2015,(01):98-103.
[7] 郑贵林,桂初晴.“互联网+”iOS智能家居系统设计与实现[J].电视技术,2016,(05):26-29.
[8] 石锐,等.一种面向iOS系统的双缓冲改进算法及其应用[J].中国科学院大学学报,2015,(04):549-555.
作者简介:
董 健(1980-),男,硕士,讲师.研究领域:多媒体信息处理.