基于iphone的景區(qū)導(dǎo)航客戶端的分析與設(shè)計(jì)_第1頁(yè)
基于iphone的景區(qū)導(dǎo)航客戶端的分析與設(shè)計(jì)_第2頁(yè)
基于iphone的景區(qū)導(dǎo)航客戶端的分析與設(shè)計(jì)_第3頁(yè)
基于iphone的景區(qū)導(dǎo)航客戶端的分析與設(shè)計(jì)_第4頁(yè)
基于iphone的景區(qū)導(dǎo)航客戶端的分析與設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

********學(xué)院畢業(yè)設(shè)計(jì)說明書(論文)基于IOS的景點(diǎn)手機(jī)導(dǎo)游客戶端摘要:現(xiàn)在隨著社會(huì)的發(fā)展,旅游越來越被人們所歡迎和喜歡。現(xiàn)在的旅游方式除了跟隨旅游團(tuán)旅游外,更多市民選擇一人或者幾人結(jié)伴出游。隨著移動(dòng)互聯(lián)網(wǎng)的迅速發(fā)展,幾乎人人都配有移動(dòng)通信終端。網(wǎng)絡(luò)進(jìn)入了千家萬戶,單獨(dú)出游的旅客在沒有導(dǎo)游的情況下,或許就錯(cuò)過了游玩地點(diǎn)的精彩內(nèi)容,或許會(huì)因?yàn)榫皡^(qū)過大而迷失方向。那么地方景點(diǎn)手機(jī)導(dǎo)游客戶端也就有了存在的必要。本軟件將旅游信息與iOS系統(tǒng)相結(jié)合,設(shè)計(jì)了一種基于iOS系統(tǒng)的景區(qū)智能旅游手機(jī)軟件。本系統(tǒng)以Xcode為開發(fā)環(huán)境,設(shè)計(jì)景區(qū)旅游軟件,實(shí)現(xiàn)景區(qū)相關(guān)信息介紹、電子地圖導(dǎo)航和天氣查詢等功能。在景區(qū)信息模塊下根據(jù)景區(qū)官網(wǎng)提供的信息經(jīng)過動(dòng)態(tài)處理和排版設(shè)計(jì),完成景區(qū)信息和圖片瀏覽功能。在天氣模塊下,使用天氣Web接口,完成查詢當(dāng)?shù)亟呷仗鞖馇闆r功能和當(dāng)天生活指數(shù)功能。在景區(qū)攻略模塊下,使用iPhone手機(jī)自帶的GPS定位系統(tǒng)以及騰訊地圖API和google地圖Web接口完成用戶地圖定位和導(dǎo)航功能等等。系統(tǒng)測(cè)試結(jié)果表現(xiàn),本系統(tǒng)實(shí)現(xiàn)了景區(qū)信息提供、電子地圖導(dǎo)航、天氣信息提供等等功能,并且界面友好、美觀,操作簡(jiǎn)單,具有良好的維護(hù)性和可擴(kuò)展性,適用于iOS6及以上。關(guān)鍵詞:GPS定位,騰訊地圖API,iOS系統(tǒng),Objective-C語言目錄TOC\o"1-3"\h\u29389序言 19563第1章緒論 216631.1選題背景及意義 2244751.1.1旅游業(yè)發(fā)展以及現(xiàn)狀 2271021.1.2旅游網(wǎng) 3104381.1.3手機(jī)移動(dòng)互聯(lián)網(wǎng) 3142491.2開發(fā)目標(biāo) 414877第2章開發(fā)工具與技術(shù)介紹 6121852.1iOS系統(tǒng)和SDK 6301402.2開發(fā)工具Xcode 778122.3Objective-C語言 878122.4iOS定位系統(tǒng) 825012.5地圖API和Google地圖導(dǎo)航 9111722.5.1.騰訊地圖API 925012.5.2Google地圖導(dǎo)航 97637第3章業(yè)務(wù)需求分析與系統(tǒng)架構(gòu)設(shè)計(jì) 11306663.1技術(shù)可行性 11288023.2需求分析 11271413.3.1系統(tǒng)用例 11113063.3業(yè)務(wù)描述 1332273.3.1景區(qū)介紹業(yè)務(wù) 1373893.3.2天氣相關(guān)業(yè)務(wù) 14266893.3.3游玩相關(guān)業(yè)務(wù) 14191283.3.4各個(gè)類的定義 15152573.4系統(tǒng)流程圖 1611673第4章系統(tǒng)概要設(shè)計(jì) 1885454.1總體設(shè)計(jì) 18249894.1.1軟件系統(tǒng)整體規(guī)劃 1890544.1.2軟件系統(tǒng)總體模塊圖 1859304.2數(shù)據(jù)類設(shè)計(jì) 1939114.2.1概念結(jié)構(gòu)設(shè)計(jì) 19287704.2.2邏輯結(jié)構(gòu)設(shè)計(jì) 1925843第5章系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 2489695.1天氣情況模塊 25110335.2景區(qū)業(yè)務(wù)之景區(qū)介紹 26191675.2.1景區(qū)業(yè)務(wù)子模塊之景區(qū)文化 2717545.2.2景區(qū)業(yè)務(wù)子模塊之景區(qū)歷史 28305845.2.3景區(qū)業(yè)務(wù)子模塊之地方特產(chǎn) 2952805.2.4景區(qū)業(yè)務(wù)子模塊之名人蹤跡 2966755.2.5景區(qū)業(yè)務(wù)子模塊之故事傳說和周邊景點(diǎn) 30136085.3景區(qū)攻略(地圖導(dǎo)航) 30233065.3.1景區(qū)攻略模塊之“行” 31224495.3.2景區(qū)攻略模塊之“吃”“住” 32234955.3.3景區(qū)攻略模塊之“娛” 33211435.3.4景區(qū)攻略模塊之“購(gòu)” 34208375.3.5景區(qū)攻略模塊之“拍” 359708第6章系統(tǒng)測(cè)試 3613906.1運(yùn)行環(huán)境 3681506.2測(cè)試原則 36300236.3測(cè)試方法 36226986.4測(cè)試計(jì)劃 37200486.4.1黑盒測(cè)試 37132556.4.2手機(jī)系統(tǒng)版本兼容性測(cè)試 38202726.4.3iPhone手機(jī)屏幕適配測(cè)試 38258316.4.4內(nèi)存泄露測(cè)試 392588結(jié)束語 4119678參考文獻(xiàn) 4232041致謝 44第1頁(yè)共44頁(yè)第1頁(yè)共44頁(yè)序言近幾年來,隨著經(jīng)濟(jì)的飛速發(fā)展,大眾對(duì)于精神生活的要求也越來越高,旅游已經(jīng)成為大眾休閑放松的最佳選擇之一。現(xiàn)在旅游業(yè)對(duì)信息的依賴性逐漸變大,信息的獲取和傳播對(duì)整個(gè)旅游業(yè)十分重要。信息的數(shù)字化給信息傳遞帶來了便利,網(wǎng)絡(luò)信息大爆炸,包羅萬象。節(jié)假日準(zhǔn)備出去旅游,但又不知道去哪里,哪里比較合適,于是景區(qū)的官網(wǎng)應(yīng)時(shí)而生。在電腦上查閱景區(qū)相關(guān)信息,天氣以及出行時(shí)間行程。但伴隨著移動(dòng)互聯(lián)網(wǎng)的興起,移動(dòng)通信改變了人們的生活。越來越多的人使用手機(jī)上網(wǎng),隨時(shí)隨地查找信息?,F(xiàn)在的景區(qū)官網(wǎng)大多對(duì)應(yīng)電腦網(wǎng)站,用手機(jī)打開相應(yīng)網(wǎng)站時(shí),速度慢,耗網(wǎng)速。這個(gè)缺點(diǎn)讓所有手機(jī)用戶大為困擾,因此手機(jī)導(dǎo)游是必需的。但是基于iOS系統(tǒng)的手機(jī)導(dǎo)游并不常見,所以我選擇這個(gè)作為課題,進(jìn)行開發(fā)設(shè)計(jì)。在需求調(diào)研分析中,為了能夠適iPhone手機(jī)特點(diǎn)的情況下,在景區(qū)信息模塊對(duì)相關(guān)內(nèi)容的布局和動(dòng)態(tài)交互進(jìn)行了處理,讓其能為用戶提供最詳細(xì)的景區(qū)信息。天氣模塊的相關(guān)信息則通過Web接口從網(wǎng)絡(luò)獲取,然后轉(zhuǎn)換為適應(yīng)的手機(jī)界面并顯示。電子地圖中的周邊商店提供依賴于騰訊地圖API中的周邊POI信息搜索接口,調(diào)用接口獲取相關(guān)信息處理并顯示在手機(jī)屏幕上;動(dòng)態(tài)地圖導(dǎo)航的實(shí)現(xiàn)依賴于GPS手機(jī)定位和google地圖Web接口。此畢業(yè)設(shè)計(jì)說明書(論文)其余部分分為六章,主要針對(duì)景區(qū)iOS手機(jī)導(dǎo)游軟件的設(shè)計(jì)與實(shí)現(xiàn)展開全面的論述。其中,第1章緒論,介紹了系統(tǒng)開發(fā)的背景意義、目標(biāo)和相關(guān)知識(shí);第2章開發(fā)工具與技術(shù)介紹;第3章業(yè)務(wù)需要分析與系統(tǒng)架構(gòu)設(shè)計(jì),對(duì)軟件的需求進(jìn)行描述;第4章系統(tǒng)概要設(shè)計(jì),著重對(duì)軟件各個(gè)功能模塊和軟件的總體結(jié)構(gòu)設(shè)計(jì)過程進(jìn)行了闡述;第5章系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn),詳細(xì)介紹界面的構(gòu)建、程序的設(shè)計(jì)和實(shí)現(xiàn)的過程;第6章系統(tǒng)測(cè)試。第2頁(yè)共44頁(yè)第2頁(yè)共44頁(yè)第1章緒論選題背景及意義1.1.1旅游業(yè)發(fā)展以及現(xiàn)狀旅游是人們?yōu)榱诵蓍e、娛樂、探親訪友或者商務(wù)目的而進(jìn)行的定居性旅行和在瀏覽過程中所發(fā)生的一切關(guān)系和現(xiàn)象的總和。隨著生活水平的提高,越來越多的人喜歡在節(jié)假日出行游玩,這帶動(dòng)了旅游業(yè)的發(fā)展。據(jù)2014年1月29日第007版中國(guó)旅游報(bào)所報(bào)道的第三屆中國(guó)旅游產(chǎn)業(yè)發(fā)展年會(huì)嘉賓訪談,劉平春表示,在經(jīng)濟(jì)轉(zhuǎn)型的大背景下,中國(guó)旅游業(yè)正處在一個(gè)快速發(fā)展期。剛剛過去的2013年,旅游行業(yè)發(fā)展最大的特點(diǎn)是資本進(jìn)入旅游業(yè)的熱情空前高漲。劉平春認(rèn)為,2014年對(duì)旅游行業(yè)是一個(gè)重要的年份,在十八屆三中全會(huì)之后,經(jīng)濟(jì)轉(zhuǎn)型升級(jí),旅游行業(yè)的規(guī)模將得到進(jìn)一步擴(kuò)展[1]。表1-2全國(guó)旅游業(yè)總收入第3頁(yè)共44頁(yè)第3頁(yè)共44頁(yè)1.1.2旅游網(wǎng)隨著因物網(wǎng)的發(fā)展,計(jì)算機(jī)技術(shù)的不斷成熟,旅游網(wǎng)站紛紛落戶,促進(jìn)旅游這個(gè)行業(yè)大力發(fā)展?!俺?、住、行、游、購(gòu)、娛”,這六個(gè)字這中國(guó)旅游業(yè)發(fā)展的根本,而旅游網(wǎng)基本提供了這些信息。中國(guó)的旅游網(wǎng)在1996年就開始出現(xiàn)。旅游是大眾趨勢(shì),互聯(lián)網(wǎng)已經(jīng)成為最大的傳媒之一,因此旅游網(wǎng)發(fā)展速度非???,每年都有成千上萬家旅游網(wǎng)出現(xiàn),截至2012年底具有一定旅游資訊能力的旅游網(wǎng)有5000多家,其中專業(yè)旅游網(wǎng)300余家[2]。旅游網(wǎng)對(duì)于旅客來說,是為了提供旅游信息給旅客,旅客可以通過搜索得知旅行社-旅游路線-旅游價(jià)格等相關(guān)旅游信息。因?yàn)槁糜尉包c(diǎn)的不同,還可以獲取景點(diǎn)相關(guān)的基礎(chǔ)設(shè)施信息和安全知識(shí)等等,有些還會(huì)提供景點(diǎn)的特色?,F(xiàn)代人類的生活變化,傳統(tǒng)的旅游已經(jīng)不能滿足人們的需要。越來越多的人選擇自助旅行,或者組團(tuán)出行的驢友也越來越多。旅客獲取景點(diǎn)的相關(guān)信息,從旅游網(wǎng)了解是主要信息來源之一[2]。2012年左右自助游基本進(jìn)入成熟期,無論是選擇傳統(tǒng)的隨團(tuán)旅游或者自助旅游,總有照顧不到的地方,旅游公司和攻略總有不足之處。旅客在不經(jīng)意間也許就錯(cuò)過了景區(qū)特色,而抱憾離開。1.1.3手機(jī)移動(dòng)互聯(lián)網(wǎng)移動(dòng)互聯(lián)網(wǎng),就是將移動(dòng)通信和互聯(lián)網(wǎng)二者結(jié)合起來,成為一體[2]。移動(dòng)互聯(lián)網(wǎng)(MobileInternet,簡(jiǎn)稱MI)是一種通過智能移動(dòng)終端,受用移動(dòng)無線通信方式獲取業(yè)務(wù)和服務(wù)的新興業(yè)態(tài),包含終端、軟件和應(yīng)用三個(gè)層面。終端層包括智能手機(jī)、平板電腦、電子書、MID等;軟件包括操作系統(tǒng)、中間件、數(shù)據(jù)庫(kù)和安全軟件等。應(yīng)用層包括休閑娛樂類、工具媒體類、商務(wù)財(cái)經(jīng)類等不同應(yīng)用與服務(wù)。隨著技術(shù)和產(chǎn)業(yè)的發(fā)展,LTE(長(zhǎng)期演進(jìn),4G通信技術(shù)標(biāo)準(zhǔn)之一)和NFC(近場(chǎng)通信,移動(dòng)支付的支撐技術(shù))等網(wǎng)絡(luò)傳輸層關(guān)鍵技術(shù)也將被納入移動(dòng)互聯(lián)網(wǎng)的范疇之內(nèi)[2]。隨著寬帶無線接入技術(shù)和移動(dòng)終端技術(shù)的飛速發(fā)展,隨時(shí)隨地乃至在移動(dòng)過 第4頁(yè)共44頁(yè) 第4頁(yè)共44頁(yè) 程中都能方便地從互聯(lián)網(wǎng)獲取信息和服務(wù)已經(jīng)不在是想象[2]。從20世紀(jì)80年代中期第一代模擬移動(dòng)通信系統(tǒng)商用開始至今,短短十幾年間移動(dòng)通信從原來的2G發(fā)展到3G再到現(xiàn)在傳的沸沸揚(yáng)揚(yáng)的4G,足以證明移動(dòng)通信的發(fā)展速度勢(shì)不可擋。4G也稱為beyond3G(超3G),是多種無線技術(shù)的綜合系統(tǒng)。它融合了現(xiàn)有3G的增強(qiáng)型技術(shù),集3G網(wǎng)絡(luò)技術(shù)和無線LAN系統(tǒng)為一體。4G包含很多目前正在使用以及今后即將使用的無線技術(shù)[4]。4G技術(shù)支持100Mbps~150Mbps的下行網(wǎng)絡(luò)帶寬,也就是4G意味著用戶可以體驗(yàn)到最大12.5MB/s~18.75MB/s的下行速度。這是當(dāng)前國(guó)內(nèi)主流中國(guó)移動(dòng)3G(TD-SCDMA)2.8Mbps的35倍,中國(guó)聯(lián)通3G(WCDMA)的25倍。此時(shí)覆蓋全球的3G網(wǎng)絡(luò)已經(jīng)基本建成,全球25%以上人口使用第三代移動(dòng)通信系統(tǒng),第三代技術(shù)仍然在緩慢地進(jìn)入市場(chǎng),到那時(shí)整個(gè)行業(yè)正在消化吸收第三代技術(shù),對(duì)于第四代移動(dòng)通信系統(tǒng)的接受還需要一個(gè)逐步過渡的過程[8]??梢噪S時(shí)查閱景區(qū)相關(guān)信息,對(duì)于出行在外,尋找心中所愛的旅客是一個(gè)福音。于大多中國(guó)人的消費(fèi)心理,無論是4G還是3G上網(wǎng)流量消耗比較大?,F(xiàn)有旅游網(wǎng)大多適應(yīng)臺(tái)式電腦屏幕,打開時(shí)需要足夠的網(wǎng)速和流量。于是手機(jī)版的旅游客戶端應(yīng)時(shí)產(chǎn)生,為旅客們?cè)诼眯袝r(shí)隨時(shí)隨地上網(wǎng)查閱景區(qū)信息提供便利。1.2開發(fā)目標(biāo)隨著3G網(wǎng)的全球覆蓋,我們從網(wǎng)絡(luò)互聯(lián)時(shí)代步入移動(dòng)互聯(lián)時(shí)代。手機(jī)用為主要的移動(dòng)終端之一,又廣受人們的喜愛,這也給移動(dòng)互聯(lián)打下了堅(jiān)實(shí)的基礎(chǔ)。本文是基于iOS的風(fēng)景區(qū)介紹以及地圖導(dǎo)航應(yīng)用。首先,本文對(duì)我開發(fā)的項(xiàng)目的意義進(jìn)行了分析,闡述了網(wǎng)絡(luò)對(duì)旅游業(yè)產(chǎn)生的影響。其次,手機(jī)導(dǎo)游也是基于移動(dòng)互聯(lián),只要有網(wǎng)絡(luò)信號(hào),無論是wifi還是3G、4G網(wǎng)絡(luò),就可以查閱到景區(qū)的信息。再者,本文對(duì)開發(fā)所需要的關(guān)鍵技術(shù)進(jìn)行了介紹與分析,其中包括iOS系統(tǒng)開發(fā)框架、集成開發(fā)環(huán)境Xcode與其使用的面向?qū)ο缶幊淘O(shè)計(jì)語言O(shè)bjiective-C。最后本文根據(jù)軟件工程的開發(fā)流程,對(duì)系統(tǒng)的功能需求和業(yè)務(wù)流程等等進(jìn)行 第5頁(yè)共44頁(yè) 第5頁(yè)共44頁(yè) 了需求分析,并根據(jù)需求劃分了軟件系統(tǒng)的功能模塊,對(duì)各個(gè)功能模塊施行設(shè)計(jì)與實(shí)現(xiàn)?,F(xiàn)在很多的旅游網(wǎng)站適應(yīng)的是電腦屏幕,用手機(jī)打開時(shí)需要足夠的網(wǎng)速和流量,不符合我們中國(guó)大眾的消費(fèi)心理,所以手機(jī)版的景區(qū)導(dǎo)游勢(shì)在必行。所以我用蘋果專用語言O(shè)bjective-C編寫,設(shè)計(jì)了這款基于iOS系統(tǒng)的景區(qū)手機(jī)導(dǎo)航客戶端。本軟件實(shí)現(xiàn)了在iPhone手機(jī)上了解景區(qū)相關(guān)信息,獲取無錫近七日的天氣情況,以及景區(qū)用戶定位與景點(diǎn)導(dǎo)航指路。 第6頁(yè)共44頁(yè) 第6頁(yè)共44頁(yè) 第2章開發(fā)工具與技術(shù)介紹2.1iOS系統(tǒng)和SDK蘋果iOS是由蘋果公司開發(fā)的移動(dòng)操作系統(tǒng)。iOS是iPad、iPhone、iPodtouch和AppleTV的操作系統(tǒng)。iOS具有簡(jiǎn)單易用的界面、令人驚嘆的功能,以及超強(qiáng)的穩(wěn)定性,已經(jīng)成為iPhone、iPad和iPodtouch的強(qiáng)大基礎(chǔ)。盡管其他競(jìng)爭(zhēng)對(duì)手一直努力地追趕,iOS內(nèi)置的眾多技術(shù)和功能讓Apple設(shè)備始終保持著遙遙領(lǐng)先的地位[2]?,F(xiàn)在的移動(dòng)終端大多使用安卓或者iOS系統(tǒng),市場(chǎng)上現(xiàn)在已經(jīng)推出了好些安卓系統(tǒng)的手機(jī)導(dǎo)游客戶端,但是iOS系統(tǒng)的客戶端相對(duì)較少[2]。2007年10月17日,********在一封張貼于蘋果公司網(wǎng)頁(yè)上的公開信上宣布軟件開發(fā)工具包。它將在2008年2月提供給第三方開發(fā)商。軟件開發(fā)工具包于2008年3月6日發(fā)布,并允許開發(fā)人員開發(fā)iPhone和iPodtouch的應(yīng)用程序,并對(duì)其進(jìn)行測(cè)試,名為“iPhone手機(jī)模擬器”。然而,只有在付出了iPhone手機(jī)開發(fā)計(jì)劃的費(fèi)用后,應(yīng)用程序才能發(fā)布。自從Xcode3.1發(fā)布以后,Xcode就成為了iPhone軟件開發(fā)工具包的開發(fā)環(huán)境。第一個(gè)Beta版本是iPhoneSDK1.2b1(build5A147p)它在發(fā)布后立即就能夠使用了[2]。由于iOS是從于MacOSX核心演變而來,因此開發(fā)工具也是基于Xcode。該SDK需要擁有英特爾處理器且運(yùn)行MacOSXLeopard系統(tǒng)的Mac才能使用。其他的操作系統(tǒng),包括微軟的Windows操作系統(tǒng)和舊版本的MacOSX都不支持[2]。SDK本身是可以免費(fèi)下載的,但為了發(fā)布軟件,開發(fā)人員必須加入iPhone開發(fā)者計(jì)劃,其中有一步需要付款以獲得蘋果的批準(zhǔn)。加入了之后,開發(fā)人員們將會(huì)得到一個(gè)牌照,他們可以用這個(gè)牌照將他們編寫的軟件發(fā)布到蘋果的AppStore。發(fā)布軟件一共有三種方法:通過AppStore,通過企業(yè)配置僅在企業(yè)內(nèi)部員工間應(yīng)用,也可通過基于"Ad-hoc"而上載至多達(dá)100部iPhones[2]。這個(gè)發(fā)布iPhone軟件的形式的出現(xiàn)使人們不能根據(jù)GPLv3的授權(quán)代碼發(fā)布軟件。任何根據(jù)GPLv3任何代碼的開發(fā)者也必須得到GPLv3的授權(quán)。同時(shí),開 第7頁(yè)共44頁(yè) 第7頁(yè)共44頁(yè) 發(fā)商在散發(fā)布已經(jīng)由GPLv3授權(quán)的應(yīng)用軟件的同時(shí)必須提供由蘋果公司提供的密匙以允許該軟件修改版本的上載[2]。2.2開發(fā)工具XcodeXcode是一個(gè)用來開發(fā)Mac和iOS應(yīng)用程序的集成開發(fā)環(huán)境。Xcode提供了幾個(gè)編輯器來編碼和設(shè)計(jì)界面,例如源碼編輯器、UserInterface界面編輯器等。Xcode支持代碼的自動(dòng)提示、語法著色顯示、編輯、編譯、調(diào)試及運(yùn)行于一體的集成開發(fā)環(huán)境[3]。在iOS開發(fā)中界面設(shè)計(jì)是其中最重要的部分,好的界面設(shè)計(jì)會(huì)讓用戶眼前一亮。Xcode中提供了一個(gè)叫做InterfaceBuilder是一個(gè)可視化界面,最終生成一個(gè)XML格式的配置文件,該配置文件很少直接編輯。絕大部分操作是通過界面完成的。例如組件大小、對(duì)齊方式等。結(jié)合助手編輯器,還可以根據(jù)界面上的組件自動(dòng)生成代碼,例如組件屬性、事件方法等??梢詫⒕庉嬈饕晥D切換到助手編輯器,按住control鍵,并選中要生成的組件,拖曳到編輯區(qū),即可自動(dòng)生成代碼[3]。Xcode的主要優(yōu)勢(shì)1:Xcode將賦予你創(chuàng)建諸如計(jì)算和渲染引擎應(yīng)用程序的能力,這些應(yīng)用程序使用64位內(nèi)存定址。這非常適合數(shù)據(jù)集中的應(yīng)用程序,其通過訪問內(nèi)存中的數(shù)據(jù)運(yùn)行速度更快,遠(yuǎn)勝于磁盤訪問。Xcode將為你提供工具來建立并調(diào)試適合InterlCorei5,i7和MacOSXLion的32位或64位應(yīng)用程序,還可以讓你創(chuàng)建包含32位和64位執(zhí)行能力的FatBinaries[3]。Xcode的主要優(yōu)勢(shì)2:因?yàn)閄code支持CodeWarrior風(fēng)格相關(guān)項(xiàng)目參考,所以可以保證把CodeWarrior項(xiàng)目文件快速方便地轉(zhuǎn)移到Xcode。蘋果電腦公司的MacOSX綜合開發(fā)環(huán)境Xcode為各種類型的MacOSX軟件項(xiàng)目提供項(xiàng)目編輯、搜索和瀏覽,文件編輯,項(xiàng)目構(gòu)建和調(diào)試設(shè)備等功能[3]。Xcode的主要優(yōu)勢(shì)3:Xcode可用來輔助開發(fā)應(yīng)用程序、工具、架構(gòu)、數(shù)據(jù)庫(kù)、嵌入包、核心擴(kuò)展和設(shè)備驅(qū)動(dòng)程序。Xcode支持開發(fā)人員使用C、C++、Object-C、AppleScript和Java[3]。 第8頁(yè)共44頁(yè) 第8頁(yè)共44頁(yè) 2.3Objective-C語言O(shè)bjective-C是我這次設(shè)計(jì)所使用的語言。Objective-C中類的定義分為兩個(gè)部分:聲明部分和實(shí)現(xiàn)部分,并且一般分為兩個(gè)文件,分別是.h文件和.m文件[3]。在類中定義的變量可以分為實(shí)例變量、類變量和局部變量。每個(gè)對(duì)象的實(shí)例變量都是不同的,例如,我的姓名和你的姓名是不同的。類變量是所有對(duì)象共享的。局部變量在方法中聲明或者是函數(shù)的參數(shù)[3]。在類中定義的方法分為類方法和實(shí)例方法。類方法以“+”號(hào)開始,實(shí)例方法以“-”號(hào)打頭。類方法無須實(shí)例化,通過類名稱可以直接調(diào)用。實(shí)例方法必須實(shí)例化類后才能調(diào)用[3]。類的實(shí)例化是由類創(chuàng)建對(duì)象的過程,由一個(gè)類可以創(chuàng)建若干個(gè)對(duì)象。實(shí)例化一個(gè)類可以使用NSObject的new關(guān)鍵字,也可以使用NSObject的alloc和init。使用new方法實(shí)例化對(duì)象幾乎很少用到;而alloc表示分配內(nèi)存區(qū)域,init表示初始化,例如,給實(shí)例變量賦值。關(guān)于Object-C中方法的調(diào)用和其他編程語言有所不同,Object-C中方法的調(diào)用使用[]語法格式。Objective-C的主要優(yōu)勢(shì)是它的動(dòng)態(tài)性。這種動(dòng)態(tài)性可以讓應(yīng)用在運(yùn)行時(shí)判斷,瑞不是在編譯構(gòu)建時(shí)就固定下來。Objective-C的動(dòng)態(tài)性來自三個(gè)方面:動(dòng)態(tài)類型可以在程序運(yùn)行時(shí)判斷對(duì)象的類型。動(dòng)態(tài)綁定在程序不在編譯時(shí)判斷需要調(diào)用什么方法,而是在運(yùn)行時(shí)判斷。和其他面向?qū)ο蟮恼Z言一樣,只有在消息發(fā)出時(shí),方法調(diào)用和代碼才真正的聯(lián)結(jié)在一起。動(dòng)態(tài)載入可以在程序運(yùn)行時(shí)添加代碼模塊以及其他資源,讓應(yīng)用可以根據(jù)需要加載一系列可以執(zhí)行的代碼和資源,不是在啟動(dòng)時(shí)就加載所有組件,提交程序性能。2.4iOS定位系統(tǒng)iOSSDK中提供了兩個(gè)框架來實(shí)現(xiàn)GPS位置服務(wù),這兩個(gè)框架分別是CoreLocation.framework和MapKit.framwork。其中CoreLocation.framework主要 第9頁(yè)共44頁(yè) 第9頁(yè)共44頁(yè) 提供了獲得設(shè)備位置信息的API,例如,經(jīng)緯度信息;而MapKit.framework主要提供了展示地圖的API。這兩個(gè)框架中的核心類是CLLocationManager類和MKMapView提供了展示地圖的功能。我們可以使用CLGeoCoder類來實(shí)現(xiàn)位置描述和經(jīng)緯度之間的轉(zhuǎn)換。因?yàn)槭褂抿v訊地圖定位總有偏差,所以使用iOS自帶的定位系統(tǒng),減少偏差。2.5地圖API和Google地圖導(dǎo)航2.5.1.騰訊地圖API騰訊地圖定義:騰訊地圖開放API是由騰訊公司旗下的地圖網(wǎng)站(包括但不限于)為第三方開發(fā)者提供的應(yīng)用程序接口,開發(fā)者通過調(diào)用接口可以搭建與地圖相關(guān)的應(yīng)用程序[4]。騰訊地圖API(IOS)是一套基于iOS4.0及以上設(shè)備的應(yīng)用程序接口,通過該接口,您可以輕松訪問騰訊地圖服務(wù)和數(shù)據(jù),構(gòu)建功能豐富、交互性強(qiáng)的地圖應(yīng)用程序。騰訊地圖API不僅包含構(gòu)建地圖的基本接口,還提供了諸如地圖定位、地址編碼,實(shí)時(shí)路況,POI搜索,周邊搜索,公交路線搜索,駕車路線搜索,公交線搜索等數(shù)據(jù)服務(wù)。支持iOS4.0以上系統(tǒng),騰訊地圖API接口與iOS內(nèi)置的MapKit包兼容,開發(fā)者只需要很小的改動(dòng)即可完成從MapKit到騰訊地圖API的切換。并且遷移到騰訊地圖API之后很多MapKit中有iOS4.0以上版本才能使用的特性接口也可以正常使用[4]。在我的設(shè)計(jì)中,我使用騰訊地圖中的POI搜索功能和周邊搜索功能,完成周邊興趣點(diǎn)的定位,然后獲取其GPS坐標(biāo)。2.5.2.Google地圖導(dǎo)航Google地圖API是WebAPI。WebAPI是通過開放的Internet傳輸協(xié)議,以標(biāo)準(zhǔn)方式定義并提示可被其他應(yīng)用調(diào)用的服務(wù)內(nèi)容。它通過API調(diào)用將內(nèi)容進(jìn)行整合。目前架構(gòu)在Web平臺(tái)上,以HPPT為基礎(chǔ)的WebAPI的普及,也降低了應(yīng)用服務(wù)整合的門檻[2]。GoogleMapsAPI是Google為開發(fā)者提供Maps編程API。它允許開發(fā)者在不第10頁(yè)共44頁(yè)第10頁(yè)共44頁(yè)必建立自己的地圖服務(wù)器的情況下,將GoogleMaps地圖數(shù)據(jù)嵌入到網(wǎng)站之中,從而實(shí)現(xiàn)嵌入GoogleMaps的地圖服務(wù)器應(yīng)用,并借助GoogleMaps的地圖數(shù)據(jù)為用戶提供位置服務(wù)[2]。Google在電子地圖方面優(yōu)勢(shì)最成熟,所以在路線導(dǎo)航部分我選用的Google地圖導(dǎo)航。通過輸入起始點(diǎn)位置的GPS和終點(diǎn)位置的GPS,能夠快速地在界面的谷歌地圖上畫出到達(dá)指定地點(diǎn)的路線軌跡。第11頁(yè)共44頁(yè)第11頁(yè)共44頁(yè)第3章業(yè)務(wù)需求分析與系統(tǒng)架構(gòu)設(shè)計(jì)3.1技術(shù)可行性本軟件系統(tǒng)主要涉及到Objective-C語言[11]、網(wǎng)絡(luò)接口數(shù)據(jù)的上傳與下載分析、Xcode軟件等。Objective-C語言:Objective-C語言是在C的基礎(chǔ)上,加入面向?qū)ο筇匦詳U(kuò)充而成的編程語言。目前,Objective-C主要應(yīng)用于MacOSX和iOS這兩個(gè)NeXTSTEP的衍生系統(tǒng)。Objective-C是iOS的開發(fā)語言。網(wǎng)絡(luò)接口數(shù)據(jù)的上傳與下載分析:主要是利用JSON(JavaScriptObjectNotation),JSON簡(jiǎn)單說就是javascript中的對(duì)象和數(shù)組,通過這兩種結(jié)構(gòu)就可以表示各種復(fù)雜的結(jié)構(gòu)。①對(duì)象:對(duì)象在js中表示為“{}”擴(kuò)起來的內(nèi)容。②數(shù)組:數(shù)組在js中是中括號(hào)“[]”擴(kuò)起來的內(nèi)容。經(jīng)過對(duì)象、數(shù)組2種結(jié)構(gòu)就可以組合成復(fù)雜的數(shù)據(jù)結(jié)構(gòu)了。(3)Xcode軟件:Xcode是Apple開發(fā)工具套件中的一個(gè),是Apple工具套件的中心,它提供了基本的源代碼開發(fā)環(huán)境,是一個(gè)集成開發(fā)環(huán)境IDE,它能夠創(chuàng)建和管理開發(fā)iPhone項(xiàng)目的所有源代碼,運(yùn)行調(diào)試源代碼,并編譯源代碼為可執(zhí)行文件。所以軟件的實(shí)現(xiàn)在技術(shù)上可行的。3.2需求分析3.3.1系統(tǒng)用例相較于手機(jī)應(yīng)用來說,系統(tǒng)涉及到有角色永遠(yuǎn)只有用戶這一種。如圖3-1所示,系統(tǒng)用例圖包括景區(qū)信息模塊、天氣信息模塊、景區(qū)攻略(即游玩導(dǎo)航)三個(gè)主要部分。第12頁(yè)共44頁(yè)第12頁(yè)共44頁(yè)3-1系統(tǒng)用例圖景區(qū)信息用例對(duì)應(yīng)業(yè)務(wù)需求描述中景區(qū)信息相關(guān)介紹。用戶能夠根據(jù)自己的興趣選擇了解本系統(tǒng)提供的景區(qū)相關(guān)信息。天氣信息用例對(duì)應(yīng)業(yè)務(wù)需求描述中的天氣查詢功能。用戶可以通過連接網(wǎng)絡(luò)得到未來幾天內(nèi)的天氣信息,以及當(dāng)天的天氣生活指數(shù)。3-2景區(qū)概況和天氣情況用例圖第13頁(yè)共44頁(yè)第13頁(yè)共44頁(yè)景區(qū)攻略用例對(duì)應(yīng)業(yè)務(wù)需求描述中的地圖導(dǎo)航功能。用戶可以通過導(dǎo)航到達(dá)系統(tǒng)所提供的景區(qū)景點(diǎn)以及景點(diǎn)的部分相關(guān)信息。3-3景區(qū)攻略用例圖3.3業(yè)務(wù)描述作為一個(gè)景區(qū)手機(jī)導(dǎo)游客戶端,主要就是為旅客景區(qū)的各種信息。我以風(fēng)景區(qū)作為試點(diǎn),所以提供景區(qū)的各種信息。是橫臥在太湖西北岸的一個(gè)半島,的風(fēng)光山清水秀,渾然天成,是太湖風(fēng)景的精華所在,素有“太湖第一名勝”的稱號(hào)。2012年10月26日,晉升為國(guó)家5A級(jí)風(fēng)景區(qū)。該手機(jī)軟件提供景區(qū)的相關(guān)分為三大模塊:景點(diǎn)信息,天氣信息,地圖信息。3.3.1景區(qū)介紹業(yè)務(wù)這部分的信息資源來自官網(wǎng)提供,我通過界面處理和動(dòng)態(tài)交互介紹景區(qū)文化、歷史淵源、地方特產(chǎn)、名人蹤跡、故事傳說、周邊景點(diǎn)這幾個(gè)部分。(1)景區(qū)文化:這部分主要對(duì)景區(qū)的介紹,名人王昆侖的介紹,第14頁(yè)共44頁(yè)第14頁(yè)共44頁(yè)還有部分書畫的展示。向旅客展示最具文化特色的兩部分,并且對(duì)有個(gè)大致了解。(2)歷史淵源:這部分描述了景區(qū)的形成歷史,以及相關(guān)的文化背景,提供了旅游咨詢熱線電話。旅客如果需要對(duì)軟件提供的信息希望有更詳盡的了解可以選擇撥打旅游咨詢熱線電話,軟件會(huì)幫你自動(dòng)幫你接通電話咨詢。(3)地方特產(chǎn):這部分為前來游玩的游客提供無錫的地方特產(chǎn)和地方美食,方便游客選擇購(gòu)買特產(chǎn)。通過自定義的列表,模擬JavaScript網(wǎng)頁(yè)動(dòng)態(tài)交互點(diǎn)擊后顯示每個(gè)單元格的更多內(nèi)容。(4)名人蹤跡:這部分為一個(gè)照片展示區(qū),主要展示前來觀光旅游的名人和部分旅客的景區(qū)留念合影。通過一個(gè)照片播放器,播放預(yù)設(shè)的照片,支持后退和前進(jìn)。(5)故事傳說:這部分提供了六個(gè)關(guān)于的故事傳說,分別是無錫旅情石碑的由來;什么是“黿”;太湖的形成;的三山傳說;三寶的由來;以及月老祠月下老人的傳說。(6)周邊景點(diǎn):這部分介紹了附近的景點(diǎn),比如蠡園、梅園、錫惠公園、三國(guó)水滸城、靈山勝境,提供相關(guān)的文字介紹和景點(diǎn)圖片欣賞。3.3.2天氣相關(guān)業(yè)務(wù)本模塊利用2345天氣王的web接口提供最近幾日的天氣情況和當(dāng)天的生活指數(shù),出行指數(shù)。3.3.3游玩相關(guān)業(yè)務(wù)本模塊主要提供景區(qū)地圖,GPS定位和目的地導(dǎo)航功能。(1)行:本部分提供景區(qū)瀏覽路線推薦,公共設(shè)施分布,景區(qū)地圖。旅客可以在這里了解到景區(qū)所擁有的全部公共設(shè)施,還有景區(qū)的簡(jiǎn)化地圖和詳細(xì)地圖。(2)住和吃:景區(qū)美食,景區(qū)內(nèi)用餐地點(diǎn)的環(huán)境和位置,酒店,住宿點(diǎn)位置,提供景區(qū)的餐飲地點(diǎn)與住宿位置和游客位置的導(dǎo)航。這里提供景區(qū)的用餐地點(diǎn)和茶館,使用云標(biāo)簽擬態(tài),用戶可以選擇自己想去的地點(diǎn)點(diǎn)擊就會(huì)進(jìn)入地圖導(dǎo)航,顯示用戶地點(diǎn)到目標(biāo)地點(diǎn)的步行路線。第15頁(yè)共44頁(yè)第15頁(yè)共44頁(yè)(3)娛:景區(qū)的門票介紹,快艇服務(wù),觀光車,游艇服務(wù)等等項(xiàng)目介紹,以及相關(guān)特色游推薦。旅客可以在這里看到景區(qū)所提供的全部娛樂項(xiàng)目。(4)購(gòu):提供景區(qū)附近的所有商店和超市的坐標(biāo)點(diǎn),旅客可以選擇自己感興趣的商店進(jìn)行定位導(dǎo)航。這邊通過騰訊地圖POI搜索出景區(qū)周邊所有可以購(gòu)物的地點(diǎn),顯示在在列表里。旅客可以選擇自己想去的商店,點(diǎn)擊后進(jìn)入地圖導(dǎo)航顯示用戶到目標(biāo)商店的步行路線。(5)拍:推薦景區(qū)各種合適攝影留念的地點(diǎn),以及景點(diǎn)導(dǎo)航。旅客可以通過點(diǎn)擊自己感興趣的景色,在顯示的電子地圖上畫出用戶到可以看到相應(yīng)景色的景點(diǎn)步行路線。3.3.4各個(gè)類的定義綜合軟件系統(tǒng)的需要,我定義了如下數(shù)據(jù)類的分析。圖3-8為整體自定義類圖shootClass(地方特產(chǎn)信息類),aroundSecClass(周邊景點(diǎn)信息類),CloudButton(吃/住云標(biāo)簽按鈕類),poiClass(吃/住/購(gòu)/拍的興趣點(diǎn)類),QPoiData(Poi搜索數(shù)據(jù)類),QPoiInfo(Poi搜索結(jié)果信息類)。圖3-8整體自定義類圖第16頁(yè)共44頁(yè)第16頁(yè)共44頁(yè)(1)景區(qū)介紹中的地方特產(chǎn)中的類,因?yàn)榈胤教禺a(chǎn)使用了自定的動(dòng)態(tài)列表加載顯示,所以它需要單獨(dú)定義一個(gè)數(shù)據(jù)類。地方特產(chǎn):屬性有特產(chǎn)名稱,特產(chǎn)介紹,特產(chǎn)ID,特產(chǎn)圖片。其中特產(chǎn)ID是關(guān)鍵,相當(dāng)于數(shù)據(jù)類表中的主鍵。(2)景區(qū)介紹中的周邊景點(diǎn)中的類。周邊景點(diǎn):景點(diǎn)名稱,景點(diǎn)簡(jiǎn)介,景點(diǎn)圖片數(shù)組,景點(diǎn)ID。其中景點(diǎn)ID是關(guān)鍵。(3)地圖導(dǎo)航中吃、住云標(biāo)簽按鈕類。吃/住云標(biāo)簽按鈕:云標(biāo)簽ID,按鈕頂點(diǎn)坐標(biāo),按鈕左坐標(biāo)點(diǎn),按鈕右坐標(biāo)點(diǎn)。其中去標(biāo)簽ID是關(guān)鍵。(4)地圖導(dǎo)航中的吃、住、購(gòu)、拍中的信息類。吃/住/購(gòu)/拍:用戶位置經(jīng)度,用戶位置緯度,目標(biāo)地點(diǎn)名稱,目標(biāo)地點(diǎn)ID,目標(biāo)地點(diǎn)經(jīng)度,目標(biāo)地點(diǎn)緯度。其中目標(biāo)地點(diǎn)ID是關(guān)鍵。以上是我自己設(shè)計(jì)定義的類別,下面是我被使用到的騰訊地圖API中的相關(guān)類。(1)POI搜索結(jié)果類(QPoiData):本次POI搜索的總結(jié)果數(shù),當(dāng)前頁(yè)的POI結(jié)果數(shù),本次POI搜索的總頁(yè)數(shù),當(dāng)前頁(yè)的索引,POI列表(成員是POI信息類)。(2)POI信息類(QPoiInfo):POI的類型,POI的UID,POI的名稱,POI的詳細(xì)地址,POI的電話,POI的分類,POI的詳細(xì)描述,POI的地理坐標(biāo)。3.4系統(tǒng)流程圖本軟件分成三大模塊,下面是本軟件的系統(tǒng)流程圖,如圖3-4。本軟件需要連網(wǎng)使用,打開軟件后,首先出現(xiàn)加載界面,然后是歡迎界面,在歡迎界面會(huì)獲取你的當(dāng)前位置,連接騰訊地圖并上傳你的位置信息。同時(shí)后臺(tái)有個(gè)字體加載程序,連網(wǎng)加載字體。再次點(diǎn)擊歡迎界面就會(huì)來到主菜單,主菜單上有三個(gè)按鈕菜單,分別是:天氣情況,景區(qū)介紹,和地圖導(dǎo)航。點(diǎn)擊天氣情況會(huì)就自動(dòng)連接網(wǎng)絡(luò),獲取2345天氣王的web接口信息,并顯示,網(wǎng)絡(luò)連接失敗,則不顯示天氣信息。點(diǎn)擊景區(qū)介紹,會(huì)出現(xiàn)一個(gè)下拉菜單,點(diǎn)擊菜單選項(xiàng)就可以進(jìn)入相應(yīng)的小模塊。點(diǎn)擊地圖導(dǎo)航也會(huì)出現(xiàn)一個(gè)下拉菜單,點(diǎn)擊吃、住、購(gòu)、拍,第17頁(yè)共44頁(yè)第17頁(yè)共44頁(yè)會(huì)連接地API請(qǐng)求信息,比如吃,進(jìn)入這個(gè)選項(xiàng)后,會(huì)進(jìn)入個(gè)類似標(biāo)簽云的選擇界面,點(diǎn)擊標(biāo)簽會(huì)進(jìn)入地圖,地圖上會(huì)畫出用戶當(dāng)前位置到達(dá)目標(biāo)地點(diǎn)的路線。如果網(wǎng)絡(luò)連接失敗,則跳出提示,并不顯示地圖。圖3-4軟件系統(tǒng)活動(dòng)圖第18頁(yè)共44頁(yè)第18頁(yè)共44頁(yè)第4章系統(tǒng)概要設(shè)計(jì)4.1總體設(shè)計(jì)系統(tǒng)總體設(shè)計(jì)是指手機(jī)軟件在邏輯上實(shí)現(xiàn)的功能,用戶可以通過iPhone手機(jī)隨時(shí)隨地的查看風(fēng)景區(qū)的相關(guān)介紹,天氣情況,以及景區(qū)的設(shè)施地圖等等。為了實(shí)現(xiàn)這些功能,手機(jī)必須開啟定位功能,并保證網(wǎng)絡(luò)的連接,以便隨時(shí)請(qǐng)求天氣數(shù)據(jù),地圖數(shù)據(jù)與你的當(dāng)前位置。通過參考景區(qū)的官方網(wǎng)站,體現(xiàn)移動(dòng)互聯(lián)的特性,完成最終的設(shè)計(jì)目標(biāo)。4.1.1軟件系統(tǒng)整體規(guī)劃軟件是由天氣情況、景區(qū)介紹、景區(qū)攻略也就地圖導(dǎo)航三大模塊組成。景區(qū)介紹又分成景區(qū)文化,歷史淵源,地方特產(chǎn),名人蹤跡,故事傳說,周邊景點(diǎn)。景區(qū)攻略又分成行、吃、住、娛、購(gòu)、拍。4.1.2軟件系統(tǒng)總體模塊圖軟件系統(tǒng)總體模塊圖,如圖4-1。圖4-1軟件系統(tǒng)總體模塊圖第19頁(yè)共44頁(yè)第19頁(yè)共44頁(yè)4.2數(shù)據(jù)類設(shè)計(jì)在軟件系統(tǒng)總體設(shè)計(jì)階段,數(shù)據(jù)的下載和使用,需要自定義數(shù)據(jù)的類別。在iOS系統(tǒng)的軟件開發(fā)過程中,或許用不到數(shù)據(jù)庫(kù),但是自定義類卻一定是必須的。因?yàn)橄到y(tǒng)提供的類往往不能滿足開發(fā)者設(shè)計(jì)需求,所以自定義類在iOS的開發(fā)中至關(guān)重要的一部分。4.2.1概念結(jié)構(gòu)設(shè)計(jì)通過需求分析定義相關(guān)類后,我根據(jù)自己所設(shè)計(jì)的每個(gè)類的成員不同,進(jìn)行相應(yīng)的概念結(jié)構(gòu)設(shè)計(jì)。概念結(jié)構(gòu)設(shè)計(jì)主要采用了E-R方法。具體如下圖:圖4-2地方特產(chǎn)E-R圖圖4-3周邊景點(diǎn)E-R圖圖4-4吃/住云標(biāo)簽E-R圖圖4-4吃(地圖導(dǎo)航以吃為樣例)E-R圖4.2.2邏輯結(jié)構(gòu)設(shè)計(jì)根據(jù)概念結(jié)構(gòu)設(shè)計(jì)得到局部的E-R圖,因?yàn)槲宜O(shè)計(jì)的軟件系統(tǒng)沒有相應(yīng)后臺(tái),所有的數(shù)據(jù)都是連接網(wǎng)絡(luò)上的API接口請(qǐng)求相關(guān)數(shù)據(jù),再進(jìn)行分析、分類,所以根據(jù)現(xiàn)有的E-R模型圖進(jìn)行邏輯結(jié)構(gòu)設(shè)計(jì),向關(guān)系模型轉(zhuǎn)換,依照規(guī)則得到如下結(jié)果:地方特產(chǎn)(特產(chǎn)ID,特產(chǎn)名稱,特產(chǎn)介紹,特產(chǎn)圖片);第20頁(yè)共44頁(yè)第20頁(yè)共44頁(yè)表4-1地方特產(chǎn)類表:shootClass字段名字段類型是否主鍵是否非空是否自增字段描述dataIDNSString是是否特產(chǎn)IDnameStrNSString否是否特產(chǎn)名稱dataStrNSString否是否特產(chǎn)介紹imageNumUIImage否是否特產(chǎn)圖片圖4-5為地方特產(chǎn)的單獨(dú)類圖,操作addDataAction()是這個(gè)類的加載操作。圖4-5地方特產(chǎn)類圖周邊景點(diǎn)(景點(diǎn)ID,景點(diǎn)名稱,景點(diǎn)簡(jiǎn)介,景點(diǎn)圖片數(shù)組);表4-2周邊景點(diǎn)類表:aroundSecClass字段名字段類型是否主鍵是否非空是否自增字段描述secIDNSString是是否景點(diǎn)IDsecNameNSString否是否景點(diǎn)名稱secDataNSString否是否景點(diǎn)簡(jiǎn)介secImageListNSMutableArray否是否景點(diǎn)圖片數(shù)組吃/住云標(biāo)簽(云標(biāo)簽ID,按鈕頂點(diǎn)坐標(biāo),按鈕左坐標(biāo),按鈕右坐標(biāo));表4-3吃/住云標(biāo)簽類表:CloudButton字段名字段類型是否主鍵是否非空是否自增字段描述bottomCGFloat是是否云標(biāo)簽IDtopCGFloat否是否按鈕頂點(diǎn)坐標(biāo)leftCGFloat否是否按鈕左坐標(biāo)rightCGFloat否是否按鈕右坐標(biāo)下圖是說明的故事傳說/周邊景點(diǎn)與云標(biāo)簽類之間的關(guān)系圖。CloudButton類第21頁(yè)共44頁(yè)第21頁(yè)共44頁(yè)圖中的操作animationUpdate()代表的是動(dòng)態(tài)坐標(biāo)數(shù)據(jù)的更新操作;操作LimitSpeedbettowinMINandMAX()代表的云標(biāo)簽運(yùn)動(dòng)超出屏幕邊界進(jìn)的操作;操作touchesBegan()代表云標(biāo)簽發(fā)生移動(dòng)前進(jìn)行的操作;操作touchesMoved()代表云標(biāo)簽發(fā)生移動(dòng)進(jìn)進(jìn)行的操作;操作touchesEnded()代表云標(biāo)簽發(fā)生移動(dòng)結(jié)束后進(jìn)行的操作。圖4-6故事傳說/周邊景點(diǎn)與云標(biāo)簽類之間的關(guān)系圖吃(地點(diǎn)ID,用戶位置經(jīng)度,用戶位置緯度,地點(diǎn)名稱,地點(diǎn)位置經(jīng)度,地點(diǎn)位置緯度)。表4-3吃類表:poiClass字段名字段類型是否主鍵是否非空是否自增字段描述addressIDNSString是是否地點(diǎn)IDuserLngfloat否是否用戶經(jīng)度userLatfloat否是否用戶緯度addNameNSString否是否地點(diǎn)名稱addLngfloat否是否地點(diǎn)經(jīng)度addLatfloat否是否地點(diǎn)緯度騰訊地圖中的相關(guān)類POI數(shù)據(jù)(本次POI搜索的總結(jié)果數(shù),當(dāng)前頁(yè)的POI結(jié)果數(shù),本次POI搜索的總頁(yè)數(shù),當(dāng)前頁(yè)的索引,POI數(shù)據(jù)信息列表);表4-4POI數(shù)據(jù)類表:QPoiData字段名字段類型是否主鍵是否非空是否自增字段描述totalPoiNumNSInteger是是否POI總結(jié)果數(shù)curPoiNumNSInteger否是否POI當(dāng)前頁(yè)結(jié)果數(shù)第22頁(yè)共44頁(yè)第22頁(yè)共44頁(yè)pageNumNSInteger否是否POI本次搜索總頁(yè)數(shù)pageIndexNSInteger否是否當(dāng)前頁(yè)的索引poiInfoListNSArray否是否POI列表POI數(shù)據(jù)信息(POI的類型,POI的UID,POI的名稱,POI的詳細(xì)地址,POI的電話,POI的分類,POI的詳細(xì)描述,POI的地理坐標(biāo))。表4-5POI數(shù)據(jù)信息類表:QPoiInfo字段名字段類型是否主鍵是否非空是否自增字段描述typeQPoiTye是是否POI的類型uidNSString否是否POI的UIDnameNSString否是否POI的名稱addressNSString否是否POI的詳細(xì)地址phoneNSString否是否POI的電話classesNSString否是否POI的分類poiInfoNSString否是否POI的詳細(xì)描述coordinateCLLocationCoordinate2D否是否POI的地理坐標(biāo)下圖是景區(qū)攻略中的子類與POI搜索數(shù)據(jù)類和POI搜索信息類的類關(guān)系圖。圖4-7POI數(shù)據(jù)類相關(guān)類下圖為整體的類關(guān)系圖。shootClass地方特產(chǎn)類屬于單獨(dú)的一個(gè)類,與其他類沒有關(guān)系。aroundSecClass與CloudButton是一對(duì)一的類關(guān)系,一個(gè)云標(biāo)簽對(duì)第23頁(yè)共44頁(yè)第23頁(yè)共44頁(yè)應(yīng)一個(gè)景點(diǎn)。QPoiInfo是QPoiData類的包含類,這是騰訊API自帶的類。poiClass是我自定義的類,組成為獲取的用戶當(dāng)前經(jīng)緯坐標(biāo)和坐標(biāo)地點(diǎn)ID以前從QPoiInfo中獲取的目標(biāo)地點(diǎn)的經(jīng)緯坐標(biāo)和坐標(biāo)地點(diǎn)ID。圖4-8全部類關(guān)系圖第24頁(yè)共44頁(yè)第24頁(yè)共44頁(yè)第5章系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)本軟件有三個(gè)模塊組成:天氣模塊,景區(qū)介紹模塊,景點(diǎn)攻略(地圖導(dǎo)航)模塊。由于軟件大多依賴于網(wǎng)絡(luò)公開的API接口,大多數(shù)實(shí)現(xiàn)的功能需要連接網(wǎng)絡(luò)才能獲取數(shù)據(jù)。軟件以天藍(lán)色為主背景,綴以動(dòng)態(tài)的櫻花。進(jìn)入歡迎界面后就是主菜單界面,點(diǎn)擊主菜單中的天氣選項(xiàng),就會(huì)進(jìn)入天氣界面;點(diǎn)擊景區(qū)介紹和景區(qū)攻略選項(xiàng)就有出現(xiàn)一個(gè)下拉列表,菜單選擇的處理時(shí)序圖如圖5-1。圖5-1菜單選擇的處理時(shí)序圖打開軟件,首先判斷設(shè)備屏幕的大小,在.h的文件中定義宏函數(shù):#defineiPhone5([UIScreeninstancesRespondToSelector:@selector(currentMode)]?CGSizeEqualToSize(CGSizeMake(640,1136),[[UIScreenmainScreen]currentMode].size):NO),判斷設(shè)備屏尺寸時(shí),只需要在-(void)viewDidLoad{}中加上判斷語句if(iPhone5){}然后設(shè)定控件在4英寸屏幕下的位置就可以。然后連接騰訊地圖API,請(qǐng)求代碼如下:第25頁(yè)共44頁(yè)第25頁(yè)共44頁(yè)QAppKeyCheck*check=[[QAppKeyCheckalloc]init];[checkstart:@"fd623b8aa3239773b1ad27e74f758c93"withDelegate:self];self.appKeyCheck=check;通過函數(shù)-(void)notifyAppKeyCheckResult:(QErrorCode)errCode{},得到返回值,然后判斷是否已經(jīng)連接到地圖API。大部分用戶的蘋果手機(jī)只有系統(tǒng)字體,但是現(xiàn)在蘋果官網(wǎng)也提供了多種中文字體,我參考官方提供的數(shù)據(jù),編寫了一個(gè)動(dòng)態(tài)下載字體并使用到程序,讓其美化的界面。核心代碼如下:UIFont*aFont=[UIFontfontWithName:fontNamesize:12.];NSMutableDictionary*attrs=[NSMutableDictionarydictionaryWithObjectsAndKeys:fontName,kCTFontNameAttribute,nil];CTFontDescriptorRefdesc=CTFontDescriptorCreateWithAttributes((__bridgeCFDictionaryRef)attrs);*descs=[NSMutableArrayarrayWithCapacity:0];[descsaddObject:(__bridgeid)desc];CFRelease(desc);CTFontDescriptorMatchFontDescriptorsWithProgressHandler((__bridgeCFArrayRef)descs,NULL,^(CTFontDescriptorMatchingStatestate,CFDictionaryRefprogressParameter){ doubleprogressValue=[[(__bridgeNSDictionary*)progressParameterobjectForKey:(id)kCTFontDescriptorMatchingPercentage]doubleValue]; if(state==kCTFontDescriptorMatchingDidBegin){ ...}return(bool)YES;});}使用已經(jīng)下的字體美化界面,只需要在控件的屬性設(shè)定字體的格式和大小就可以了,比如:textView.font=[UIFontfontWithName:@"STXingkai-SC-Light"size:15.];5.1天氣情況模塊本模塊的核心是UIWebView,在天氣情況界面的.h文件里引入U(xiǎn)IWebViewDelegate。進(jìn)入此頁(yè)面時(shí)請(qǐng)求網(wǎng)絡(luò)連接,依據(jù)已經(jīng)編寫好的web接口,第26頁(yè)共44頁(yè)第26頁(yè)共44頁(yè)請(qǐng)求相應(yīng)的數(shù)據(jù),并顯示在界面的UIWebView上。天氣數(shù)據(jù)主要有:最近日的氣溫,出行指數(shù),和需要注意東西。圖5-2天氣情況時(shí)序圖網(wǎng)絡(luò)請(qǐng)求加載和加載失敗,則通過UIWebViewDelegate中的函數(shù)處理相應(yīng)情況。網(wǎng)絡(luò)請(qǐng)求加載中的函數(shù)如下:-(void)webViewDidStartLoad:(UIWebView*)webView{}網(wǎng)絡(luò)請(qǐng)求失敗的函數(shù)如下:-(void)webView:(UIWebView*)webViewdidFailLoadWithError:(NSError*)error{}5.2景區(qū)業(yè)務(wù)之景區(qū)介紹景區(qū)介紹主要是根據(jù)風(fēng)景區(qū)官網(wǎng)提供的各種資源進(jìn)行篩選,為用戶提供最官方最真實(shí)的景區(qū)資料。第27頁(yè)共44頁(yè)第27頁(yè)共44頁(yè)圖5-3景區(qū)業(yè)務(wù)模塊時(shí)序圖5.2.1景區(qū)業(yè)務(wù)子模塊之景區(qū)文化進(jìn)入景區(qū)文化這個(gè)子模塊,首先讓人記住的就是那枝動(dòng)態(tài)的櫻花。風(fēng)景區(qū)中,櫻花是最十分重要的元素。作為“世界三大賞櫻勝地”之一,已種植有30000余株各類櫻花,共有67個(gè)品種,是我國(guó)規(guī)模最大,品種最全的櫻花種植基地,有“中華第一賞櫻勝地”的美譽(yù)[16]。iOS系統(tǒng)不支持flash動(dòng)畫,所以動(dòng)畫的實(shí)現(xiàn)只能過自定義圖片數(shù)組,然后改變UIImageView的屬性,讓圖片動(dòng)起來。這部分的核心代碼如下:第28頁(yè)共44頁(yè)第28頁(yè)共44頁(yè)NSArray*gifArray=[NSArrayarrayWithObjects:[UIImageimageNamed:@"f1"],…,nil];flowerImageV.animationImages=gifArray;//動(dòng)畫圖片數(shù)組flowerImageV.animationDuration=5;//執(zhí)行一次完整動(dòng)畫所需的時(shí)長(zhǎng)flowerImageV.animationRepeatCount=999;//動(dòng)畫重復(fù)次數(shù)[flowerImageVstartAnimating];在景區(qū)文化中,還分有三個(gè)子模板:介紹,王昆侖故居,書畫展示。這三個(gè)子模板主要是對(duì)iOS中的UILabel,UIButton,UIScrollView等等這幾個(gè)控件的靈活使用,通過各種屬性參數(shù)的修改,讓他變成自己想要的顯示狀態(tài)。介紹是官網(wǎng)上對(duì)于的描述,主要通過UIScrollView和UILabel來實(shí)現(xiàn);王昆侖故居主要介紹的是從72峰山館走出去的王昆侖先生的生平;書畫展示,是部分存放在風(fēng)景區(qū)的書畫欣賞。具體如圖5-3:圖5-4景區(qū)文化界面截圖5.2.2景區(qū)業(yè)務(wù)子模塊之景區(qū)歷史景區(qū)歷史講述的是在歲月深處形成的過程,以及的櫻花展示。的歷史這個(gè)部分同樣使用了下載的字體美化界面,iOS系統(tǒng)中關(guān)于UIScrollView的動(dòng)態(tài)處理的非常棒,讓用戶有完美的閱讀體驗(yàn)。通過點(diǎn)擊櫻花兩字,切換到櫻花展示的界面。點(diǎn)擊旅游熱線圖片,可以撥打熱線咨詢景區(qū)旅游的相關(guān)信息。通過[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"tel://051096889688"]];就可以調(diào)用電話撥號(hào)界面,撥打電話。第29頁(yè)共44頁(yè)第29頁(yè)共44頁(yè)圖5-5歷史淵源界面截圖5.2.3景區(qū)業(yè)務(wù)子模塊之地方特產(chǎn)在本部分,我自定義了顯示列表,通過獲取的特產(chǎn)信息,然后顯示在界面上。通過在函數(shù)-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath{}中使用自定義的Cell和數(shù)據(jù)類,讓獲取到的特產(chǎn)信息,顯示在列表中。在列表單元格點(diǎn)擊事件函數(shù)-(void)tableView:(UITableView*)tableViewdidSelectRowAtIndexPath:(NSIndexPath*)indexPath{}中,處理點(diǎn)擊事件時(shí),同時(shí)傳遞被點(diǎn)擊的單元的位置,讓進(jìn)入詳細(xì)頁(yè)面的動(dòng)態(tài)更加完美。界面如圖5-5右圖,列表點(diǎn)擊跳轉(zhuǎn)的動(dòng)態(tài)核心代碼如下:[UIViewanimateWithDuration:0.4fdelay:0options:UIViewAnimationOptionCurveEaseInOutanimations:^(void){self.labelForPlace.frame=CGRectMake(35,200,self.labelForPlace.frame.size.width,self.labelForPlace.frame.size.height);self.labelForCountry.frame=CGRectMake(35,250,self.labelForCountry.frame.size.width,self.labelForCountry.frame.size.height);...}completion:NULL];5.2.4景區(qū)業(yè)務(wù)子模塊之名人蹤跡名人蹤跡這部分界面主要使用的是一個(gè)圖片播放器,它可以自動(dòng)播放圖片,有淡入淡出的效果,也可以通過點(diǎn)擊和滑動(dòng)進(jìn)行圖片翻頁(yè)。這個(gè)圖片播放器重寫了UIScrollView,通過自定義,實(shí)現(xiàn)了圖片播放功能,核心代碼為:第30頁(yè)共44頁(yè)第30頁(yè)共44頁(yè)[arrOfImagesrelease];arrOfImages=[arrretain];pageControl=[[UIPageControlalloc]init];pageControl.frame=CGRectMake((98/[[UIScreenmainScreen]bounds].size.width)*self.frame.size.width,(400/[[UIScreenmainScreen]bounds].size.height)*self.frame.size.height,122,36);pageControl.numberOfPages=arrOfImages.count;pageControl.currentPage=0;scrollview=[[UIScrollViewalloc]initWithFrame:self.frame];scrollview.contentSize=CGSizeMake(scrollview.frame.size.width*arrOfImages.count,scrollview.frame.size.height);[scrollviewsetDelegate:self];scrollview.showsVerticalScrollIndicator=NO;scrollview.showsHorizontalScrollIndicator=NO;scrollview.pagingEnabled=YES;for(inti=0;i<arrOfImages.count;i++){...}[pageControladdTarget:selfaction:@selector(pgCntlChanged:)forControlEvents:UIControlEventValueChanged];[selfperformSelector:@selector(startAnimatingScrl)withObject:nilafterDelay:3.0];[selfaddSubview:scrollview];[selfaddSubview:pageControl];5.2.5景區(qū)業(yè)務(wù)子模塊之故事傳說和周邊景點(diǎn)故事傳說和周邊景點(diǎn)都使用了花式按鈕,六個(gè)花瓣按鍵呈環(huán)型排列,中心有個(gè)較大的花瓣按鈕。點(diǎn)擊自己感興趣的按鈕,那個(gè)按鈕就會(huì)自動(dòng)轉(zhuǎn)到最上方,并且中心按鈕也會(huì)變成那個(gè)被點(diǎn)擊的按鈕。通過點(diǎn)擊中心按鈕,跳轉(zhuǎn)到自己感興趣的部分。動(dòng)態(tài)花式按鈕的實(shí)現(xiàn)主要依賴于CircularLayOutView以及XYPoint這兩個(gè)自定義的類。CircularLayOutView定義的是動(dòng)態(tài)按鈕,XYPoint定義的是動(dòng)態(tài)按鈕的位置。點(diǎn)擊中心按鈕就會(huì)根據(jù)你所選擇的按鈕ID匹配相應(yīng)的故事ID或者景點(diǎn)ID,讀取相關(guān)數(shù)據(jù)信息并顯示在界面上。這個(gè)詳細(xì)信息界面主要是對(duì)于所選故事傳說或者景點(diǎn)的基本介紹,還有相關(guān)圖片資料的展示。圖片資料展示同樣使用了名人蹤跡中圖片播放器。5.3景區(qū)攻略(地圖導(dǎo)航)這個(gè)模塊主要是對(duì)于地圖API的應(yīng)用,通過手機(jī)定位系統(tǒng)獲取用戶的當(dāng)前位置,上傳到地圖API應(yīng)用中。然后通過解析你上傳的請(qǐng)求目標(biāo),返回你所需要信息數(shù)據(jù)。手機(jī)端接收到相關(guān)信息并進(jìn)行處理、分類,然后顯示到界面上。第31頁(yè)共44頁(yè)第31頁(yè)共44頁(yè)圖5-5景區(qū)攻略時(shí)序圖5.3.1景區(qū)攻略模塊之“行”這個(gè)子模塊是唯一一個(gè)沒有用到地圖API的。在這個(gè)模塊中首先描述了進(jìn)入公園的游覽經(jīng)過,“游人進(jìn)園先至“太湖佳絕處”牌坊,過“間津”、“利涉”門后,漸行至長(zhǎng)春橋邊。這里初春時(shí)櫻花破綻怒放,排紅粉白,一樹樹,一片片,像彩云,似晨霧,燦爛眩目?!边@是進(jìn)入景區(qū)的第一印象。在界面右上角有兩個(gè)按鈕,分別提供了景區(qū)甚而設(shè)施一覽表和景區(qū)地圖。景區(qū)設(shè)施一覽表是根據(jù)官方網(wǎng)站上提供的信息,然后將他歸類成適用于手機(jī)界面的圖表。景區(qū)地圖分別提供了景點(diǎn)簡(jiǎn)化地圖和景區(qū)全貌地圖兩份。通過重寫UIScrollView實(shí)現(xiàn)圖片的全屏顯示。重寫的類名為MRZoomScrollView,通過使第32頁(yè)共44頁(yè)第32頁(yè)共44頁(yè)用感應(yīng)屏幕的手勢(shì),實(shí)現(xiàn)翻頁(yè)功能顯示實(shí)現(xiàn)代碼為:for(inti=0;i<4;i++){_zoomScrollView=[[MRZoomScrollViewalloc]init];CGRectframe=self.scrollView.frame;frame.origin.x=frame.size.width*i;frame.origin.y=0;_zoomScrollView.frame=frame;_zoomScrollView.imageView.image=[UIImageimageNamed:[NSStringstringWithFormat:@"L%d.png",i+1]];[self.scrollViewaddSubview:_zoomScrollView];[_zoomScrollViewrelease];}5.3.2景區(qū)攻略模塊之“吃”“住”吃和住這兩個(gè)子模塊中提供的就餐地點(diǎn)與住宿地點(diǎn)都是根據(jù)官網(wǎng)上提供的消息編寫出的。這兩個(gè)界面采用了標(biāo)簽云的顯示方法,具體如圖5-6。標(biāo)簽云的實(shí)例化核心代碼如下:CloudView*cloud=[[CloudViewalloc]initWithFrame:self.view.boundsandNodeCount:100];cloud.delegate=self;[self.viewaddSubview:cloud];[cloudrelease];圖5-6景區(qū)攻略子模塊之吃云標(biāo)簽顯示截圖劃動(dòng)屏幕,標(biāo)簽云還會(huì)緩緩移動(dòng),形成云動(dòng)態(tài)。標(biāo)簽云的移動(dòng)效果需要依靠坐標(biāo)點(diǎn)的變化來實(shí)現(xiàn)。劃動(dòng)屏,觸發(fā)屏幕觸摸事件,通過這三個(gè)函數(shù)來響應(yīng):-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{}-(void)touchesMoved:(NSSet*)toucheswithEvent:(UIEvent*)event{}-(void)touchesEnded:(NSSet*)toucheswithEvent:(UIEvent*)event{}為了觸發(fā)事件,將云標(biāo)簽的UILable替換成UIButton。點(diǎn)擊云標(biāo)簽,就會(huì)進(jìn)第33頁(yè)共44頁(yè)第33頁(yè)共44頁(yè)入地圖導(dǎo)航界面。在得到云標(biāo)簽的ID后,查找對(duì)應(yīng)ID的地點(diǎn)經(jīng)緯坐標(biāo),傳輸?shù)降貓D顯示界面。同時(shí)應(yīng)用獲取用戶的當(dāng)前位置經(jīng)緯坐標(biāo)與目標(biāo)地點(diǎn)經(jīng)緯坐標(biāo)一起上傳到gooogle地圖web接口,然后在地圖顯示界面生成路線動(dòng)畫。因?yàn)榈貓DAPI提供的相應(yīng)經(jīng)緯坐標(biāo)在地圖的顯示轉(zhuǎn)換上存在誤差,所以導(dǎo)航的精準(zhǔn)度有待提高。對(duì)于這部分gps坐標(biāo)的獲取和地圖顯示的流程圖如圖5-7。圖5-7gps坐標(biāo)的獲取和地圖顯示的流程圖5.3.3景區(qū)攻略模塊之“娛”娛這個(gè)子模塊提供的是官方提供的景區(qū)游玩項(xiàng)目資料,并沒有應(yīng)用到地圖API。若是有相關(guān)問題,可以點(diǎn)擊旅游熱線按鈕,撥打熱線咨詢相關(guān)信息。這部分包括景區(qū)門票信息和收費(fèi)標(biāo)準(zhǔn)、快艇服務(wù)項(xiàng)目信息、景區(qū)觀光旅游車的行駛路線和景區(qū)的公交信息、游船項(xiàng)目服務(wù)中的游玩套餐推薦這幾部分組成。比如景區(qū)觀光車與公交信息如下:“景區(qū)觀光游覽車從充山大門出發(fā),途徑犢山大門,終點(diǎn)站為游覽中心。游客憑票免費(fèi)往返乘坐游覽車。犢山大門出口處有87路公交車始發(fā)站,充山大門出口處有1路公交車始發(fā)站。終點(diǎn)均可以到達(dá)火車站。”第34頁(yè)共44頁(yè)第34頁(yè)共44頁(yè)5.3.4景區(qū)攻略模塊之“購(gòu)”這個(gè)模塊主要使用了騰訊地圖的poi搜索功能。因?yàn)樵陲L(fēng)景區(qū)提供的商品購(gòu)物比較片面,大多數(shù)是部分地方特產(chǎn)、食物和普通的飲料等等。對(duì)于第一次來無錫旅游的旅客,可以滿足帶紀(jì)念品的需要。但是景區(qū)的食品和飲料總是會(huì)比景區(qū)外提供的高上一點(diǎn),這樣對(duì)于明明只需要買個(gè)水解渴,卻了大價(jià)錢的普通游客可能會(huì)覺得肉疼。騰訊地圖的poi搜索功能提供的是以景區(qū)為中心,通過這條命令:[self.searchroundSearch:cityNamelocation:CLLocationCoordinate2DMake(lati,longi)inRadius:800withKey:@"shop"pageIndex:0];以“shop”為關(guān)鍵字,搜索方圓800米內(nèi)所有可以購(gòu)物的商店名稱。通過函數(shù)-(void)notifyPoiSearchResult:(QPoiSearchResult*)poiSearchResult{}分析從地圖api接口返回的數(shù)據(jù),并將數(shù)據(jù)壓入U(xiǎn)ITableView的顯示數(shù)組中,然后再經(jīng)過UITableView的顯示加載分析,逐行將店名顯示在UITableView的列表中。因?yàn)槲业腜OI關(guān)鍵字是“shop”,所以會(huì)出現(xiàn)英文的店名和名字中帶有shop這個(gè)詞的其他poi目標(biāo)。這是本模塊搜索需要改進(jìn)的地方,我所得到的數(shù)據(jù)依賴于騰訊地圖的api接口,在處理數(shù)據(jù)方面做的工作還需要多加學(xué)習(xí)。具體界面如圖5-8:圖5-8景區(qū)業(yè)務(wù)子模塊之購(gòu)對(duì)象列表顯示界面截圖點(diǎn)擊UITableView列表的單元格,就會(huì)跳轉(zhuǎn)到用戶到目標(biāo)地點(diǎn)的地圖導(dǎo)航界面上去。在跳轉(zhuǎn)過程中獲取用戶當(dāng)前位置的經(jīng)緯坐標(biāo),并使用poi搜索得到的目標(biāo)點(diǎn)的經(jīng)緯坐標(biāo)點(diǎn),顯示兩點(diǎn)之間的的路線圖。具體界面與圖第35頁(yè)共44頁(yè)第35頁(yè)共44頁(yè)5.3.5景區(qū)攻略模塊之“拍”進(jìn)入這個(gè)模塊,展示的就是官網(wǎng)上提供數(shù)據(jù)總結(jié)的幾個(gè)景色的最佳拍攝地點(diǎn)和拍攝時(shí)間。列表為自定義的Cell,讓景色的拍攝時(shí)間,地點(diǎn)一目了然,并且提供參考作品,讓用戶對(duì)每個(gè)景點(diǎn)都有一個(gè)大致了解,具體顯示如圖5-9所示。圖5-9景區(qū)攻略業(yè)務(wù)子模塊之拍界面顯示截圖當(dāng)然,風(fēng)景區(qū)四季有花,處處入畫。可以根據(jù)各位游客的審美,感覺差異,配經(jīng)四季的變換,時(shí)間回轉(zhuǎn),拍攝自己喜歡的作品。而且風(fēng)景區(qū)每年舉辦“太湖之春櫻花節(jié)”攝影比賽活動(dòng),游客可積極參與和交流。點(diǎn)擊UITableView的列表單元格,進(jìn)入對(duì)應(yīng)景色的拍攝地區(qū)的地圖導(dǎo)航。因?yàn)槁肪€導(dǎo)航是一對(duì)一的,所以我選擇了幾個(gè)拍攝點(diǎn)中的一個(gè)作為導(dǎo)航目的地。顯示用戶到此個(gè)拍攝點(diǎn)的路線導(dǎo)航。圖5-10杏花樓到景點(diǎn)蘆灣消夏景點(diǎn)的地圖導(dǎo)航截圖第36頁(yè)共44頁(yè)第36頁(yè)共44頁(yè)第6章系統(tǒng)測(cè)試系統(tǒng)的測(cè)試是軟件開發(fā)過程中必不可少的部分。系統(tǒng)測(cè)試是一個(gè)發(fā)現(xiàn)問題并解決存在問題的過程。目的在于查找系統(tǒng)中存在的錯(cuò)誤和缺陷,并解決所發(fā)現(xiàn)的問題。6.1運(yùn)行環(huán)境1、硬件環(huán)境:蘋果電腦CPU主頻不低于2.5GHz,內(nèi)存不低于4GB,屏幕分辨率在1440*990以上,硬盤容量大于200GB。2、軟件環(huán)境:(1)操作系統(tǒng):MACOSX10.7以上(2)開發(fā)工具:Xcode4.6,iPhone6.1Simulator6.2測(cè)試原則基于系統(tǒng)測(cè)試的過程,系統(tǒng)測(cè)試符合遵循以下的幾個(gè)基本原則:1、所有的測(cè)試都應(yīng)該以用戶需求出發(fā);2、設(shè)計(jì)測(cè)試方案時(shí),應(yīng)該包括系統(tǒng)預(yù)期的測(cè)試結(jié)果;3、Pareto原則:測(cè)試發(fā)現(xiàn)的80%的錯(cuò)誤很可能來自于20%的程序;4、測(cè)試從“局部”逐步過渡到“整體”;5、完全測(cè)試是不可能的,測(cè)試需要終止;6.3測(cè)試方法軟件測(cè)試方法可分為黑盒測(cè)試和白盒測(cè)試等。一般軟件測(cè)試以黑盒測(cè)試為主,白盒為輔。其中黑盒測(cè)試的優(yōu)點(diǎn)有:測(cè)試簡(jiǎn)單,測(cè)試人員不需要了解應(yīng)用程序的細(xì)節(jié),包括特定的編程語言。測(cè)試的視角不同,很容易被理解和接受。第37頁(yè)共44頁(yè)第37頁(yè)共44頁(yè)對(duì)于較大的代碼單元來說,黑盒測(cè)試比白盒測(cè)試效率較高。有助于暴露與任務(wù)規(guī)格不一致或者有歧義的地方。黑盒測(cè)試的缺點(diǎn):對(duì)測(cè)試人員要求較高,需要使用合理的測(cè)試用例。測(cè)試的只有一小部分,無法提供直觀測(cè)試覆蓋率。不能直接對(duì)特定程序段進(jìn)行測(cè)試。結(jié)果的準(zhǔn)確性取決于測(cè)試用例的設(shè)計(jì)。6.4測(cè)試計(jì)劃根據(jù)iOS軟件開發(fā)的特點(diǎn),一般測(cè)試分為:黑盒測(cè)試、手機(jī)系統(tǒng)版本兼容性測(cè)試、iPhone手機(jī)屏幕適配測(cè)試和內(nèi)存泄露測(cè)試四個(gè)部分。6.4.1黑盒測(cè)試黑盒測(cè)試主要為了測(cè)試整個(gè)軟件是否出現(xiàn)閃退、功能完整性檢查和加載提示。(1)閃退:閃退指手機(jī)客戶端在運(yùn)行的過程中,應(yīng)用由于運(yùn)氣出現(xiàn)錯(cuò)誤突然關(guān)閉的現(xiàn)象。一般經(jīng)常打斷點(diǎn)測(cè)試,確定出錯(cuò)點(diǎn),并反復(fù)調(diào)試修改。(2)功能完整性檢查:主要測(cè)試一些前期需求書中說明需要實(shí)現(xiàn)的功能是否實(shí)現(xiàn),這個(gè)只需在代碼中完成即可。(3)加載提示:主要是某些頁(yè)面需要請(qǐng)求網(wǎng)絡(luò),加載是否成功。如圖6-1所示。圖6-1加載提示第38頁(yè)共44頁(yè)第38頁(yè)共44頁(yè)6.4.2手機(jī)系統(tǒng)版本兼容性測(cè)試iOS系統(tǒng)是一個(gè)不斷升級(jí)的系統(tǒng),但是在升級(jí)的過程中會(huì)出現(xiàn)部分代碼的兼容性問題。某些官方提供的函數(shù)方法只出現(xiàn)在較新的系統(tǒng)版本中,也有可能某些函數(shù)方法在版本迭代中被取消了。由于用戶的手機(jī)系統(tǒng)版本較新,也有可能某些用戶一直未升級(jí)仍在使用老系統(tǒng)。在這種情況下會(huì)出現(xiàn)無法識(shí)別程序中的某些方法而導(dǎo)致問題的出現(xiàn)。但是開發(fā)的過程中使用的函數(shù)方法比較多,不可能一一檢查是否適用于所有版本的系統(tǒng),這就必須在后期測(cè)試發(fā)現(xiàn)和解決了。測(cè)試時(shí)需要把本軟件運(yùn)行各種iOS的系統(tǒng)版本,看是否能正常運(yùn)行。就在軟件運(yùn)行時(shí)先獲取用戶手機(jī)系統(tǒng)的版本,根據(jù)版本的不同,匹配相對(duì)的代碼,解決因系統(tǒng)版本不同而導(dǎo)致的問題。6.4.3iPhone手機(jī)屏幕適配測(cè)試iPhone系列手機(jī)在iPhone5手機(jī)出現(xiàn)之前使用的手機(jī)屏幕大小全部采用的是3.5寸的屏幕。2012年發(fā)布的新款的iPhone5手機(jī)中,蘋果公司采用了更大的4.0寸的屏幕。4.0的屏幕相較于3.5的屏幕,寬度相同,但是高度更高。這樣,我們?cè)陂_發(fā)的過程中就需要考慮iPhone5與之前版本的iPhone手機(jī)屏幕尺寸的問題。需要在開發(fā)過程中做好屏幕尺寸的兼容,防止出現(xiàn)界面顯示混亂的情況。如圖6-2A圖“故事傳說”在3.5寸屏幕運(yùn)行的界面效果;如圖6-2B圖所示,在4寸屏幕上運(yùn)行的未適配的界面效果,底部圖片出現(xiàn)上移的問題,嚴(yán)重影響界面的整體布局和用戶感觀。在適配了4寸屏幕的界面效果,如圖6-2C圖所示,界面美觀程度明顯的得到了提升。圖6-2故事傳說A圖故事傳說B圖故事傳說C圖第39頁(yè)共44頁(yè)第39頁(yè)共44頁(yè)6.4.4內(nèi)存泄露測(cè)試iOS在添加了線程后,可以像Java那樣能夠自動(dòng)釋放內(nèi)存,但是因?yàn)槲抑皇浅鯇W(xué)者,最好選擇手動(dòng)釋放。在開發(fā)過程中,無論思考的多全面都會(huì)有可能造成內(nèi)存的泄露。蘋果為我們提供的Instrunment測(cè)試工具,能夠方便地快捷地監(jiān)測(cè)出程序中的內(nèi)存泄露。在MAC的Spotlignt中輸入Instrunment后,能夠快速地打開Instrunment工具,其中Leaks就是我們用來檢測(cè)內(nèi)存泄露的工具,如圖5-5所示。Instrunment用于動(dòng)態(tài)跟蹤與分析MacOSX、iPhone和iPad應(yīng)用程序的性能。借助于Instrunment,可以:追查難以重現(xiàn)的代碼中的問題程序性能分析自動(dòng)化測(cè)試代碼應(yīng)用程序的壓力測(cè)試部分執(zhí)行一般的系統(tǒng)級(jí)故障診斷獲得更深入的了解你的代碼是如何工作的其中,程序性能分析非常重要。內(nèi)存泄漏是程序性能的指標(biāo)之一,是指當(dāng)應(yīng)用程序被分配(alloc、new和copy)一塊內(nèi)存,在程序塊生命周期結(jié)束時(shí),程序卻沒有釋放這部分的內(nèi)存,導(dǎo)致這部分內(nèi)存不能被再次使用。如果這種情況存在很多,那么程序可用的內(nèi)存就會(huì)變得越來越少,影響程序的運(yùn)行以及用戶的體驗(yàn)。圖6-5Leaks進(jìn)入Leaks選擇需要跟蹤的程序,點(diǎn)擊“Record”按鈕后,Leaks會(huì)自動(dòng)啟動(dòng)對(duì)應(yīng)的應(yīng)用程序,并開始記錄程序的運(yùn)行狀態(tài)。它會(huì)每10秒記錄一下泄漏狀態(tài),當(dāng)?shù)?0頁(yè)共44頁(yè)第40頁(yè)共44頁(yè)然這些都是可以更改的,還可以手動(dòng)檢查內(nèi)存泄漏,如圖5-6所示。圖6-6程序運(yùn)行狀態(tài)根據(jù)以上的測(cè)試,我們可以發(fā)現(xiàn)應(yīng)用程序潛在的絕大部分問題,使得整個(gè)程序出現(xiàn)問題的概率降低,從而大大提高程序的性能和用戶使用的效果。第42頁(yè)共44頁(yè)第42頁(yè)共44頁(yè)結(jié)束語經(jīng)過四個(gè)月,畢業(yè)設(shè)計(jì)終于完成。本次畢業(yè)設(shè)計(jì)全部都由本人設(shè)計(jì)與開發(fā)。本系統(tǒng)包括了三大部分:景區(qū)信息、天氣信息和景區(qū)導(dǎo)航。景區(qū)信息介紹了景區(qū)的基本信息和附近的景區(qū)推薦,天氣信息羅列了近幾日的天氣情況和出行指數(shù),景區(qū)導(dǎo)航提供了景區(qū)的詳細(xì)地圖和手機(jī)地圖導(dǎo)航功能。此次軟件的開發(fā),讓我對(duì)手機(jī)應(yīng)用的開發(fā)過程有了更多的了解,為將來工作和學(xué)習(xí)積累了寶貴的經(jīng)驗(yàn)。我的日常工作是iPhone手機(jī)客戶端的設(shè)計(jì)與開發(fā),從來沒有如此全面地參與到軟件的策劃、設(shè)計(jì)和測(cè)試等工作。這個(gè)畢業(yè)設(shè)計(jì),是我對(duì)大學(xué)四年學(xué)習(xí)內(nèi)容和培訓(xùn)的總結(jié)歸納。這次的畢業(yè)設(shè)計(jì)需要了解軟件的整個(gè)策劃和開發(fā)過程,在這期間遇到過很多的問題。但是,在老師和同學(xué)的大力幫助下,最終都解決了。自己順利地完成整個(gè)畢業(yè)設(shè)計(jì),是對(duì)我工作能力的一種提升,同時(shí),自己也學(xué)到了一些怎樣解決產(chǎn)生問題的方法和經(jīng)驗(yàn)。此次畢業(yè)設(shè)計(jì),不僅只是我對(duì)于大學(xué)四年所學(xué)知識(shí)的總結(jié),也是自己正式步入社會(huì)前打的第一場(chǎng)戰(zhàn)役。同時(shí),我通過它培養(yǎng)了自己的獨(dú)立思考、實(shí)踐創(chuàng)新、團(tuán)隊(duì)協(xié)作能力,為以后的工作學(xué)習(xí)打下了有力的基礎(chǔ)。

參考文獻(xiàn)[1]徐成佳.第三屆中國(guó)旅游產(chǎn)業(yè)發(fā)展年會(huì)嘉賓訪談[J].中國(guó)旅游報(bào),2014,(01):29-007.[2]Stanford.DevelopingApplicationsforiOSFall2010.2010.9.[3]江凱生.面對(duì)第四代移動(dòng)通信的思考[J].科技信息(科學(xué)教研).2007(29).[4]李明峰,馮寶紅,劉三枝.GPS定位技術(shù)及其應(yīng)用[M].北京:國(guó)防工業(yè)出版社,2006.2.[5]王云.IOS平臺(tái)客戶端應(yīng)用開發(fā)規(guī)范化的研究[M].北京:北京郵電大學(xué),2013.[6]郭宏志.iOS應(yīng)用開發(fā)詳解[M].北京:電子工業(yè)出版社,2013,7.[7]楊娟,顏彪,陳

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論