【外賣軟件中騎手位置追蹤定位系統(tǒng)的設(shè)計(jì)9300字(論文)】_第1頁
【外賣軟件中騎手位置追蹤定位系統(tǒng)的設(shè)計(jì)9300字(論文)】_第2頁
【外賣軟件中騎手位置追蹤定位系統(tǒng)的設(shè)計(jì)9300字(論文)】_第3頁
【外賣軟件中騎手位置追蹤定位系統(tǒng)的設(shè)計(jì)9300字(論文)】_第4頁
【外賣軟件中騎手位置追蹤定位系統(tǒng)的設(shè)計(jì)9300字(論文)】_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

外賣軟件中騎手位置追蹤定位系統(tǒng)的設(shè)計(jì)摘要現(xiàn)在外賣作為現(xiàn)代便捷的消費(fèi)方式,時(shí)常在小區(qū)中進(jìn)出,為了建設(shè)智能化、自動(dòng)化、數(shù)字化、人性化、安全化、快捷化的生活體驗(yàn)和社區(qū)的安全管理現(xiàn)實(shí)需求;提升小區(qū)物業(yè)的管理水平、小區(qū)安防級別,改善物業(yè)的服務(wù)形象。外賣軟件中定位騎手位置追蹤軟件提高了對居民意見的響應(yīng)速度,可通過對保安、騎手的定位、實(shí)時(shí)對講等技術(shù)手段,以更快的響應(yīng)速度為居民提供優(yōu)質(zhì)服務(wù)和通過移動(dòng)客戶端對突發(fā)事件進(jìn)行應(yīng)急指揮,本文對外賣軟件中定位騎手位置追蹤定位探析。關(guān)鍵詞:外賣軟件;定位騎手;位置;追蹤;定位;探析目錄引言 3一系統(tǒng)下LBS智能終端定位跟蹤系統(tǒng)的關(guān)鍵技術(shù)闡述 31.1位置信息服務(wù) 31.2定位軟件技術(shù) 31.3網(wǎng)絡(luò)通信技術(shù)…………………..31.4系統(tǒng)擬機(jī) 42.基于LBS的智能騎手定位跟蹤系統(tǒng)軟件設(shè)計(jì) 62.1總體方案設(shè)計(jì) 62.2主控制模塊設(shè)計(jì) 62.3GPS信號接收模塊設(shè)計(jì) 62.4GPRS遠(yuǎn)程通信模塊設(shè)計(jì) 72.5系統(tǒng)調(diào)試 7三基于騎手LBS的相關(guān)定位控件設(shè)計(jì) 82.1基于LBS的相關(guān)定位控件設(shè)計(jì) 82.1.1控件設(shè)計(jì) 82.1.2設(shè)計(jì)應(yīng)用 92.2基于網(wǎng)絡(luò)通信系統(tǒng)的相關(guān)模塊設(shè)計(jì) 92.3基于UI視頻圖像交互展示技術(shù)的系統(tǒng)設(shè)計(jì) 92.3.1基于BPImageView模塊的網(wǎng)絡(luò)圖片加載設(shè)計(jì)……………..92.3.2ARView視圖功能UI強(qiáng)化的設(shè)計(jì)………….9三美團(tuán)外賣“小區(qū)守衛(wèi)”小程序設(shè)計(jì)實(shí)驗(yàn) 93.1實(shí)時(shí)追蹤外賣騎手位置 103.2界面做數(shù)據(jù)的具體實(shí)現(xiàn) 103.3外賣O2O系統(tǒng)LBS精準(zhǔn)定位介紹 193.4LBS與普通定位功能有何與眾不同 20四結(jié)語 21引言整體而言,基于LBS的智能騎手定位跟蹤系統(tǒng)軟件應(yīng)該包括優(yōu)化了的封裝位置定位服務(wù)、高品質(zhì)的網(wǎng)絡(luò)通信服務(wù)、實(shí)時(shí)的數(shù)據(jù)緩存服務(wù)以及其它一部分交互展示功能。正是這些關(guān)鍵技術(shù)的加入才豐富和提升了騎手位置軟件的應(yīng)用性能和運(yùn)行效率。美團(tuán)點(diǎn)評副總裁兼外賣和配送事業(yè)部總經(jīng)理王莆中表示,在配送安全方面,美團(tuán)啟動(dòng)了一個(gè)名為"長城計(jì)劃"的項(xiàng)目,"小區(qū)守衛(wèi)"小程序正是長城計(jì)劃的第一個(gè)落地項(xiàng)目,未來還會(huì)有給騎手用的智能耳機(jī),關(guān)愛騎手的心理熱線,以及針對騎手的關(guān)愛基金等措施陸續(xù)公布。如今,美團(tuán)外賣正在利用其平臺(tái)優(yōu)勢、數(shù)據(jù)優(yōu)勢、線下優(yōu)勢,多措并舉推動(dòng)食品安全社會(huì)共治。此次"小區(qū)守衛(wèi)"小程序的發(fā)布,突顯出美團(tuán)外賣基于技術(shù)創(chuàng)新和大數(shù)據(jù)挖掘,不斷將技術(shù)優(yōu)勢轉(zhuǎn)化為和社會(huì)責(zé)任的能力。一系統(tǒng)下LBS智能終端定位跟蹤系統(tǒng)的關(guān)鍵技術(shù)闡述1.1位置信息服務(wù)由于社會(huì)的復(fù)雜性及較快的生活節(jié)奏,全球定位系統(tǒng)的快速發(fā)展和應(yīng)用在預(yù)防騎手位置定位跟蹤方面起到了很好的作用。全球定位系統(tǒng)簡稱GPS[1],由美國于1994年建成并投入使用,該系統(tǒng)通過接收信息衛(wèi)星信號實(shí)現(xiàn)了全球覆蓋、全天候、連續(xù)實(shí)時(shí)提供高精度的非自主式信息與定位,很好地解決了信息和定位問題[2]。在軍事領(lǐng)域和民用領(lǐng)域都得到廣泛的應(yīng)用和發(fā)展,市場上已有許多基于GPS技術(shù)的產(chǎn)品如車載信息系統(tǒng)、GPS手持式用戶機(jī)等,為用戶的工作和日常生活帶來了極大的便利。GPS的基本定位原理是:衛(wèi)星不間斷地發(fā)送自身的星歷參數(shù)和時(shí)間信息,用戶接收到這些信息后,經(jīng)過計(jì)算求出接收機(jī)的三維位置、三維方向以及運(yùn)動(dòng)速度和時(shí)間信息。事實(shí)上,接收機(jī)往往可以鎖住4顆以上的衛(wèi)星,這時(shí)接收機(jī)可按衛(wèi)星的星座分布分成若干組,每組4顆,然后通過算法挑選出誤差最小的一組用作定位,從而提高精度[3]。本文以防止騎手位置定位跟蹤為背景,研究GPS技術(shù)在便攜式佩戴設(shè)備中的應(yīng)用,通過系統(tǒng)實(shí)現(xiàn)手機(jī)App的開發(fā),幫助保安和管理者隨時(shí)遠(yuǎn)程掌握騎手的位置信息。位置信息服務(wù)即LocationBasedService,簡稱LBS。通過由運(yùn)營商所提供的無線通訊網(wǎng)絡(luò)或GPS等外部定位方式來獲取移動(dòng)終端用戶的具體地理坐標(biāo)信息,并在GIS等地理信息系統(tǒng)平臺(tái)的支持下,為用戶提供智能終端定位、智能定位跟蹤等增值服務(wù)。具體來說,地圖定位、自動(dòng)觸發(fā)景點(diǎn)多媒體信息、游覽軌跡信息和周邊服務(wù)設(shè)施信息都應(yīng)該是LBS所涉及的服務(wù)范圍。利用信息化技術(shù)將騎手、門衛(wèi)、管理者這3方聯(lián)系到了一起,并達(dá)成了交互的目的。也正是基于此系統(tǒng),騎手可以在出行期間得到更好的信息化服務(wù)。位置信息服務(wù)LBS主要是基于3方技術(shù)來共同完成的,它們是來自于移動(dòng)終端的定位軟件技術(shù)、網(wǎng)絡(luò)通信技術(shù)以及系統(tǒng)。以下就一一闡述這3方下的具體關(guān)鍵技術(shù)特點(diǎn)。1.2定位軟件技術(shù)

