董健



摘 要:在快速發展的現代都市生活中,人們追求著各種經濟利益最大化,資源成本最小化,出行也都需要進行安排和考量,根據以上需求,設計一款有關出行查詢的城市公交查詢系統軟件。該軟件提供線路查詢、站點查詢、線路或站點收藏、地圖信息查詢等功能,根據用戶個人喜好可更換界面主題顏色,根據用戶所在城市,自動定位,切換城市公交數據。通過以上功能的設計與開發滿足用戶出行需求與體驗。
關鍵詞:線路查詢;站點查詢;地圖;城市數據;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-),男,碩士,講師.研究領域:多媒體信息處理.