• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Android和Openlayers的旅游導(dǎo)覽系統(tǒng)

    2014-07-02 12:08:04萬(wàn)隆君徐軼群
    關(guān)鍵詞:瓦片控件圖層

    楊 盼,萬(wàn)隆君,徐軼群

    (集美大學(xué)輪機(jī)工程學(xué)院,福建 廈門(mén) 361021)

    0 引言

    隨著旅游業(yè)的快速發(fā)展,如何為游客提供強(qiáng)有力的信息支撐,加強(qiáng)旅游景點(diǎn)的接待能力和規(guī)范管理成為了亟待解決的問(wèn)題[1].目前,西方的一些發(fā)達(dá)國(guó)家在博物館和景區(qū)采用電子導(dǎo)游系統(tǒng),系統(tǒng)能夠顯示游客所處地和景區(qū)配套設(shè)施的坐標(biāo),并且還配有語(yǔ)音講解和視頻展示,方便游客做線路規(guī)劃[2].國(guó)內(nèi)大部分景區(qū)依舊采用紙質(zhì)地圖和路標(biāo)為游客做指引,部分景區(qū)在電腦上使用互聯(lián)網(wǎng)景區(qū)導(dǎo)覽系統(tǒng),而便攜式景區(qū)導(dǎo)覽系統(tǒng)很少應(yīng)用.隨著智能手機(jī)的發(fā)展,擁有Android操作系統(tǒng)的電子產(chǎn)品在中國(guó)所占份額達(dá)到了90%,基于Android的旅游導(dǎo)覽系統(tǒng)可以給景區(qū)和游客帶來(lái)便捷、智能的服務(wù).而Openlayers具有成本低,開(kāi)發(fā)簡(jiǎn)單,支持多種地圖格式等特點(diǎn).Android和Openlayers的結(jié)合能實(shí)現(xiàn)對(duì)地圖和旅游路線的各種操作,而且可以對(duì)景點(diǎn)實(shí)現(xiàn)文字、flash和音頻的三重呈現(xiàn),如果同SQLite數(shù)據(jù)庫(kù)結(jié)合,則可以實(shí)現(xiàn)各種數(shù)據(jù)的實(shí)時(shí)更新.

    1 系統(tǒng)架構(gòu)設(shè)計(jì)及功能實(shí)現(xiàn)

    1.1 功能規(guī)劃

    系統(tǒng)根據(jù)景區(qū)情況設(shè)計(jì)了5項(xiàng)功能,分別為定位查詢、數(shù)據(jù)管理、路線管理、景點(diǎn)呈現(xiàn)和服務(wù)查詢[3].定位查詢包括景點(diǎn)位置查詢和個(gè)人位置查詢,可實(shí)現(xiàn)查找景點(diǎn)位置和游客自身位置的功能;數(shù)據(jù)管理包含地圖數(shù)據(jù)管理和景點(diǎn)屬性管理;地圖數(shù)據(jù)管理可實(shí)現(xiàn)地圖升級(jí)和更新,給用戶提供更好的體驗(yàn);景點(diǎn)屬性管理可根據(jù)景點(diǎn)需要修改和展示對(duì)應(yīng)的內(nèi)容;線路管理分為線路查詢和線路更新管理兩部分,線路查詢可查看具體的線路,線路更新可實(shí)現(xiàn)對(duì)線路的增加、刪除和修改操作;景點(diǎn)呈現(xiàn)包括兩種展現(xiàn)景點(diǎn)的方式,分別為靜態(tài)呈現(xiàn)和動(dòng)態(tài)呈現(xiàn);服務(wù)查詢可查詢保衛(wèi)室、醫(yī)院、緊急援助中心等服務(wù)站點(diǎn)的具體位置和電話.系統(tǒng)具體功能如圖1所示.

    圖1 系統(tǒng)功能結(jié)構(gòu)圖Fig.1 Structure diagram for system function

    1.2 系統(tǒng)架構(gòu)方案

    根據(jù)系統(tǒng)的功能以及Android和Openlayers框架的特點(diǎn),設(shè)計(jì)了如圖2所示的系統(tǒng)框架.系統(tǒng)從邏輯上分為3個(gè)層次,分別是用戶界面層、服務(wù)層和數(shù)據(jù)層,這樣減輕了客戶端和數(shù)據(jù)服務(wù)器的壓力,使整個(gè)系統(tǒng)可以流暢地運(yùn)轉(zhuǎn)起來(lái)[3-4].

    用戶界面層主要用來(lái)定位和顯示景區(qū)的各種信息,以及完成線路繪制和數(shù)據(jù)管理等工作.在這一層中,所使用的OpenLayers源碼中封裝了許多函數(shù),能夠?qū)崿F(xiàn)異步調(diào)用.Openlayers對(duì)html有良好的支持,整個(gè)地圖以及景區(qū)重要信息以html文件為載體,Android提供的Webview作為容器能夠很好地支持Openlayers和html.Openlayers封裝的Ajax可以異步調(diào)用存儲(chǔ)的瓦片地圖,實(shí)現(xiàn)地圖的無(wú)縫拼接.通過(guò)調(diào)用對(duì)應(yīng)的函數(shù)可實(shí)現(xiàn)對(duì)地圖的放大、縮小、平移控制,還可以實(shí)現(xiàn)線路的繪制和重要景點(diǎn)顯示介紹等功能[5].

    圖2 系統(tǒng)架構(gòu)方案Fig.2 System architecture solution

    服務(wù)層中提供的方法和接口,可將html中的Openlayers和javascript方法同Android的類相互綁定,使它們之間可以相互調(diào)用.本文可使用SQL語(yǔ)句直接操作SQLite為數(shù)據(jù)庫(kù),也可以使用Android提供的SQLiteDatabase和SQLiteOpenHelper實(shí)現(xiàn)數(shù)據(jù)庫(kù)的創(chuàng)建、打開(kāi)、查詢和刪減等操作,以此來(lái)實(shí)現(xiàn)景點(diǎn)動(dòng)靜態(tài)顯示、線路繪制、景點(diǎn)相關(guān)屬性顯示等功能.

    地圖顯示采用瓦片式地圖 (Tile Map Image)和無(wú)縫拼接技術(shù).對(duì)于選取的地圖,根據(jù)瓦片金字塔地圖庫(kù)模型設(shè)置好縮放級(jí)別和瓦片最合適的尺寸 (256×256像素),用瓦片生成工具將地圖切割成瓦片,并將這些瓦片按級(jí)別有序地存放在目錄下.瓦片金字塔模型如圖3所示[6].

    圖3 地圖圖層金字塔Fig.3 Map layer pyramid

    1.3 系統(tǒng)功能開(kāi)發(fā)

    本系統(tǒng)采用eclipse和Android SDK為開(kāi)發(fā)環(huán)境,以SQLite為數(shù)據(jù)庫(kù),以O(shè)penlayers作為導(dǎo)覽操作的核心組件.Android提供的xml布局文件有可視化操作功能,可實(shí)現(xiàn)界面的快速布置,其內(nèi)部集成的各種控件和各種函數(shù)與Openlayers相結(jié)合使用,為系統(tǒng)提供更多選擇.

    1.3.1 基于Openlayers和Android的界面顯示

    在Android開(kāi)發(fā)環(huán)境中建立好Android工程后,首先在layout中建立兩個(gè)xml文件,向兩個(gè)xml文件添加需要的控件,并進(jìn)行布局和美化,然后在Activity中添加對(duì)應(yīng)的xml文件.為實(shí)現(xiàn)導(dǎo)覽和核心景點(diǎn)兩個(gè)界面的相互切換,用TabActivity作為兩個(gè)Activity的容器,點(diǎn)擊兩個(gè)界面的標(biāo)簽就可實(shí)現(xiàn)上述要求[7].

    在導(dǎo)覽頁(yè)面對(duì)應(yīng)的xml文件中添加了webview控件,它是Openlayers和html文件的載體.Openlayers開(kāi)發(fā)可以分為4個(gè)步驟,如圖4所示[8].

    圖4 Openlayers開(kāi)發(fā)步驟Fig.4 Openlayers development steps

    實(shí)例化地圖:在Openlayers中最基礎(chǔ)最核心的類是Map類,它是地圖、圖層和各種控件的容器.在web頁(yè)中用div作為Map的載體,通過(guò)id或name獲取Map對(duì)象.

    實(shí)例化圖層:圖層在OpenLayer中指各種地理數(shù)據(jù),使用Openlayers可以輕松地呈現(xiàn)各種格式的地理數(shù)據(jù),如系統(tǒng)中的路線、圖片、flash、音頻、視頻等.在這個(gè)過(guò)程中,既可以用Openlayers封裝的方法來(lái)實(shí)現(xiàn),也可以用自己編寫(xiě)的javascript方法來(lái)實(shí)現(xiàn).

    圖層加載:圖層添加在Map對(duì)象上,用addLayer函數(shù)加載實(shí)例化的Layer對(duì)象,用Pixel方法確定圖層的位置,用addFeatures方法為圖層添加各種屬性.Openlayers具有WMS和WFS功能,可生成地圖顯示需要的圖層并將其添加到Map類中.而且Openlayers封裝了Ajax,通過(guò)回調(diào)的url達(dá)到對(duì)瓦片地圖異步請(qǐng)求及傳輸?shù)囊?,從而使?yè)面無(wú)刷新顯示動(dòng)態(tài)地圖.其具體顯示過(guò)程如圖5所示[9].

    圖5 瓦片地圖顯示方案模型Fig.5 Tile map display program model

    加載事件函數(shù):在Openlayers中最主要的有兩種事件函數(shù),一種是瀏覽器自帶的函數(shù) (如mouse down/mouse up),另一種是用戶用javascript語(yǔ)言自定義的事件,可以用events.register、addControl等方法將其添加到地圖和圖層中去.各種事件函數(shù)再加上地圖和圖層就可以實(shí)現(xiàn)系統(tǒng)的各種功能.

    1.3.2 服務(wù)層的實(shí)現(xiàn)

    為了能在第一個(gè)界面的html網(wǎng)頁(yè)中播放flash文件,需要下載安裝adobe flash player插件,在確認(rèn)安裝插件之后只需要在網(wǎng)頁(yè)中添加flash的路徑就可以實(shí)現(xiàn)景點(diǎn)的動(dòng)態(tài)呈現(xiàn).實(shí)現(xiàn)在html文件中加載音樂(lè)播放器播放音頻文件的功能,需要在android中建立一個(gè)可以實(shí)現(xiàn)播放器開(kāi)始、結(jié)束、暫停的類,并將這個(gè)類設(shè)置為全局變量類,在系統(tǒng)中通過(guò)調(diào)用全局變量類可在任何子系統(tǒng)中播放音頻文件.要在html文件中播放聲音還需為javascript和android寫(xiě)一個(gè)可以相互調(diào)用的接口,其代碼如下:

    private WebView webView;//創(chuàng)建一個(gè)webView

    this.webView.addJavascriptInterface((MyApplication)getApplication(),"musicplayer");//為這個(gè)webView添加使javascript能調(diào)用android方法的接口.

    第二個(gè)界面以Activity為容器展示核心景點(diǎn),為了實(shí)現(xiàn)在Activity中播放核心景點(diǎn)視頻的功能,需要?jiǎng)?chuàng)建一個(gè)類,在類中添加VideoView控件,編寫(xiě)視頻的播放、停止、暫停方法,并為按鈕綁定這些方法的監(jiān)聽(tīng).視頻播放只能展示核心景點(diǎn)大體的情況,為了能對(duì)核心景點(diǎn)做更詳細(xì)的展示,在“靜態(tài)美景”按鈕上綁定OnClickListener監(jiān)聽(tīng),點(diǎn)擊之后通過(guò)Intent方法切換到含有ImageView控件的Activity界面,通過(guò)ImageView控件就可以更細(xì)致地展示核心景點(diǎn)的景色.

    為實(shí)現(xiàn)html文件和數(shù)據(jù)庫(kù)的交互,首先要用SQLiteDatabase和SQLiteOpenHelper實(shí)現(xiàn)數(shù)據(jù)庫(kù)的創(chuàng)建、打開(kāi)、查詢和刪減等功能,然后在Android中創(chuàng)建ReadDbInterface類來(lái)獲取數(shù)據(jù)庫(kù)中的數(shù)據(jù)并通過(guò)為WebView添加接口的方式為html文件傳遞數(shù)據(jù).

    1.3.3 基于SQLite的數(shù)據(jù)庫(kù)管理

    SQLite是專為嵌入式開(kāi)發(fā)設(shè)計(jì)的數(shù)據(jù)庫(kù),因而選擇SQLite為本次開(kāi)發(fā)提供數(shù)據(jù)支撐.SQLite引擎不是程序與之通信的獨(dú)立進(jìn)程,而是要連接到程序中成為它的一個(gè)主要部分.所以主要的通信協(xié)議是在編程語(yǔ)言內(nèi)直接調(diào)用API.對(duì)數(shù)據(jù)庫(kù)的操作首先需要根據(jù)應(yīng)用設(shè)計(jì)出合適的表格,并在表中建立字段和相應(yīng)的類型,如系統(tǒng)中建立了INTEGER、REAL和TEXT類型的數(shù)據(jù).在數(shù)據(jù)庫(kù)創(chuàng)建完成之后用服務(wù)層中的方法對(duì)其進(jìn)行各種操作.

    2 系統(tǒng)實(shí)現(xiàn)

    以嘉庚公園為對(duì)象檢驗(yàn)本文所提出方案的效果.系統(tǒng)主界面和景點(diǎn)介紹頁(yè)面如圖6、圖7所示.在圖6中可以看見(jiàn)主要景點(diǎn)圖層,點(diǎn)擊后彈出如圖7所示的帶有flash、文字和聲音三重呈現(xiàn)的景點(diǎn)介紹.并且可以為游客提供路標(biāo)和線路定位和引導(dǎo).在嘉庚紀(jì)念館頁(yè)面中有核心景點(diǎn)視頻呈現(xiàn)、靜態(tài)圖片呈現(xiàn)以及站點(diǎn)電話查詢功能,如圖8所示.點(diǎn)擊“靜態(tài)美景”按鈕,即可通過(guò)圖片展示此處的核心景點(diǎn);點(diǎn)擊“動(dòng)態(tài)視頻”可以通過(guò)視頻和文字全方位了解景點(diǎn);“服務(wù)查詢”顯示各種服務(wù)電話及站點(diǎn)詳情,及時(shí)地給游客提供幫助.

    圖6 系統(tǒng)主界面Fig.6 Main interface of system

    3 結(jié)束語(yǔ)

    本系統(tǒng)開(kāi)發(fā)之后在以Android為操作系統(tǒng)的平板電腦和手機(jī)上運(yùn)行情況良好,運(yùn)行速度也比較快,各個(gè)功能都能較好實(shí)現(xiàn),沒(méi)有出現(xiàn)卡殼或者系統(tǒng)崩潰的情況.但是在硬件配置比較低的終端上還是會(huì)出現(xiàn)停頓和卡的情況.SQLite數(shù)據(jù)庫(kù)的使用,為系統(tǒng)的數(shù)據(jù)更新和維護(hù)提供了方便.

    圖7 景點(diǎn)詳情介紹Fig.7 Introduction of attractions details

    圖8 核心景點(diǎn)介紹Fig.8 Core attractions introduction

    筆者認(rèn)為代碼和設(shè)計(jì)的框架還有優(yōu)化的空間,以后會(huì)進(jìn)一步的研究和探索.屆時(shí)游客不僅可以用景區(qū)提供的安裝有該系統(tǒng)的電子產(chǎn)品來(lái)導(dǎo)覽,也可去景區(qū)網(wǎng)站下載該系統(tǒng)到手機(jī)上來(lái)幫助導(dǎo)覽.系統(tǒng)應(yīng)用開(kāi)源的Android和Openlayers來(lái)進(jìn)行開(kāi)發(fā),整理了旅游景點(diǎn)信息以及旅游配套資源,將旅游信息系統(tǒng)與空間信息技術(shù)相結(jié)合,建立了旅游景點(diǎn)信息以及旅游配套資源信息的基本信息數(shù)據(jù)庫(kù),降低了成本,提高了開(kāi)發(fā)效率,旅游導(dǎo)覽系統(tǒng)特別適合中小型景區(qū)的開(kāi)發(fā).

    [1]杜鑫,侯風(fēng)波,何海闊,等.基于Android的旅游信息系統(tǒng)的研究與應(yīng)用 [J].華章,2012(19):310.

    [2]王曉蘭.Android的自助導(dǎo)游系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2013:3.

    [3]袁瑩,陳木盛,陳曉強(qiáng),等.基于Openlayers的校園地理信息系統(tǒng)研究與實(shí)現(xiàn) [J].廈門(mén)理工學(xué)院學(xué)報(bào),2011,19(1):34-38.

    [4]李黎黎,吳德奎.基于OpenLayers的旅游地圖方案研究 [J].現(xiàn)代測(cè)繪,2008,31(5):47-48.

    [5]龍?jiān)疲瑮钇?Openlayers開(kāi)發(fā)綜述 [J].科技信息,2013(1):104.

    [6]黃夢(mèng)龍.瓦片地圖技術(shù)在桌面端GIS中的應(yīng)用 [J].地理空間信息,2011,9(4):149-150.

    [7]李剛.瘋狂Android講義 [M].北京:電子工業(yè)出版社,2011:146-163.

    [8]高進(jìn).基于MapServer的電子海圖服務(wù)系統(tǒng)研究 [D].大連:大連海事大學(xué),2013:48-49.

    [9]李光師.基于OpenLayers和AJAX的WebGIS客戶端開(kāi)發(fā) [J].鞍山師范學(xué)院學(xué)報(bào),2010,12(4):49-51.

    猜你喜歡
    瓦片控件圖層
    一種基于主題時(shí)空價(jià)值的服務(wù)器端瓦片緩存算法
    慣性
    關(guān)于.net控件數(shù)組的探討
    軟件(2018年7期)2018-08-13 09:44:42
    巧用混合圖層 制作抽象動(dòng)感森林
    圖層法在地理區(qū)域圖讀圖中的應(yīng)用
    淺析“遞層優(yōu)化法”在礦井制圖中的應(yīng)用
    河南科技(2014年6期)2014-04-04 08:00:42
    基于NoSQL數(shù)據(jù)庫(kù)的瓦片地圖服務(wù)
    Photoshop圖層的解讀
    就這樣玩會(huì)VBA中常見(jiàn)的自定義控件
    電腦迷(2012年24期)2012-04-29 00:44:03
    在PowerBuUder中利用WinSock控件制作簡(jiǎn)單的Web服務(wù)器
    连平县| 美姑县| 通许县| 西和县| 克什克腾旗| 新兴县| 沈阳市| 双峰县| 专栏| 图们市| 孝义市| 孝昌县| 米脂县| 宣化县| 通山县| 青海省| 晋中市| 新乡市| 赫章县| 桑植县| 留坝县| 和平区| 林口县| 进贤县| 淅川县| 佛坪县| 葫芦岛市| 磐安县| 泰来县| 辽宁省| 临清市| 龙岩市| 杨浦区| 通化市| 和林格尔县| 榕江县| 娄底市| 黄梅县| 普宁市| 汝阳县| 淄博市|