定位軟件技術(shù)是LBS智能定位跟蹤系統(tǒng)應(yīng)用中的關(guān)鍵核心,一般起到功能作用的是SkyhookWi-Fi定位系統(tǒng)和蜂窩基站定位系統(tǒng),包括外部全球定位系統(tǒng)GPS。這幾項(xiàng)技術(shù)都通過天線向外部發(fā)送信號,并尋求距離自己最近的復(fù)數(shù)基站,通過它們的信號轉(zhuǎn)遞進(jìn)行信號定位。而SkyhookWi-Fi則運(yùn)用到了固定熱點(diǎn)技術(shù),它能直接與騎手或其它智能移動(dòng)終端的MAC地址相互綁定,實(shí)現(xiàn)對系統(tǒng)無線信號的接入,從而獲取用戶想要的地理定位信息。

另外,利用智能騎手內(nèi)部的微機(jī)電三軸加速傳感器也能夠?qū)崿F(xiàn)對智能定位跟蹤系統(tǒng)功能的應(yīng)用。其功能實(shí)現(xiàn)原理是騎手在空間坐標(biāo)系中同時(shí)向3個(gè)方向軸上輸出加速度分量,并通過這3個(gè)方向的加速度積分計(jì)算來推導(dǎo)出空間三維速度和位置,為用戶提供準(zhǔn)確的服務(wù)。

1.3網(wǎng)絡(luò)通信技術(shù)

網(wǎng)絡(luò)通信技術(shù)包含許多種,比如套接字通信,HTTP協(xié)議,增強(qiáng)現(xiàn)實(shí)技術(shù)等等。首先說套接字通信(socket),是網(wǎng)絡(luò)通信技術(shù)的基礎(chǔ),能夠支持TCP/IP協(xié)議獲取最基本的網(wǎng)絡(luò)通信包,從而實(shí)現(xiàn)對客戶端服務(wù)器的連接,進(jìn)一步獲取本地IP,本地DNS,遠(yuǎn)距離IP及DNS。另外,系統(tǒng)中的SDK、CFNetworkframewrok也能為基礎(chǔ)網(wǎng)絡(luò)通信接口提供網(wǎng)絡(luò)通信服務(wù),實(shí)現(xiàn)遠(yuǎn)程位置查詢。

而HTTP協(xié)議則提供了簡潔快捷的應(yīng)用層技術(shù),基于信息傳輸主體內(nèi)容的實(shí)體、通信層與應(yīng)用層之間的通信連接、HTTP所傳輸?shù)南?nèi)容、客戶端向服務(wù)器發(fā)送的內(nèi)容請求、接受客戶請求時(shí)HTTP月艮務(wù)器端的響應(yīng)以及由URI表示網(wǎng)絡(luò)服務(wù)中的資源來為LBS提供更好的網(wǎng)絡(luò)技術(shù)支持。

1.4系統(tǒng)

系統(tǒng)出現(xiàn)相對較晚,主要采用了軟件堆層的主題架構(gòu),并細(xì)分為3大部分,底層Linux內(nèi)核、中間層函數(shù)庫Library及虛擬機(jī),還有上層具體app應(yīng)用軟件,它們都是由C語言、c++、JAVA等計(jì)算機(jī)語言所編寫的程序。

針對LBS來說,系統(tǒng)中的Linux和ApplicationFramework則更加關(guān)鍵。Linux主要為系統(tǒng)提供核心系統(tǒng)服務(wù),是連接智能騎手軟硬件系統(tǒng)的抽象層,并將二者細(xì)化分層。所提供的服務(wù)也是統(tǒng)一的,能夠屏蔽一些不相關(guān)層的信息,使各個(gè)信息層之間處于不關(guān)聯(lián)狀態(tài)。而ApplicationFramework則是利用系統(tǒng)中的開發(fā)應(yīng)用程序來簡化騎手系統(tǒng)結(jié)構(gòu),并將LBS中所需要應(yīng)用的視圖、音頻等組件集合起來,允許用戶使用各個(gè)應(yīng)用程序來訪問其它數(shù)據(jù),這在智能定位跟蹤系統(tǒng)中是十分重要的,即通過對系統(tǒng)資源的共享應(yīng)用來實(shí)現(xiàn)騎手位置。2.基于LBS的智能騎手定位跟蹤系統(tǒng)軟件設(shè)計(jì)2.1總體方案設(shè)計(jì)該智慧定位監(jiān)護(hù)系統(tǒng)總體框圖的該系統(tǒng)的主要模塊構(gòu)成及功能如下所示:(1)MCU主控制模塊采用MSP430芯片實(shí)現(xiàn)對人機(jī)接口的控制以及對接收到的衛(wèi)星信號進(jìn)行處理;(2)在室外GPS信號接收良好時(shí),GPS模塊實(shí)現(xiàn)對衛(wèi)星信號的接收,并傳輸?shù)轿⒖刂菩酒琈SP430f149;(3)在室內(nèi),衛(wèi)星信號接收能力較差時(shí),采用GPRS模塊SIM900a基站定位方式,獲得定位坐標(biāo)并傳輸?shù)街骺刂破?;?)在緊急情況下可以向保安和管理者手機(jī)發(fā)送求助信息。此外,該系統(tǒng)還開發(fā)了基于Android手機(jī)的App,便于保安和管理者隨時(shí)以地圖的形式查看孩子的位置。2.2主控制模塊設(shè)計(jì)系統(tǒng)主控制器采用MSP430芯片,該芯片外圍硬件資源豐富,數(shù)據(jù)處理速度快,功耗遠(yuǎn)低于其它系列產(chǎn)品[2],在便攜式設(shè)備的開發(fā)中應(yīng)用廣泛。在本設(shè)計(jì)中MSP430與GPS接收模塊相連,實(shí)現(xiàn)數(shù)據(jù)傳輸,并控制液晶顯示芯片LCD5110以實(shí)現(xiàn)位置和時(shí)間信息的顯示。在本設(shè)計(jì)中采用獨(dú)立式按鍵以實(shí)現(xiàn)系統(tǒng)設(shè)置和緊急求助功能。主控芯片MSP430電路圖所示。2.3GPS信號接收模塊設(shè)計(jì)GPS接收模塊采用高性能的NEO-6M模組,具有50個(gè)通道,模塊自帶高性能無源陶瓷天線,追蹤靈敏度高,兼容3.3V/5V電平,可以直接與單片機(jī)連接,連接圖如圖3所示。GPS模塊的RXD、TXD引腳分別與MSP430芯片的P3.4、P3.5引腳相連,實(shí)現(xiàn)定位信息的串行輸出,且該GPS芯片自帶串行接口引腳SCL、SDA,可與存儲(chǔ)器連接,對定位信息進(jìn)行保存。其硬件電路如圖3所示。GPS接收模塊在某一時(shí)刻接收到4顆以上的GPS衛(wèi)星信號信息電文,采用NMEA-0183協(xié)議計(jì)算定位數(shù)據(jù)的輸出格式為ASCII碼字符串,該格式稱為幀,比較直觀且易于處理,在許多高級語言中都可以直接進(jìn)行判別、分離,提取用戶所需要的數(shù)據(jù)[4]。其格式形如:$aaccc,ddd,ddd,…,ddd*hh(CR)(LF)。(1)$:幀命令起始位。(2)aaccc:地址域,前兩位為識(shí)別符,后三位是語句名。(3)ddd,…,ddd:數(shù)據(jù)。(4)*:校驗(yàn)和前綴,也可以作為語句數(shù)據(jù)結(jié)束的標(biāo)志。(5)hh:校驗(yàn)和,$與*之間所有字符ASCII碼的校驗(yàn)和。(6)(CR)(LF):幀結(jié)束,回車和換行符。NMEA-0183常用命令行所列。2.4GPRS遠(yuǎn)程通信模塊設(shè)計(jì)本定位監(jiān)護(hù)系統(tǒng)為了實(shí)現(xiàn)實(shí)時(shí)、靈敏的定位目標(biāo),當(dāng)位于室內(nèi)時(shí)衛(wèi)星信號微弱,可采用GPRS網(wǎng)絡(luò)進(jìn)行位置信息的遠(yuǎn)程傳輸。選用一款性能強(qiáng)大的GSM/GPRS模塊芯片SIM900A,可以內(nèi)置用戶程序,連接SIM卡時(shí)可遠(yuǎn)程發(fā)送位置信息和緊急求助信號。其硬件電路如圖4所示。2.5系統(tǒng)調(diào)試根據(jù)上述電路圖,軟件部分采用C語言編程實(shí)現(xiàn),系統(tǒng)初始化完成對各外圍芯片的參數(shù)設(shè)置,GPS信號的接收通過串行通信接口實(shí)現(xiàn),并在微處理器中進(jìn)行數(shù)據(jù)處理和定位信息的計(jì)算,系統(tǒng)流程圖所示。通過實(shí)物的軟硬件聯(lián)合調(diào)試可實(shí)現(xiàn)GPS信號的接收和顯示,并在室內(nèi)采用GPRS技術(shù)進(jìn)行基站定位,取得了良好的效果。根據(jù)文獻(xiàn)在手機(jī)系統(tǒng)下開發(fā)了App軟件,顯示實(shí)時(shí)定位信息。該系統(tǒng)實(shí)現(xiàn)了如下幾項(xiàng)功能:(1)采用低功耗控制器,提高了該定位系統(tǒng)的待機(jī)時(shí)間。(2)在室外時(shí)采用GPS定位,定位準(zhǔn)確;在室內(nèi),當(dāng)GPS信號接收能力較差時(shí),系統(tǒng)切換至基站定位,因此本手環(huán)無論在室內(nèi)還是室外都能獲得良好的定位能力。(3)方便監(jiān)管者監(jiān)護(hù)低功能及特殊人群,攜帶者遇到危險(xiǎn)時(shí)也可及時(shí)發(fā)送求救信號,保障生命安全。(4)產(chǎn)品適用范圍廣,結(jié)構(gòu)簡單,成本低,稍加調(diào)整即可用于車輛、物體等的定位。三基于騎手LBS的相關(guān)定位控件設(shè)計(jì)2.1基于LBS的相關(guān)定位控件設(shè)計(jì)

2.1.1控件設(shè)計(jì)

BPLocation是LBS中一個(gè)較為重要的位置服務(wù)控件,它能夠創(chuàng)建uIAccelerometerDelegate與CLLocationManagerDelegate接口,通過它們實(shí)現(xiàn)對GPS位置信息的獲取。同時(shí)它也能計(jì)算GPS漂移數(shù)據(jù)量,實(shí)現(xiàn)對用戶運(yùn)動(dòng)軌跡函數(shù)的推算、區(qū)域檢測等等。近似于BPLocation類的相關(guān)函數(shù)種類眾多,文中簡單介紹3種:instance是典型的BPLocationManger類,它屬于靜態(tài)函數(shù),能夠根據(jù)系統(tǒng)應(yīng)用來實(shí)現(xiàn)XCBPLocationManger變量的獲得;LocationManager則通過設(shè)置DesiredAccuracy來獲取用戶的位置方向與具體信息數(shù)據(jù);還有accelerometer,它是基于UIAcceIerometer抽象類的控件,它就是利用到了微機(jī)電的三軸加速傳感器,可以在用戶騎手LBS軟件客戶端的x,y,z三個(gè)軸上實(shí)施加速度,進(jìn)而計(jì)算用戶騎手設(shè)備智能定位跟蹤系統(tǒng)的運(yùn)行速度,起到糾正騎手內(nèi)部GPS定位誤差的作用。

2.1.2設(shè)計(jì)應(yīng)用

在具體應(yīng)用中,LBS的相關(guān)控件會(huì)根據(jù)騎手的位置實(shí)施運(yùn)動(dòng)軌跡的定位,可以實(shí)時(shí)記錄用戶的運(yùn)行軌跡,一旦出現(xiàn)任何漂移,也能將這些偏差自動(dòng)濾掉,這就是過濾偏移。過濾偏移共有2種方式:利用GPS歷史記錄確定偏移是否存在;再者就是利用計(jì)算機(jī)的運(yùn)行速度和加速度來確定定位是否存在偏移,這種方法更加合理,而且精確度也有保證。區(qū)域檢測也可以通過騎手系統(tǒng)檢測騎手在所規(guī)定區(qū)域范圍內(nèi)的運(yùn)動(dòng)軌跡,這是智能定位跟蹤系統(tǒng)所慣用的技術(shù)。當(dāng)騎手離開規(guī)定區(qū)域時(shí),系統(tǒng)會(huì)發(fā)送消息通知用戶,告知用戶的運(yùn)行軌跡,比如一些用戶在跑步時(shí)會(huì)用到的計(jì)步軟件,它的檢測原理主要以規(guī)定區(qū)域中心點(diǎn)作為主要檢測中心,當(dāng)用戶運(yùn)動(dòng)時(shí),系統(tǒng)會(huì)為其與區(qū)域中心點(diǎn)做比較,所比較出的結(jié)果就是用戶以中心點(diǎn)為軸心的運(yùn)動(dòng)軌跡。

2.2基于網(wǎng)絡(luò)通信系統(tǒng)的相關(guān)模塊設(shè)計(jì)

就網(wǎng)絡(luò)通信系統(tǒng)模塊設(shè)計(jì)而言,主要將研究重心放在BPFormDataRequest和BPRequestQueue的設(shè)計(jì)上。BPFormDataRequest是BPHTTPRequest的子類,在擴(kuò)展騎手智能定位跟蹤系統(tǒng)對POST的支持時(shí),就要實(shí)現(xiàn)基于POST的所有位置數(shù)據(jù)請求參數(shù)設(shè)置和相關(guān)文件上傳,這樣才能發(fā)揮BPFromDataRequest的實(shí)際作用,明確數(shù)據(jù)24#的路徑和網(wǎng)絡(luò)通信模塊的所有通信接口。

相對而言,BPRequestOueue則銜承于NSOperationOueue模塊,它能夠管理并實(shí)現(xiàn)BPHTTPRequest的實(shí)時(shí)復(fù)數(shù)請求,同時(shí)也允許其對象在網(wǎng)絡(luò)環(huán)境中發(fā)送任何位置信息請求,它與普通的傳輸信息模塊是不同的,它對位置信息的確定性更強(qiáng),而且嚴(yán)重依賴于圖像來定位所示。

如果客戶通過騎手端創(chuàng)建BPHTTPRequest模塊,并發(fā)送信息請求,所發(fā)送的信息將以隊(duì)列形式等待響應(yīng)處理,此時(shí)LBS也會(huì)監(jiān)測定位信息的傳送狀態(tài)。當(dāng)請求處理完畢,服務(wù)器端將會(huì)收到所返回的結(jié)果并做記錄,同時(shí)釋放用戶所要求的請求資源。

2.3基于UI視頻圖像交互展示技術(shù)的系統(tǒng)設(shè)計(jì)

騎手智能定位跟蹤軟件要實(shí)現(xiàn)對視頻圖像的交互展示,就必須基于展示模塊來設(shè)計(jì)UI。本文所介紹的是對定位軟件系統(tǒng)中原始UIImageYiew的擴(kuò)展,即BPImageView的應(yīng)用,能夠?qū)崿F(xiàn)地圖類型數(shù)據(jù)的可視化分析,為智能定位跟蹤系統(tǒng)提供更多的位置空間數(shù)據(jù)和可視化功能,以地圖和影像的形式展示出來。為了實(shí)現(xiàn)地圖、影像等數(shù)據(jù)的可視化,需要通過ARView模塊中的動(dòng)態(tài)加載及流技術(shù)對地理位置信息進(jìn)行強(qiáng)化。所以本文主要介紹了基于UI視頻圖像交互展示技術(shù)的系統(tǒng)設(shè)計(jì),希望幫助騎手實(shí)現(xiàn)對地理數(shù)據(jù)可視化信息獲取的功能強(qiáng)化。

2.3.1基于BPImageView模塊的網(wǎng)絡(luò)圖片加載設(shè)計(jì)

因?yàn)锽PImageView是UIImageView的子類,所以應(yīng)該實(shí)現(xiàn)其父類UIImageView對所有圖片顯示類以及圖片存儲(chǔ)數(shù)據(jù)的合理運(yùn)用。這里采用的方法是利用BPImageView來接收setImageURL消息,然后引用基于BPImageLoader的可視化信息強(qiáng)化輸出方法。此方法可以達(dá)到查看網(wǎng)絡(luò)中緩存數(shù)據(jù)存在性的目的。如果數(shù)據(jù)存在,就說明它們可以直接以圖片的形式載入。如果數(shù)據(jù)不存在,則表示要再次通過BPImageLoader類進(jìn)行l(wèi)oadlmageForURL數(shù)據(jù)的調(diào)用,重新加載圖片。

2.3.2ARView視圖功能UI強(qiáng)化的設(shè)計(jì)

首先要說,ARView是具備2部分視圖的,它們是興趣點(diǎn)POI視圖和實(shí)施傳輸視頻流如圖2所示。2個(gè)POI點(diǎn)視圖處于疊加狀態(tài),這就可以確定POI的興趣點(diǎn),如果以視圖表示POI,就可以了解到用戶對該P(yáng)OI點(diǎn)視圖的興趣度。這里采用一個(gè)叫做placesOfTnterestCoordinates的數(shù)組,通過四維向量來表示數(shù)組中用戶所記錄的興趣點(diǎn)坐標(biāo),這樣就可以利用系統(tǒng)來記錄用戶的位置信息,為用戶導(dǎo)航。

三美團(tuán)外賣“小區(qū)守衛(wèi)”小程序設(shè)計(jì)實(shí)驗(yàn)3.1實(shí)時(shí)追蹤外賣騎手位置近日,美團(tuán)外賣正式對外發(fā)布了一款針對外賣進(jìn)入小區(qū)安全性問題而研發(fā)的小程序——“小區(qū)守衛(wèi)”。據(jù)悉,這款小程序具有“身份核實(shí)”、“出入管理”、“軌跡追蹤”三大功能。小區(qū)保安只要通過簡單的安裝程序就可以登錄使用。一個(gè)"簡單"的小程序,就能夠守護(hù)大安全,這對于長期困擾于小區(qū)外來人員安全管理的物業(yè)安保來說,簡直就是及時(shí)雨,不用再擔(dān)心因?yàn)榻雇赓u送餐員進(jìn)入小區(qū)而和業(yè)主產(chǎn)生矛盾。當(dāng)外賣騎手進(jìn)入小區(qū)時(shí),保安打開"小區(qū)守衛(wèi)"小程序,就可以一秒驗(yàn)證騎手身份和訂單情況,并且對外賣騎手進(jìn)入小區(qū)后的位置進(jìn)行實(shí)時(shí)追蹤,隨時(shí)掌控小區(qū)內(nèi)騎手?jǐn)?shù)量、所處位置、進(jìn)入時(shí)長等信息。開發(fā)項(xiàng)目過程中有時(shí)候需要獲取用戶的精確位置信息,但是我們都知道,直接獲取的地址可能會(huì)有誤差的,這時(shí)候就需要手動(dòng)拖拽地圖,然后獲取一個(gè)精確的位置信息,就像美團(tuán)外賣的收獲地址一樣。3.2界面做數(shù)據(jù)的具體實(shí)現(xiàn)第一步(1)去百度開發(fā)者中心添加你的應(yīng)用,申請appkey。(2)按照百度地圖的開發(fā)文檔集成SDK到自己的項(xiàng)目中去,這里我用的是pod導(dǎo)入的,比較方便,也便于后期進(jìn)行更新。(3)在您的AppDelegate.m文件中添加對BMKMapManager的初始化,并填入您申請的授權(quán)Key,示例如下:_mapManager=[[BMKMapManageralloc]init];//如果要關(guān)注網(wǎng)絡(luò)及授權(quán)驗(yàn)證事件,請?jiān)O(shè)定generalDelegate參數(shù)BOOLret=[_mapManagerstart:@"這里是你申請的appkey"generalDelegate:self];if(!ret){NSLog(@"managerstartfailed!");}第二步在ZGYDrapMapVC.m文件中初始化BMKMapView地圖控件和BMKGeoCodeSearchgeo搜索服務(wù)_geocodesearch=[[BMKGeoCodeSearchalloc]init];//初始化mapViewself.mapView=[[BMKMapViewalloc]initWithFrame:CGRectMake(0,64,[UIScreenmainScreen].bounds.size.width,300)];_mapView.userTrackingMode=BMKUserTrackingModeFollow;//設(shè)置定位的狀態(tài)這里需要設(shè)置為跟隨狀態(tài),因?yàn)橐诘貓D上能夠顯示當(dāng)前的位置_mapView.showsUserLocation=YES;//顯示定位圖層_mapView.zoomLevel=19.5;//比例尺級別自2.0.0起,BMKMapView新增viewWillAppear、viewWillDisappear方法來控制BMKMapView的生命周期,并且在一個(gè)時(shí)刻只能有一個(gè)BMKMapView接受回調(diào)消息,因此在使用BMKMapView的viewController中需要在viewWillAppear、viewWillDisappear方法中調(diào)用BMKMapView的對應(yīng)的方法,并處理delegate,代碼如下:/**管理百度地圖的生命周期*/-(void)viewWillAppear:(BOOL)animated{[_mapViewviewWillAppear];_mapView.delegate=self;_geocodesearch.delegate=self;}-(void)viewWillDisappear:(BOOL)animated{[_mapViewviewWillDisappear];_mapView.delegate=nil;//不用的時(shí)候要置為nil,否則影響內(nèi)存的釋放_(tái)geocodesearch.delegate=nil;//不用的時(shí)候要置為nil,否則影響內(nèi)存的釋放}第三步判斷定位是否可用,如果可用就初始化定位服務(wù),并且開啟定位服務(wù)進(jìn)行定位服務(wù),如果不可用就提示用戶開啟定位/**判斷定位是否可用并且初始化定位信息*/-(void)initLocation{if([CLLocationManagerlocationServicesEnabled]&&([CLLocationManagerauthorizationStatus]==kCLAuthorizationStatusAuthorized||[CLLocationManagerauthorizationStatus]==kCLAuthorizationStatusNotDetermined)){//定位功能可用,開始定位[selfsetLocation];[selfstartLocation];}elseif(([CLLocationManagerauthorizationStatus]==kCLAuthorizationStatusDenied)||([CLLocationManagerauthorizationStatus]==kCLAuthorizationStatusRestricted)){[[ZGYAlertViewalloc]showAlertViewMessage:nilTitle:@"請確認(rèn)打開了定位服務(wù),且允許商戶管理系統(tǒng)獲取位置"cancleItem:@"去設(shè)置"andOtherItem:nilviewController:selfonBlock:^(AlertViewBtnIndexindex){if(0==index){if(![CLLocationManagerlocationServicesEnabled]){[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"prefs:root=LOCATION_SERVICES"]];}else{[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:UIApplicationOpenSettingsURLString]];}}}];}}#pragmamark設(shè)置定位參數(shù)-(void)setLocation{//初始化BMKLocationService_locService=[[BMKLocationServicealloc]init];_locService.delegate=self;//設(shè)置定位精度_locService.desiredAccuracy=kCLLocationAccuracyBest;CLLocationDistancedistance=10.0;_locService.distanceFilter=distance;}-(void)startLocation{[_locServicestartUserLocationService];}第四步開始定位后會(huì)在回掉方法中獲得一個(gè)經(jīng)緯度,獲取到經(jīng)緯度之后發(fā)起一個(gè)反地理編碼:/***用戶位置更新后,會(huì)調(diào)用此函數(shù)*@paramuserLocation新的用戶位置*/-(void)didUpdateBMKUserLocation:(BMKUserLocation*)userLocation{[self.viewaddSubview:self.mapView];PoiResultListViewController*poiResultVC=(PoiResultListViewController*)self.childViewControllers[0];self.poiResultVC=poiResultVC;[self.contentViewaddSubview:poiResultVC.view];[UIViewanimateWithDuration:0.3delay:0.0foptions:UIViewAnimationOptionCurveEaseOutanimations:^{_poiView.center=CGPointMake([UIScreenmainScreen].bounds.size.width/2,150-35);}completion:^(BOOLfinished){[UIViewanimateWithDuration:0.3delay:0.0foptions:UIViewAnimationOptionCurveEaseOutanimations:^{_poiView.center=CGPointMake([UIScreenmainScreen].bounds.size.width/2,150-20);}completion:nil];}];CLLocationCoordinate2Dpt=(CLLocationCoordinate2D){0,0};pt=(CLLocationCoordinate2D){userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude};BMKReverseGeoCodeOption*reverseGeocodeSearchOption=[[BMKReverseGeoCodeOptionalloc]init];reverseGeocodeSearchOption.reverseGeoPoint=pt;BOOLflag=[_geocodesearchreverseGeoCode:reverseGeocodeSearchOption];if(flag){NSLog(@"反geo檢索發(fā)送成功");}else{NSLog(@"反geo檢索發(fā)送成功");}[_mapViewupdateLocationData:userLocation];[_mapViewsetCenterCoordinate:userLocation.location.coordinateanimated:YES];[_locServicestopUserLocationService];}/**定位失敗@paramerror定位失敗后的錯(cuò)誤信息根據(jù)錯(cuò)誤信息判斷失敗的原因*/-(void)didFailToLocateUserWithError:(NSError*)error{//無法獲取位置信息/*這里的alertView是自己封裝的alertView便于使用*/[[ZGYAlertViewalloc]showAlertViewMessage:[NSStringstringWithFormat:@"錯(cuò)誤代碼:%ld",[errorcode]]Title:@"無法獲取位置信息"cancleItem:@"取消"andOtherItem:nilviewController:selfonBlock:^(AlertViewBtnIndexindex){}];[_locServicestopUserLocationService];}反地理編碼搜索發(fā)起后會(huì)在其代理方法中獲得反地理編碼的結(jié)果/***返回反地理編碼搜索結(jié)果*@paramsearcher搜索對象*@paramresult搜索結(jié)果*@paramerror錯(cuò)誤號,@seeBMKSearchErrorCode*/-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch*)searcherresult:(BMKReverseGeoCodeResult*)resulterrorCode:(BMKSearchErrorCode)error{if(error==BMK_SEARCH_NO_ERROR){NSMutableArray*array=[NSMutableArrayarrayWithCapacity:0];for(inti=0;i<result.poiList.count;i++){BMKPoiInfo*poi=[result.poiListobjectAtIndex:i];self.model=[[PoiModelalloc]init];=;self.model.city=poi.city;self.model.address=poi.address;self.model.lat=poi.pt.latitude;self.model.lon=poi.pt.longitude;[arrayaddObject:self.model];}self.poiResultVC.resultListArray=[NSArrayarrayWithArray:array];}elseif(error==BMK_SEARCH_AMBIGUOUS_ROURE_ADDR){NSLog(@"起始點(diǎn)有歧義");}else{//各種情況的判斷。。。}}這個(gè)方法中的result里面包含著反地理編碼的name、所在城市city、address、經(jīng)緯度、電話號碼phone、郵箱postcode等我把我需要的數(shù)據(jù)提取出來轉(zhuǎn)成model放進(jìn)數(shù)組里面,便于在tableView上展示,展示信息如上圖所示。第五步地圖初始化完成后不禁用的情況下是可以拖動(dòng)的,當(dāng)?shù)貓D區(qū)域改變后會(huì)有代理方法如下:/***地圖區(qū)域改變完成后會(huì)調(diào)用此接口*@parammapview地圖View*@paramanimated是否動(dòng)畫*/-(void)mapView:(BMKMapView*)mapViewregionDidChangeAnimated:(BOOL)animated{NSLog(@"%lf%lf",mapView.centerCoordinate.latitude,mapView.centerCoordinate.longitude);[UIViewanimateWithDuration:0.3delay:0.0foptions:UIViewAnimationOptionCurveEaseOutanimations:^{_poiView.center=CGPointMake([UIScreenmainScreen].bounds.size.width/2,150-35);}completion:^(BOOLfinished){[UIViewanimateWithDuration:0.3delay:0.0foptions:UIViewAnimationOptionCurveEaseOutanimations:^{_poiView.center=CGPointMake([UIScreenmainScreen].bounds.size.width/2,150-20);}completion:nil];}];CLLocationCoordinate2Dpt=(CLLocationCoordinate2D){0,0};pt=(CLLocationCoordinate2D){mapView.centerCoordinate.latitude,mapView.centerCoordinate.longitude};BMKReverseGeoCodeOption*reverseGeocodeSearchOption=[[BMKReverseGeoCodeOptionalloc]init];reverseGeocodeSearchOption.reverseGeoPoint=pt;BOOLflag=[_geocodesearchreverseGeoCode:reverseGeocodeSearchOption];if(flag){NSLog(@"反geo檢索發(fā)送成功");}else{NSLog(@"反geo檢索發(fā)送成功");}}方法中我做了UIview動(dòng)畫,看起來效果會(huì)更好一點(diǎn),這里地圖正中間的定位圖片并不是地圖中的元素,只是一個(gè)imageView在屏幕最上方的中間位置,當(dāng)?shù)貓D改變的時(shí)候讓所需要的點(diǎn)也顯示在地圖中間位置就行了,用到的方法是:/***設(shè)定地圖中心點(diǎn)坐標(biāo)*@paramcoordinate要設(shè)定的地圖中心點(diǎn)坐標(biāo),用經(jīng)緯度表示*@paramanimated是否采用動(dòng)畫效果*/-(void)setCenterCoordinate:(CLLocationCoordinate2D)coordinateanimated:(BOOL)animated;只要這一點(diǎn)想明白,并且知道百度地圖API提供的有這些相關(guān)的方法這個(gè)問題就非常的容易了。我這里也用到了自定義打頭針的方法-(BMKAnnotationView*)mapView:(BMKMapView*)mapViewviewForAnnotation:(id<BMKAnnotation>)annotation{staticNSString*pinID=@"pinID";//從緩存池取出大頭針數(shù)據(jù)視圖BMKAnnotationView*customView=[mapViewdequeueReusableAnnotationViewWithIdentifier:pinID];//如果取出的為nil,那么就手動(dòng)創(chuàng)建大頭針視圖if(customView==nil){customView=[[BMKAnnotationViewalloc]initWithAnnotation:annotationreuseIdentifier:pinID];}//1.設(shè)置大頭針圖片customView.image=[UIImageimageNamed:@"point"];//2.設(shè)置彈框customView.canShowCallout=YES;returncustomView;}大家要記得,大頭針是跟tableView的cell一樣具有重用機(jī)制的,處理不好界面會(huì)有很多消失不去的大頭針,相關(guān)問題請參考官方文檔,比較詳細(xì)。大致的流程就是這些,還需要自己多想多做,問題就沒有那么的復(fù)雜了。3.2打造定位系統(tǒng)我們?nèi)ッ缊F(tuán),大眾點(diǎn)評,糯米網(wǎng),點(diǎn)開商品的頁面都會(huì)看到一個(gè)地圖的東西,這個(gè)就是調(diào)用的LBS數(shù)據(jù),主要作用是定位這個(gè)商家的地址,方便用戶查詢。外賣也是需要用到LBS,比如你打開美團(tuán)外賣,餓了么,百度外賣,口碑外賣,都會(huì)看到一個(gè)地圖的東西,主要是方便用戶查詢附近的商家,進(jìn)而點(diǎn)餐,你點(diǎn)餐肯定是點(diǎn)附近不遠(yuǎn)的。地圖又是很好的移動(dòng)入口,用戶數(shù)量又很大,作用也很大,用戶使用率高,粘性大,讓地圖和團(tuán)購?fù)赓u相互融合,就能達(dá)到很好的效果,一個(gè)APP,既可以查詢路線,又可以訂酒店,吃飯,旅游之類的,很方便。小編接下來就要向大家介紹,江湖外賣O2O系統(tǒng)特色功能——快速LBS精準(zhǔn)定位功能。3.3外賣O2O系統(tǒng)LBS精準(zhǔn)定位介紹1、自動(dòng)定位當(dāng)前位置用戶只

溫馨提示

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

評論

0/150

提交評論